Skip to content

Commit

Permalink
initial commit
Browse files Browse the repository at this point in the history
  • Loading branch information
ctz committed Sep 1, 2024
0 parents commit 666d1a8
Show file tree
Hide file tree
Showing 1,858 changed files with 142,978 additions and 0 deletions.
89 changes: 89 additions & 0 deletions admin/headlines.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,89 @@
#!/usr/bin/python

from os import path
import json
from io import StringIO

archs = "x86_64".split()
impls = "aws-lc-rs dalek ring graviola rustcrypto".split()
which = {
("rsa2048-pkcs1-sha256-verify",): {
"name": "RSA2048 signature verification",
"format": lambda v: "{:,g} sigs/sec".format(v),
},
("rsa2048-pkcs1-sha256-sign",): {
"name": "RSA2048 signing",
"format": lambda v: "{:,g} sigs/sec".format(v),
},
("x25519-ecdh",): {
"name": "X25519 key agreement",
"format": lambda v: "{:,g} kx/sec".format(v),
},
("aes256-gcm", "16KB"): {
"name": "AES256-GCM encryption (16KB wide)",
"format": lambda v: "%.03g GiB/sec" % (v * 16384 / (1024 * 1024 * 1024)),
},
}

results = []

for arch in sorted(archs):
for wkey, wdesc in sorted(which.items()):
if len(wkey) > 1:
wkey, wsize = wkey
else:
(wkey,) = wkey
wsize = None

for impl in sorted(impls):
filename = path.join(
"reports",
arch,
wkey,
impl,
wsize + "/new" if wsize else "new",
"estimates.json",
)
if not path.exists(filename):
continue
data = json.load(open(filename))
value = data["median"]["point_estimate"]

results.append((wdesc, arch, impl, value))

tree = {}
for desc, arch, impl, value in results:
time = value * 1e-9
rate = 1 / time
value = desc["format"](rate)
tree.setdefault(arch, {}).setdefault(desc["name"], {})[impl] = value

fragment = StringIO()
for arch, descs in sorted(tree.items()):
print("<h2>{}</h2>".format(arch), file=fragment)
for desc, impls in sorted(descs.items()):
print("<h3>{}</h3><table width='80%'><tr>".format(desc), file=fragment)

for impl in sorted(impls.keys()):
print("<th align='left'>{}</th>".format(impl), file=fragment)
print("</tr><tr>", file=fragment)

for impl in sorted(impls.keys()):
print("<td class='measure impl-{}'><big>{}</big></td>".format(impls[impl]), file=fragment)
print("</tr></table>", file=fragment)


html = open("index.html").readlines()
out = open("index.html.new", "w")

skipping = False
for line in html:
if not skipping:
out.write(line)

if line == "<!-- begin headlines -->\n":
skipping = True
out.write(fragment.getvalue())
if skipping and line == "<!-- end headlines -->\n":
skipping = False
out.write(line)
69 changes: 69 additions & 0 deletions index.html
Original file line number Diff line number Diff line change
@@ -0,0 +1,69 @@
<html>
<head>
<title>Graviola Benchmarking Results</title>
</head>
<body>
<h1>Graviola Benchmarking Results</h1>

<p>At the moment benchmarking is non-automated, and is run on two of my laptops. See <a href="#reports">below</a>.

<h2>Headlines</h2>

These categories are chosen as being typically used for TLS traffic on the web.

<!-- begin headlines -->
<h2>x86_64</h2>
<h3>AES256-GCM encryption (16KB wide)</h3><table width='80%'><tr>
<th align='left'>aws-lc-rs</th>
<th align='left'>graviola</th>
<th align='left'>ring</th>
<th align='left'>rustcrypto</th>
</tr><tr>
<td><big>10.6 GiB/sec</big></td>
<td><big>3.35 GiB/sec</big></td>
<td><big>5.2 GiB/sec</big></td>
<td><big>1.78 GiB/sec</big></td>
</tr></table>
<h3>RSA2048 signature verification</h3><table width='80%'><tr>
<th align='left'>aws-lc-rs</th>
<th align='left'>graviola</th>
<th align='left'>ring</th>
<th align='left'>rustcrypto</th>
</tr><tr>
<td><big>76,401 sigs/sec</big></td>
<td><big>82,028.8 sigs/sec</big></td>
<td><big>63,589 sigs/sec</big></td>
<td><big>7,339.84 sigs/sec</big></td>
</tr></table>
<h3>RSA2048 signing</h3><table width='80%'><tr>
<th align='left'>aws-lc-rs</th>
<th align='left'>graviola</th>
<th align='left'>ring</th>
<th align='left'>rustcrypto</th>
</tr><tr>
<td><big>2,297.85 sigs/sec</big></td>
<td><big>2,026.79 sigs/sec</big></td>
<td><big>2,359.52 sigs/sec</big></td>
<td><big>857.161 sigs/sec</big></td>
</tr></table>
<h3>X25519 key agreement</h3><table width='80%'><tr>
<th align='left'>aws-lc-rs</th>
<th align='left'>dalek</th>
<th align='left'>graviola</th>
<th align='left'>ring</th>
</tr><tr>
<td><big>42,610.5 kx/sec</big></td>
<td><big>19,948.8 kx/sec</big></td>
<td><big>42,061.3 kx/sec</big></td>
<td><big>19,457.1 kx/sec</big></td>
</tr></table>
<!-- end headlines -->

