% ======================================================================
% ======================================================================
\chapter{Performance results}
% ======================================================================
% ======================================================================

\section{Machine setup}

\begin{figure}
\begin{center}
\begin{tabular}{| l | r | l | r |}
\hline
Architecture		& x86\_64 			& NUMA node(s) 	& 8 \\
\hline
CPU op-mode(s)		& 32-bit, 64-bit 		& Model name 	& AMD Opteron\texttrademark  Processor 6380 \\
\hline
Byte Order			& Little Endian 		& CPU Freq 		& 2.5\si{\giga\hertz} \\
\hline
CPU(s)			& 64 				& L1d cache 	& \SI{16}{\kibi\byte} \\
\hline
Thread(s) per core	& 2 				& L1i cache 	& \SI{64}{\kibi\byte} \\
\hline
Core(s) per socket	& 8 				& L2 cache 		& \SI{2048}{\kibi\byte} \\
\hline
Socket(s)			& 4 				& L3 cache 		& \SI{6144}{\kibi\byte} \\
\hline
\hline
Operating system		& Ubuntu 16.04.3 LTS	& Kernel		& Linux 4.4.0-97-generic \\
\hline
Compiler			& gcc 6.3.0 		& Translator	& CFA 1.0.0 \\
\hline
\end{tabular}
\end{center}
\caption{Machine setup used for the tests}
\label{tab:machine}
\end{figure}

\section{Micro benchmarks}

\begin{figure}
\begin{center}
\begin{tabular}{| l | S[table-format=5.2,table-number-alignment=right] | S[table-format=5.2,table-number-alignment=right] | S[table-format=5.2,table-number-alignment=right] |}
\cline{2-4}
\multicolumn{1}{c |}{} & \multicolumn{1}{c |}{ Median } &\multicolumn{1}{c |}{ Average } & \multicolumn{1}{c |}{ Standard Deviation} \\
\hline
Kernel Threads		& 239		& 242.57	& 5.54 \\
\CFA Coroutines		& 38		& 38		& 0    \\
\CFA Threads		& 102		& 102.39	& 1.57 \\
\uC Coroutines		& 46		& 46.68	& 0.47 \\
\uC Threads			& 98		& 99.39	& 1.52 \\
\hline
\end{tabular}
\end{center}
\caption{Context Switch comparaison. All numbers are in nanoseconds(\si{\nano\second})}
\label{tab:ctx-switch}
\end{figure}

\begin{figure}
\begin{center}
\begin{tabular}{| l | S[table-format=5.2,table-number-alignment=right] | S[table-format=5.2,table-number-alignment=right] | S[table-format=5.2,table-number-alignment=right] |}
\cline{2-4}
\multicolumn{1}{c |}{} & \multicolumn{1}{c |}{ Median } &\multicolumn{1}{c |}{ Average } & \multicolumn{1}{c |}{ Standard Deviation} \\
\hline
C routine						& 2		& 2		& 0      \\
Pthreads Mutex Lock				& 31		& 31.86	& 0.99   \\
\uC \code{monitor} member routine		& 30		& 30		& 0      \\
\CFA \code{mutex} routine, 1 argument	& 46		& 46.14	& 0.74   \\
\CFA \code{mutex} routine, 2 argument	& 82		& 83		& 1.93   \\
\CFA \code{mutex} routine, 4 argument	& 165		& 161.15	& 54.04  \\
\hline
\end{tabular}
\end{center}
\caption{Mutex routine comparaison. All numbers are in nanoseconds(\si{\nano\second})}
\label{tab:mutex}
\end{figure}

\begin{figure}
\begin{center}
\begin{tabular}{| l | S[table-format=5.2,table-number-alignment=right] | S[table-format=5.2,table-number-alignment=right] | S[table-format=5.2,table-number-alignment=right] |}
\cline{2-4}
\multicolumn{1}{c |}{} & \multicolumn{1}{c |}{ Median } &\multicolumn{1}{c |}{ Average } & \multicolumn{1}{c |}{ Standard Deviation} \\
\hline
\uC \code{signal}					& 322		& 322.57	& 2.77  \\
\CFA \code{signal}, 1 \code{monitor}	& 1145	& 1163.64	& 27.52 \\
\CFA \code{signal}, 2 \code{monitor}	& 1531	& 1550.75	& 32.77 \\
\CFA \code{signal}, 4 \code{monitor}	& 2288.5	& 2326.86	& 54.73 \\
\hline
\end{tabular}
\end{center}
\caption{Internal scheduling comparaison. All numbers are in nanoseconds(\si{\nano\second})}
\label{tab:int-sched}
\end{figure}

\begin{figure}
\begin{center}
\begin{tabular}{| l | S[table-format=5.2,table-number-alignment=right] | S[table-format=5.2,table-number-alignment=right] | S[table-format=5.2,table-number-alignment=right] |}
\cline{2-4}
\multicolumn{1}{c |}{} & \multicolumn{1}{c |}{ Median } &\multicolumn{1}{c |}{ Average } & \multicolumn{1}{c |}{ Standard Deviation} \\
\hline
\uC \code{Accept}					& 349		& 339.32	& 3.14  \\
\CFA \code{waitfor}, 1 \code{monitor}	& 1155.5	& 1142.04	& 25.23 \\
\CFA \code{waitfor}, 2 \code{monitor}	& 1361	& 1376.75	& 28.81 \\
\CFA \code{waitfor}, 4 \code{monitor}	& 1941.5	& 1957.07	& 34.7  \\
\hline
\end{tabular}
\end{center}
\caption{External scheduling comparaison. All numbers are in nanoseconds(\si{\nano\second})}
\label{tab:ext-sched}
\end{figure}

\begin{figure}
\begin{center}
\begin{tabular}{| l | S[table-format=5.2,table-number-alignment=right] | S[table-format=5.2,table-number-alignment=right] | S[table-format=5.2,table-number-alignment=right] |}
\cline{2-4}
\multicolumn{1}{c |}{} & \multicolumn{1}{c |}{ Median } &\multicolumn{1}{c |}{ Average } & \multicolumn{1}{c |}{ Standard Deviation} \\
\hline
Pthreads		& 26974.5	& 26977	& 124.12 \\
\CFA Coroutines	& 5		& 5		& 0      \\
\CFA Threads	& 1122.5	& 1109.86	& 36.54  \\
\uC Coroutines	& 106		& 107.04	& 1.61   \\
\uC Threads		& 525.5	& 533.04	& 11.14  \\
\hline
\end{tabular}
\end{center}
\caption{Creation comparaison. All numbers are in nanoseconds(\si{\nano\second})}
\label{tab:creation}
\end{figure}
