-r--r--r-- 23465 lib1305-20250407/doc/html/speed.html raw
<html> <head> <meta http-equiv="content-type" content="text/html; charset=utf-8"> <meta name="viewport" content="width=device-width, initial-scale=1"> <style type="text/css"> html{overflow-y:scroll;background-color:#013050} body{font-family:"Noto Sans","Droid Sans","DejaVu Sans","Arial",sans-serif;line-height:1.5} tt,code{background-color:#f0f0f0;font-family:"Noto Sans Mono","Droid Sans Mono","DejaVu Sans Mono","Courier New",monospace,sans-serif;font-size:1em;} pre{margin-left:3em} p,ul,ol,blockquote,pre{font-size:1.0em;line-height:1.6} li p{font-size:1.0em} blockquote p{font-size:1.0em} h1{font-size:1.5em} h2{font-size:1.3em} h3{font-size:1.0em} h1 a{text-decoration:none} table{border-collapse:collapse} th,td{border:1px solid black} table a{text-decoration:none} table tr{font-size:1.0em;line-height:1.6em} table tr{font-size:1.0em;line-height:1.5} tbody tr:nth-child(20n+1){background-color:#f0ffff} tbody tr:nth-child(20n+2){background-color:#f0ffff} tbody tr:nth-child(20n+3){background-color:#f0ffff} tbody tr:nth-child(20n+4){background-color:#f0ffff} tbody tr:nth-child(20n+5){background-color:#f0ffff} tbody tr:nth-child(20n+6){background-color:#f0ffff} tbody tr:nth-child(20n+7){background-color:#f0ffff} tbody tr:nth-child(20n+8){background-color:#f0ffff} tbody tr:nth-child(20n+9){background-color:#f0ffff} tbody tr:nth-child(20n+10){background-color:#f0ffff} tbody tr:nth-child(20n+11){background-color:#fffff0} tbody tr:nth-child(20n+12){background-color:#fffff0} tbody tr:nth-child(20n+13){background-color:#fffff0} tbody tr:nth-child(20n+14){background-color:#fffff0} tbody tr:nth-child(20n+15){background-color:#fffff0} tbody tr:nth-child(20n+16){background-color:#fffff0} tbody tr:nth-child(20n+17){background-color:#fffff0} tbody tr:nth-child(20n+18){background-color:#fffff0} tbody tr:nth-child(20n+19){background-color:#fffff0} tbody tr:nth-child(20n+20){background-color:#fffff0} .headline{padding:0;font-weight:bold;font-size:1.0em;vertical-align:top;padding-bottom:0.5em;color:#ffffff;background-color:#013050} .navt{display:block;box-sizing:border-box;-moz-box-sizing:border-box;-webkit-box-sizing:border-box;margin:0;padding:0;vertical-align:center;font-size:1.0em} .here{background-color:#013050} .here{color:#ffffff} .away{background-color:#013050} .away a{text-decoration:none;display:block;color:#ffffff} .away a:hover,.away a:active{text-decoration:underline} .main{padding:5px} .main{background-color:#ffffff} .pagetitle{font-size:1.4em;font-weight:bold} @media only screen and (min-width:512px) { .fixed{margin:0;padding:0;width:160px;height:100%;position:fixed;overflow:auto} .main{margin-left:170px} } </style> <title> lib1305: Speed</title> </head> <body> <div class=fixed> <div class=headline> lib1305</div> <div class="navt away"><a href=index.html>Intro</a> </div><div class="navt away"><a href=download.html>Download</a> </div><div class="navt away"><a href=install.html>Install</a> </div><div class="navt away"><a href=test.html>Test</a> </div><div class="navt away"><a href=api.html>API</a> </div><div class="navt away"><a href=security.html>Security</a> </div><div class="navt here">Speed </div><div class="navt away"><a href=internals.html>Internals</a> </div><div class="navt away"><a href=people.html>People</a> </div><div class="navt away"><a href=license.html>License</a> </div></div> <div class=main> <div class=pagetitle>lib1305: Speed</div> <p>In the following speed table, the "bytes" column is the number of message bytes being authenticated. Numbers in columns after that are single-core cycles/byte on various microarchitectures (with overclocking disabled), so smaller numbers are better.</p> <p>The "auth q1", "iqm", and "q3" columns are first quartile, interquartile mean, and third quartile of many cycle-count measurements for message authentication divided by the number of message bytes. The "verify q1", "iqm", and "q3" columns are for verifying an authenticator. The "exp auth" and "exp verify" columns show separate measurements of lib1305 after an experimental pre-configuration <code>mv skipcompilers/* compilers</code> step (which is unsupported: it uses instructions not supported by <code>valgrind</code>).</p> <p>Each cycle count <em>includes</em> cycle-counting overhead. This overhead is typically around 40 cycles on Intel/AMD CPUs, accounting for about 4 cycles/byte for 11-byte messages, or about 0.3 cycles/byte for 139-byte messages.</p> <table> <thead> <tr> <th style="text-align: left;">μarch</th> <th style="text-align: right;">bytes</th> <th style="text-align: right;">auth q1</th> <th style="text-align: right;">iqm</th> <th style="text-align: right;">q3</th> <th style="text-align: right;">verify q1</th> <th style="text-align: right;">iqm</th> <th style="text-align: right;">q3</th> <th style="text-align: right;">exp auth q1</th> <th style="text-align: right;">iqm</th> <th style="text-align: right;">q3</th> <th style="text-align: right;">exp verify q1</th> <th style="text-align: right;">iqm</th> <th style="text-align: right;">q3</th> </tr> </thead> <tbody> <tr> <td style="text-align: left;">Zen 2 (2019)</td> <td style="text-align: right;">11</td> <td style="text-align: right;">9.545</td> <td style="text-align: right;">9.545</td> <td style="text-align: right;">9.545</td> <td style="text-align: right;">11.455</td> <td style="text-align: right;">11.597</td> <td style="text-align: right;">11.727</td> <td style="text-align: right;">9.545</td> <td style="text-align: right;">9.545</td> <td style="text-align: right;">9.545</td> <td style="text-align: right;">11.273</td> <td style="text-align: right;">11.585</td> <td style="text-align: right;">11.818</td> </tr> <tr> <td style="text-align: left;"></td> <td style="text-align: right;">26</td> <td style="text-align: right;">5.538</td> <td style="text-align: right;">5.538</td> <td style="text-align: right;">5.538</td> <td style="text-align: right;">5.808</td> <td style="text-align: right;">5.808</td> <td style="text-align: right;">5.808</td> <td style="text-align: right;">5.615</td> <td style="text-align: right;">5.615</td> <td style="text-align: right;">5.615</td> <td style="text-align: right;">5.808</td> <td style="text-align: right;">5.808</td> <td style="text-align: right;">5.808</td> </tr> <tr> <td style="text-align: left;"></td> <td style="text-align: right;">61</td> <td style="text-align: right;">3.656</td> <td style="text-align: right;">3.656</td> <td style="text-align: right;">3.656</td> <td style="text-align: right;">3.754</td> <td style="text-align: right;">3.819</td> <td style="text-align: right;">3.869</td> <td style="text-align: right;">3.656</td> <td style="text-align: right;">3.656</td> <td style="text-align: right;">3.656</td> <td style="text-align: right;">3.787</td> <td style="text-align: right;">3.787</td> <td style="text-align: right;">3.787</td> </tr> <tr> <td style="text-align: left;"></td> <td style="text-align: right;">139</td> <td style="text-align: right;">2.871</td> <td style="text-align: right;">2.871</td> <td style="text-align: right;">2.871</td> <td style="text-align: right;">2.978</td> <td style="text-align: right;">2.978</td> <td style="text-align: right;">2.978</td> <td style="text-align: right;">2.906</td> <td style="text-align: right;">2.906</td> <td style="text-align: right;">2.906</td> <td style="text-align: right;">2.986</td> <td style="text-align: right;">2.986</td> <td style="text-align: right;">2.986</td> </tr> <tr> <td style="text-align: left;"></td> <td style="text-align: right;">314</td> <td style="text-align: right;">2.420</td> <td style="text-align: right;">2.420</td> <td style="text-align: right;">2.420</td> <td style="text-align: right;">2.411</td> <td style="text-align: right;">2.411</td> <td style="text-align: right;">2.411</td> <td style="text-align: right;">2.424</td> <td style="text-align: right;">2.424</td> <td style="text-align: right;">2.424</td> <td style="text-align: right;">2.424</td> <td style="text-align: right;">2.433</td> <td style="text-align: right;">2.439</td> </tr> <tr> <td style="text-align: left;"></td> <td style="text-align: right;">709</td> <td style="text-align: right;">1.477</td> <td style="text-align: right;">1.477</td> <td style="text-align: right;">1.477</td> <td style="text-align: right;">1.482</td> <td style="text-align: right;">1.482</td> <td style="text-align: right;">1.482</td> <td style="text-align: right;">1.450</td> <td style="text-align: right;">1.450</td> <td style="text-align: right;">1.450</td> <td style="text-align: right;">1.474</td> <td style="text-align: right;">1.474</td> <td style="text-align: right;">1.474</td> </tr> <tr> <td style="text-align: left;"></td> <td style="text-align: right;">1597</td> <td style="text-align: right;">1.021</td> <td style="text-align: right;">1.021</td> <td style="text-align: right;">1.021</td> <td style="text-align: right;">1.039</td> <td style="text-align: right;">1.039</td> <td style="text-align: right;">1.039</td> <td style="text-align: right;">1.036</td> <td style="text-align: right;">1.036</td> <td style="text-align: right;">1.036</td> <td style="text-align: right;">1.056</td> <td style="text-align: right;">1.056</td> <td style="text-align: right;">1.056</td> </tr> <tr> <td style="text-align: left;"></td> <td style="text-align: right;">3595</td> <td style="text-align: right;">0.843</td> <td style="text-align: right;">0.843</td> <td style="text-align: right;">0.843</td> <td style="text-align: right;">0.860</td> <td style="text-align: right;">0.860</td> <td style="text-align: right;">0.860</td> <td style="text-align: right;">0.845</td> <td style="text-align: right;">0.845</td> <td style="text-align: right;">0.845</td> <td style="text-align: right;">0.855</td> <td style="text-align: right;">0.855</td> <td style="text-align: right;">0.855</td> </tr> <tr> <td style="text-align: left;"></td> <td style="text-align: right;">8090</td> <td style="text-align: right;">0.765</td> <td style="text-align: right;">0.765</td> <td style="text-align: right;">0.765</td> <td style="text-align: right;">0.765</td> <td style="text-align: right;">0.765</td> <td style="text-align: right;">0.765</td> <td style="text-align: right;">0.766</td> <td style="text-align: right;">0.766</td> <td style="text-align: right;">0.766</td> <td style="text-align: right;">0.767</td> <td style="text-align: right;">0.767</td> <td style="text-align: right;">0.767</td> </tr> <tr> <td style="text-align: left;"></td> <td style="text-align: right;">18205</td> <td style="text-align: right;">0.729</td> <td style="text-align: right;">0.729</td> <td style="text-align: right;">0.729</td> <td style="text-align: right;">0.729</td> <td style="text-align: right;">0.729</td> <td style="text-align: right;">0.729</td> <td style="text-align: right;">0.728</td> <td style="text-align: right;">0.728</td> <td style="text-align: right;">0.728</td> <td style="text-align: right;">0.728</td> <td style="text-align: right;">0.728</td> <td style="text-align: right;">0.728</td> </tr> <tr> <td style="text-align: left;">Skylake (2015)</td> <td style="text-align: right;">11</td> <td style="text-align: right;">11.273</td> <td style="text-align: right;">11.375</td> <td style="text-align: right;">11.455</td> <td style="text-align: right;">14.091</td> <td style="text-align: right;">14.159</td> <td style="text-align: right;">14.182</td> <td style="text-align: right;">11.364</td> <td style="text-align: right;">11.494</td> <td style="text-align: right;">11.545</td> <td style="text-align: right;">14.273</td> <td style="text-align: right;">14.278</td> <td style="text-align: right;">14.364</td> </tr> <tr> <td style="text-align: left;"></td> <td style="text-align: right;">26</td> <td style="text-align: right;">5.615</td> <td style="text-align: right;">5.627</td> <td style="text-align: right;">5.654</td> <td style="text-align: right;">6.731</td> <td style="text-align: right;">6.769</td> <td style="text-align: right;">6.846</td> <td style="text-align: right;">5.615</td> <td style="text-align: right;">5.627</td> <td style="text-align: right;">5.654</td> <td style="text-align: right;">6.731</td> <td style="text-align: right;">6.800</td> <td style="text-align: right;">6.846</td> </tr> <tr> <td style="text-align: left;"></td> <td style="text-align: right;">61</td> <td style="text-align: right;">3.574</td> <td style="text-align: right;">3.701</td> <td style="text-align: right;">3.836</td> <td style="text-align: right;">4.148</td> <td style="text-align: right;">4.202</td> <td style="text-align: right;">4.254</td> <td style="text-align: right;">3.500</td> <td style="text-align: right;">3.621</td> <td style="text-align: right;">3.893</td> <td style="text-align: right;">4.115</td> <td style="text-align: right;">4.192</td> <td style="text-align: right;">4.246</td> </tr> <tr> <td style="text-align: left;"></td> <td style="text-align: right;">139</td> <td style="text-align: right;">2.878</td> <td style="text-align: right;">2.920</td> <td style="text-align: right;">2.957</td> <td style="text-align: right;">3.147</td> <td style="text-align: right;">3.167</td> <td style="text-align: right;">3.205</td> <td style="text-align: right;">2.820</td> <td style="text-align: right;">2.874</td> <td style="text-align: right;">2.924</td> <td style="text-align: right;">3.122</td> <td style="text-align: right;">3.140</td> <td style="text-align: right;">3.169</td> </tr> <tr> <td style="text-align: left;"></td> <td style="text-align: right;">314</td> <td style="text-align: right;">1.718</td> <td style="text-align: right;">1.738</td> <td style="text-align: right;">1.753</td> <td style="text-align: right;">1.828</td> <td style="text-align: right;">1.837</td> <td style="text-align: right;">1.849</td> <td style="text-align: right;">1.670</td> <td style="text-align: right;">1.683</td> <td style="text-align: right;">1.691</td> <td style="text-align: right;">1.814</td> <td style="text-align: right;">1.827</td> <td style="text-align: right;">1.834</td> </tr> <tr> <td style="text-align: left;"></td> <td style="text-align: right;">709</td> <td style="text-align: right;">1.195</td> <td style="text-align: right;">1.210</td> <td style="text-align: right;">1.227</td> <td style="text-align: right;">1.244</td> <td style="text-align: right;">1.254</td> <td style="text-align: right;">1.262</td> <td style="text-align: right;">1.193</td> <td style="text-align: right;">1.206</td> <td style="text-align: right;">1.216</td> <td style="text-align: right;">1.244</td> <td style="text-align: right;">1.250</td> <td style="text-align: right;">1.259</td> </tr> <tr> <td style="text-align: left;"></td> <td style="text-align: right;">1597</td> <td style="text-align: right;">0.961</td> <td style="text-align: right;">0.965</td> <td style="text-align: right;">0.970</td> <td style="text-align: right;">0.983</td> <td style="text-align: right;">0.988</td> <td style="text-align: right;">0.993</td> <td style="text-align: right;">0.959</td> <td style="text-align: right;">0.965</td> <td style="text-align: right;">0.972</td> <td style="text-align: right;">0.982</td> <td style="text-align: right;">0.986</td> <td style="text-align: right;">0.990</td> </tr> <tr> <td style="text-align: left;"></td> <td style="text-align: right;">3595</td> <td style="text-align: right;">0.862</td> <td style="text-align: right;">0.865</td> <td style="text-align: right;">0.868</td> <td style="text-align: right;">0.872</td> <td style="text-align: right;">0.875</td> <td style="text-align: right;">0.877</td> <td style="text-align: right;">0.862</td> <td style="text-align: right;">0.865</td> <td style="text-align: right;">0.871</td> <td style="text-align: right;">0.871</td> <td style="text-align: right;">0.874</td> <td style="text-align: right;">0.877</td> </tr> <tr> <td style="text-align: left;"></td> <td style="text-align: right;">8090</td> <td style="text-align: right;">0.819</td> <td style="text-align: right;">0.820</td> <td style="text-align: right;">0.823</td> <td style="text-align: right;">0.821</td> <td style="text-align: right;">0.824</td> <td style="text-align: right;">0.827</td> <td style="text-align: right;">0.816</td> <td style="text-align: right;">0.820</td> <td style="text-align: right;">0.822</td> <td style="text-align: right;">0.821</td> <td style="text-align: right;">0.822</td> <td style="text-align: right;">0.824</td> </tr> <tr> <td style="text-align: left;"></td> <td style="text-align: right;">18205</td> <td style="text-align: right;">0.798</td> <td style="text-align: right;">0.799</td> <td style="text-align: right;">0.801</td> <td style="text-align: right;">0.798</td> <td style="text-align: right;">0.800</td> <td style="text-align: right;">0.802</td> <td style="text-align: right;">0.799</td> <td style="text-align: right;">0.801</td> <td style="text-align: right;">0.803</td> <td style="text-align: right;">0.797</td> <td style="text-align: right;">0.799</td> <td style="text-align: right;">0.800</td> </tr> <tr> <td style="text-align: left;">Core 2 (2006)</td> <td style="text-align: right;">11</td> <td style="text-align: right;">16.545</td> <td style="text-align: right;">16.545</td> <td style="text-align: right;">16.545</td> <td style="text-align: right;">19.182</td> <td style="text-align: right;">19.261</td> <td style="text-align: right;">19.364</td> <td style="text-align: right;">16.545</td> <td style="text-align: right;">16.545</td> <td style="text-align: right;">16.545</td> <td style="text-align: right;">19.273</td> <td style="text-align: right;">19.273</td> <td style="text-align: right;">19.273</td> </tr> <tr> <td style="text-align: left;"></td> <td style="text-align: right;">26</td> <td style="text-align: right;">9.500</td> <td style="text-align: right;">9.500</td> <td style="text-align: right;">9.500</td> <td style="text-align: right;">10.654</td> <td style="text-align: right;">10.654</td> <td style="text-align: right;">10.654</td> <td style="text-align: right;">9.769</td> <td style="text-align: right;">9.769</td> <td style="text-align: right;">9.769</td> <td style="text-align: right;">10.808</td> <td style="text-align: right;">10.808</td> <td style="text-align: right;">10.808</td> </tr> <tr> <td style="text-align: left;"></td> <td style="text-align: right;">61</td> <td style="text-align: right;">7.902</td> <td style="text-align: right;">7.902</td> <td style="text-align: right;">7.902</td> <td style="text-align: right;">8.525</td> <td style="text-align: right;">8.590</td> <td style="text-align: right;">8.656</td> <td style="text-align: right;">7.902</td> <td style="text-align: right;">7.902</td> <td style="text-align: right;">7.902</td> <td style="text-align: right;">8.525</td> <td style="text-align: right;">8.598</td> <td style="text-align: right;">8.656</td> </tr> <tr> <td style="text-align: left;"></td> <td style="text-align: right;">139</td> <td style="text-align: right;">6.763</td> <td style="text-align: right;">6.790</td> <td style="text-align: right;">6.813</td> <td style="text-align: right;">7.122</td> <td style="text-align: right;">7.128</td> <td style="text-align: right;">7.144</td> <td style="text-align: right;">6.813</td> <td style="text-align: right;">6.849</td> <td style="text-align: right;">6.878</td> <td style="text-align: right;">7.086</td> <td style="text-align: right;">7.128</td> <td style="text-align: right;">7.173</td> </tr> <tr> <td style="text-align: left;"></td> <td style="text-align: right;">314</td> <td style="text-align: right;">6.156</td> <td style="text-align: right;">6.169</td> <td style="text-align: right;">6.178</td> <td style="text-align: right;">6.194</td> <td style="text-align: right;">6.198</td> <td style="text-align: right;">6.201</td> <td style="text-align: right;">6.121</td> <td style="text-align: right;">6.146</td> <td style="text-align: right;">6.178</td> <td style="text-align: right;">6.191</td> <td style="text-align: right;">6.195</td> <td style="text-align: right;">6.197</td> </tr> <tr> <td style="text-align: left;"></td> <td style="text-align: right;">709</td> <td style="text-align: right;">4.276</td> <td style="text-align: right;">4.300</td> <td style="text-align: right;">4.323</td> <td style="text-align: right;">4.360</td> <td style="text-align: right;">4.362</td> <td style="text-align: right;">4.362</td> <td style="text-align: right;">4.289</td> <td style="text-align: right;">4.304</td> <td style="text-align: right;">4.323</td> <td style="text-align: right;">4.358</td> <td style="text-align: right;">4.360</td> <td style="text-align: right;">4.361</td> </tr> <tr> <td style="text-align: left;"></td> <td style="text-align: right;">1597</td> <td style="text-align: right;">3.401</td> <td style="text-align: right;">3.413</td> <td style="text-align: right;">3.425</td> <td style="text-align: right;">3.425</td> <td style="text-align: right;">3.425</td> <td style="text-align: right;">3.425</td> <td style="text-align: right;">3.410</td> <td style="text-align: right;">3.410</td> <td style="text-align: right;">3.411</td> <td style="text-align: right;">3.439</td> <td style="text-align: right;">3.439</td> <td style="text-align: right;">3.439</td> </tr> <tr> <td style="text-align: left;"></td> <td style="text-align: right;">3595</td> <td style="text-align: right;">3.000</td> <td style="text-align: right;">3.003</td> <td style="text-align: right;">3.007</td> <td style="text-align: right;">3.019</td> <td style="text-align: right;">3.019</td> <td style="text-align: right;">3.019</td> <td style="text-align: right;">3.010</td> <td style="text-align: right;">3.017</td> <td style="text-align: right;">3.021</td> <td style="text-align: right;">3.022</td> <td style="text-align: right;">3.022</td> <td style="text-align: right;">3.022</td> </tr> <tr> <td style="text-align: left;"></td> <td style="text-align: right;">8090</td> <td style="text-align: right;">2.833</td> <td style="text-align: right;">2.835</td> <td style="text-align: right;">2.836</td> <td style="text-align: right;">2.836</td> <td style="text-align: right;">2.839</td> <td style="text-align: right;">2.841</td> <td style="text-align: right;">2.838</td> <td style="text-align: right;">2.841</td> <td style="text-align: right;">2.842</td> <td style="text-align: right;">2.848</td> <td style="text-align: right;">2.848</td> <td style="text-align: right;">2.848</td> </tr> <tr> <td style="text-align: left;"></td> <td style="text-align: right;">18205</td> <td style="text-align: right;">2.768</td> <td style="text-align: right;">2.770</td> <td style="text-align: right;">2.771</td> <td style="text-align: right;">2.764</td> <td style="text-align: right;">2.764</td> <td style="text-align: right;">2.764</td> <td style="text-align: right;">2.763</td> <td style="text-align: right;">2.766</td> <td style="text-align: right;">2.773</td> <td style="text-align: right;">2.775</td> <td style="text-align: right;">2.775</td> <td style="text-align: right;">2.775</td> </tr> </tbody> </table> <p>Microarchitectures are listed in reverse chronological order of when they were introduced.</p> <p>In the lib1305 distribution, <code>command/lib1305-speed.c</code> measures lib1305; <code>benchmarks/*-*</code> is the output of <code>lib1305-speed</code> on various machines; and <code>autogen/md-speed</code> extracts the table from those measurements. See the full output files for differences between multiple measurements and the interquartile mean.</p><hr><font size=1><b>Version:</b> This is version 2025.04.06 of the "Speed" web page. </font> </div> </body> </html>