<h2 name="reports">Full reports</h2>
<ul>
<li> <a href="reports/x86_64/report/index.html">Framework 16 with AMD Ryzen 9 7940HS CPU</a>
<li> <a href="reports/aarch64/report/index.html">Macbook Pro M2 (2022)</a>
</ul>

</body>
</html>
162 changes: 162 additions & 0 deletions reports/x86_64/aes128-gcm/16KB/report/index.html
Original file line number Diff line number Diff line change
@@ -0,0 +1,162 @@
<!DOCTYPE html>
<html>

<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
<title>aes128-gcm/16KB Summary - Criterion.rs</title>
<style type="text/css">
body {
font: 14px Helvetica Neue;
text-rendering: optimizelegibility;
}

.body {
width: 960px;
margin: auto;
}

a:link {
color: #1F78B4;
text-decoration: none;
}

h2 {
font-size: 36px;
font-weight: 300;
}

h3 {
font-size: 24px;
font-weight: 300;
}

#footer {
height: 40px;
background: #888;
color: white;
font-size: larger;
font-weight: 300;
}

#footer a {
color: white;
text-decoration: underline;
}

#footer p {
text-align: center
}
</style>
</head>

<body>
<div class="body">
<h2>aes128-gcm/16KB</h2>
<h3>Violin Plot</h3>
<a href="violin.svg">
<img src="violin.svg" alt="Violin Plot" />
</a>
<p>This chart shows the relationship between function/parameter and iteration time. The thickness of the shaded
region indicates the probability that a measurement of the given function/parameter would take a particular
length of time.</p>
<section class="plots">
<a href="../../../aes128-gcm/ring/16KB/report/index.html">
<h4>aes128-gcm/ring/16KB</h4>
</a>
<table width="100%">
<tbody>
<tr>
<td>
<a href="../../../aes128-gcm/ring/16KB/report/pdf.svg">
<img src="../../../aes128-gcm/ring/16KB/report/pdf_small.svg" alt="PDF of Slope" width="450"
height="300" />
</a>
</td>
<td>
<a href="../../../aes128-gcm/ring/16KB/report/regression.svg">
<img src="../../../aes128-gcm/ring/16KB/report/regression_small.svg" alt="Regression" width="450"
height="300" />
</a>
</td>
</tr>
</tbody>
</table>
</section>
<section class="plots">
<a href="../../../aes128-gcm/aws-lc-rs/16KB/report/index.html">
<h4>aes128-gcm/aws-lc-rs/16KB</h4>
</a>
<table width="100%">
<tbody>
<tr>
<td>
<a href="../../../aes128-gcm/aws-lc-rs/16KB/report/pdf.svg">
<img src="../../../aes128-gcm/aws-lc-rs/16KB/report/pdf_small.svg" alt="PDF of Slope" width="450"
height="300" />
</a>
</td>
<td>
<a href="../../../aes128-gcm/aws-lc-rs/16KB/report/regression.svg">
<img src="../../../aes128-gcm/aws-lc-rs/16KB/report/regression_small.svg" alt="Regression" width="450"
height="300" />
</a>
</td>
</tr>
</tbody>
</table>
</section>
<section class="plots">
<a href="../../../aes128-gcm/rustcrypto/16KB/report/index.html">
<h4>aes128-gcm/rustcrypto/16KB</h4>
</a>
<table width="100%">
<tbody>
<tr>
<td>
<a href="../../../aes128-gcm/rustcrypto/16KB/report/pdf.svg">
<img src="../../../aes128-gcm/rustcrypto/16KB/report/pdf_small.svg" alt="PDF of Slope" width="450"
height="300" />
</a>
</td>
<td>
<a href="../../../aes128-gcm/rustcrypto/16KB/report/regression.svg">
<img src="../../../aes128-gcm/rustcrypto/16KB/report/regression_small.svg" alt="Regression" width="450"
height="300" />
</a>
</td>
</tr>
</tbody>
</table>
</section>
<section class="plots">
<a href="../../../aes128-gcm/graviola/16KB/report/index.html">
<h4>aes128-gcm/graviola/16KB</h4>
</a>
<table width="100%">
<tbody>
<tr>
<td>
<a href="../../../aes128-gcm/graviola/16KB/report/pdf.svg">
<img src="../../../aes128-gcm/graviola/16KB/report/pdf_small.svg" alt="PDF of Slope" width="450"
height="300" />
</a>
</td>
<td>
<a href="../../../aes128-gcm/graviola/16KB/report/regression.svg">
<img src="../../../aes128-gcm/graviola/16KB/report/regression_small.svg" alt="Regression" width="450"
height="300" />
</a>
</td>
</tr>
</tbody>
</table>
</section>
</div>
<div id="footer">
<p>This report was generated by
<a href="https://github.com/bheisler/criterion.rs">Criterion.rs</a>, a statistics-driven benchmarking
library in Rust.</p>
</div>
</body>

</html>
Loading

0 comments on commit 666d1a8

Please sign in to comment.