move files

This commit is contained in:
2026-08-14 01:53:25 +03:00
parent 2b30d26a56
commit 7188ac6b4a
32 changed files with 0 additions and 0 deletions
@@ -0,0 +1,304 @@
<svg xmlns="http://www.w3.org/2000/svg" width="1100" height="2520" viewBox="0 0 1100 2520">
<style>
.title { font: 700 18px sans-serif; fill: #111; }
.label { font: 13px sans-serif; fill: #222; }
.tick { font: 11px sans-serif; fill: #555; }
.legend { font: 12px monospace; fill: #222; }
.axis { stroke: #333; stroke-width: 1.2; }
.grid { stroke: #ddd; stroke-width: 0.8; }
.plot-bg { fill: #fff; stroke: #bbb; stroke-width: 1; }
</style>
<rect width="100%" height="100%" fill="#fff" />
<g transform="translate(0,0)"><g class="chart">
<text x="550" y="22" text-anchor="middle" class="title">Random bytes: 10-bit truncated hash collision rate</text>
<rect x="72" y="42" width="878" height="320" class="plot-bg" />
<line x1="72.00" y1="42" x2="72.00" y2="362" class="grid" />
<text x="72.00" y="380" text-anchor="middle" class="tick">4</text>
<line x1="218.33" y1="42" x2="218.33" y2="362" class="grid" />
<text x="218.33" y="380" text-anchor="middle" class="tick">8</text>
<line x1="364.67" y1="42" x2="364.67" y2="362" class="grid" />
<text x="364.67" y="380" text-anchor="middle" class="tick">16</text>
<line x1="511.00" y1="42" x2="511.00" y2="362" class="grid" />
<text x="511.00" y="380" text-anchor="middle" class="tick">32</text>
<line x1="657.33" y1="42" x2="657.33" y2="362" class="grid" />
<text x="657.33" y="380" text-anchor="middle" class="tick">64</text>
<line x1="803.67" y1="42" x2="803.67" y2="362" class="grid" />
<text x="803.67" y="380" text-anchor="middle" class="tick">128</text>
<line x1="950.00" y1="42" x2="950.00" y2="362" class="grid" />
<text x="950.00" y="380" text-anchor="middle" class="tick">256</text>
<line x1="72" y1="362.00" x2="950" y2="362.00" class="grid" />
<text x="64" y="366.00" text-anchor="end" class="tick">0</text>
<line x1="72" y1="275.98" x2="950" y2="275.98" class="grid" />
<text x="64" y="279.98" text-anchor="end" class="tick">0.1</text>
<line x1="72" y1="189.96" x2="950" y2="189.96" class="grid" />
<text x="64" y="193.96" text-anchor="end" class="tick">0.2</text>
<line x1="72" y1="103.94" x2="950" y2="103.94" class="grid" />
<text x="64" y="107.94" text-anchor="end" class="tick">0.3</text>
<line x1="72" y1="362" x2="950" y2="362" class="axis" />
<line x1="72" y1="42" x2="72" y2="362" class="axis" />
<text x="511" y="406" text-anchor="middle" class="label">input length, bytes/chars (log scale)</text>
<text transform="translate(18,202) rotate(-90)" text-anchor="middle" class="label">median collision rate</text>
<polyline points="72.00,42.00 218.33,43.72 364.67,49.74 511.00,47.16 657.33,47.16 803.67,53.18 950.00,47.16" fill="none" stroke="#1f77b4" stroke-width="2" stroke-linejoin="round" stroke-linecap="round" /><circle cx="72.00" cy="42.00" r="3" fill="#1f77b4" /><circle cx="218.33" cy="43.72" r="3" fill="#1f77b4" /><circle cx="364.67" cy="49.74" r="3" fill="#1f77b4" /><circle cx="511.00" cy="47.16" r="3" fill="#1f77b4" /><circle cx="657.33" cy="47.16" r="3" fill="#1f77b4" /><circle cx="803.67" cy="53.18" r="3" fill="#1f77b4" /><circle cx="950.00" cy="47.16" r="3" fill="#1f77b4" />
<polyline points="72.00,51.46 218.33,53.18 364.67,48.02 511.00,50.60 657.33,61.78 803.67,48.88 950.00,52.32" fill="none" stroke="#ff7f0e" stroke-width="2" stroke-linejoin="round" stroke-linecap="round" /><circle cx="72.00" cy="51.46" r="3" fill="#ff7f0e" /><circle cx="218.33" cy="53.18" r="3" fill="#ff7f0e" /><circle cx="364.67" cy="48.02" r="3" fill="#ff7f0e" /><circle cx="511.00" cy="50.60" r="3" fill="#ff7f0e" /><circle cx="657.33" cy="61.78" r="3" fill="#ff7f0e" /><circle cx="803.67" cy="48.88" r="3" fill="#ff7f0e" /><circle cx="950.00" cy="52.32" r="3" fill="#ff7f0e" />
<polyline points="72.00,47.16 218.33,56.62 364.67,58.34 511.00,48.88 657.33,43.72 803.67,48.88 950.00,46.30" fill="none" stroke="#2ca02c" stroke-width="2" stroke-linejoin="round" stroke-linecap="round" /><circle cx="72.00" cy="47.16" r="3" fill="#2ca02c" /><circle cx="218.33" cy="56.62" r="3" fill="#2ca02c" /><circle cx="364.67" cy="58.34" r="3" fill="#2ca02c" /><circle cx="511.00" cy="48.88" r="3" fill="#2ca02c" /><circle cx="657.33" cy="43.72" r="3" fill="#2ca02c" /><circle cx="803.67" cy="48.88" r="3" fill="#2ca02c" /><circle cx="950.00" cy="46.30" r="3" fill="#2ca02c" />
<polyline points="72.00,54.04 218.33,49.74 364.67,60.06 511.00,52.32 657.33,57.48 803.67,55.76 950.00,54.04" fill="none" stroke="#d62728" stroke-width="2" stroke-linejoin="round" stroke-linecap="round" /><circle cx="72.00" cy="54.04" r="3" fill="#d62728" /><circle cx="218.33" cy="49.74" r="3" fill="#d62728" /><circle cx="364.67" cy="60.06" r="3" fill="#d62728" /><circle cx="511.00" cy="52.32" r="3" fill="#d62728" /><circle cx="657.33" cy="57.48" r="3" fill="#d62728" /><circle cx="803.67" cy="55.76" r="3" fill="#d62728" /><circle cx="950.00" cy="54.04" r="3" fill="#d62728" />
<polyline points="72.00,44.58 218.33,53.18 364.67,50.60 511.00,48.88 657.33,59.20 803.67,51.46 950.00,60.92" fill="none" stroke="#9467bd" stroke-width="2" stroke-linejoin="round" stroke-linecap="round" /><circle cx="72.00" cy="44.58" r="3" fill="#9467bd" /><circle cx="218.33" cy="53.18" r="3" fill="#9467bd" /><circle cx="364.67" cy="50.60" r="3" fill="#9467bd" /><circle cx="511.00" cy="48.88" r="3" fill="#9467bd" /><circle cx="657.33" cy="59.20" r="3" fill="#9467bd" /><circle cx="803.67" cy="51.46" r="3" fill="#9467bd" /><circle cx="950.00" cy="60.92" r="3" fill="#9467bd" />
<polyline points="72.00,51.46 218.33,48.88 364.67,48.88 511.00,48.02 657.33,52.32 803.67,49.74 950.00,55.76" fill="none" stroke="#8c564b" stroke-width="2" stroke-linejoin="round" stroke-linecap="round" /><circle cx="72.00" cy="51.46" r="3" fill="#8c564b" /><circle cx="218.33" cy="48.88" r="3" fill="#8c564b" /><circle cx="364.67" cy="48.88" r="3" fill="#8c564b" /><circle cx="511.00" cy="48.02" r="3" fill="#8c564b" /><circle cx="657.33" cy="52.32" r="3" fill="#8c564b" /><circle cx="803.67" cy="49.74" r="3" fill="#8c564b" /><circle cx="950.00" cy="55.76" r="3" fill="#8c564b" />
<rect x="976" y="48" width="12" height="12" fill="#1f77b4" />
<text x="994" y="58" class="legend">xxh32</text>
<rect x="976" y="66" width="12" height="12" fill="#ff7f0e" />
<text x="994" y="76" class="legend">xxh64</text>
<rect x="976" y="84" width="12" height="12" fill="#2ca02c" />
<text x="994" y="94" class="legend">xxh3_64</text>
<rect x="976" y="102" width="12" height="12" fill="#d62728" />
<text x="994" y="112" class="legend">city32</text>
<rect x="976" y="120" width="12" height="12" fill="#9467bd" />
<text x="994" y="130" class="legend">city64</text>
<rect x="976" y="138" width="12" height="12" fill="#8c564b" />
<text x="994" y="148" class="legend">joaat</text>
</g></g>
<g transform="translate(0,420)"><g class="chart">
<text x="550" y="22" text-anchor="middle" class="title">Random bytes: 12-bit truncated hash collision rate</text>
<rect x="72" y="42" width="878" height="320" class="plot-bg" />
<line x1="72.00" y1="42" x2="72.00" y2="362" class="grid" />
<text x="72.00" y="380" text-anchor="middle" class="tick">4</text>
<line x1="218.33" y1="42" x2="218.33" y2="362" class="grid" />
<text x="218.33" y="380" text-anchor="middle" class="tick">8</text>
<line x1="364.67" y1="42" x2="364.67" y2="362" class="grid" />
<text x="364.67" y="380" text-anchor="middle" class="tick">16</text>
<line x1="511.00" y1="42" x2="511.00" y2="362" class="grid" />
<text x="511.00" y="380" text-anchor="middle" class="tick">32</text>
<line x1="657.33" y1="42" x2="657.33" y2="362" class="grid" />
<text x="657.33" y="380" text-anchor="middle" class="tick">64</text>
<line x1="803.67" y1="42" x2="803.67" y2="362" class="grid" />
<text x="803.67" y="380" text-anchor="middle" class="tick">128</text>
<line x1="950.00" y1="42" x2="950.00" y2="362" class="grid" />
<text x="950.00" y="380" text-anchor="middle" class="tick">256</text>
<line x1="72" y1="362.00" x2="950" y2="362.00" class="grid" />
<text x="64" y="366.00" text-anchor="end" class="tick">0</text>
<line x1="72" y1="310.39" x2="950" y2="310.39" class="grid" />
<text x="64" y="314.39" text-anchor="end" class="tick">0.02</text>
<line x1="72" y1="258.77" x2="950" y2="258.77" class="grid" />
<text x="64" y="262.77" text-anchor="end" class="tick">0.04</text>
<line x1="72" y1="207.16" x2="950" y2="207.16" class="grid" />
<text x="64" y="211.16" text-anchor="end" class="tick">0.06</text>
<line x1="72" y1="155.55" x2="950" y2="155.55" class="grid" />
<text x="64" y="159.55" text-anchor="end" class="tick">0.08</text>
<line x1="72" y1="103.94" x2="950" y2="103.94" class="grid" />
<text x="64" y="107.94" text-anchor="end" class="tick">0.1</text>
<line x1="72" y1="52.32" x2="950" y2="52.32" class="grid" />
<text x="64" y="56.32" text-anchor="end" class="tick">0.12</text>
<line x1="72" y1="362" x2="950" y2="362" class="axis" />
<line x1="72" y1="42" x2="72" y2="362" class="axis" />
<text x="511" y="406" text-anchor="middle" class="label">input length, bytes/chars (log scale)</text>
<text transform="translate(18,202) rotate(-90)" text-anchor="middle" class="label">median collision rate</text>
<polyline points="72.00,49.74 218.33,88.45 364.67,80.71 511.00,62.65 657.33,54.90 803.67,72.97 950.00,72.97" fill="none" stroke="#1f77b4" stroke-width="2" stroke-linejoin="round" stroke-linecap="round" /><circle cx="72.00" cy="49.74" r="3" fill="#1f77b4" /><circle cx="218.33" cy="88.45" r="3" fill="#1f77b4" /><circle cx="364.67" cy="80.71" r="3" fill="#1f77b4" /><circle cx="511.00" cy="62.65" r="3" fill="#1f77b4" /><circle cx="657.33" cy="54.90" r="3" fill="#1f77b4" /><circle cx="803.67" cy="72.97" r="3" fill="#1f77b4" /><circle cx="950.00" cy="72.97" r="3" fill="#1f77b4" />
<polyline points="72.00,72.97 218.33,80.71 364.67,70.39 511.00,57.48 657.33,75.55 803.67,54.90 950.00,91.03" fill="none" stroke="#ff7f0e" stroke-width="2" stroke-linejoin="round" stroke-linecap="round" /><circle cx="72.00" cy="72.97" r="3" fill="#ff7f0e" /><circle cx="218.33" cy="80.71" r="3" fill="#ff7f0e" /><circle cx="364.67" cy="70.39" r="3" fill="#ff7f0e" /><circle cx="511.00" cy="57.48" r="3" fill="#ff7f0e" /><circle cx="657.33" cy="75.55" r="3" fill="#ff7f0e" /><circle cx="803.67" cy="54.90" r="3" fill="#ff7f0e" /><circle cx="950.00" cy="91.03" r="3" fill="#ff7f0e" />
<polyline points="72.00,49.74 218.33,78.13 364.67,85.87 511.00,83.29 657.33,67.81 803.67,72.97 950.00,57.48" fill="none" stroke="#2ca02c" stroke-width="2" stroke-linejoin="round" stroke-linecap="round" /><circle cx="72.00" cy="49.74" r="3" fill="#2ca02c" /><circle cx="218.33" cy="78.13" r="3" fill="#2ca02c" /><circle cx="364.67" cy="85.87" r="3" fill="#2ca02c" /><circle cx="511.00" cy="83.29" r="3" fill="#2ca02c" /><circle cx="657.33" cy="67.81" r="3" fill="#2ca02c" /><circle cx="803.67" cy="72.97" r="3" fill="#2ca02c" /><circle cx="950.00" cy="57.48" r="3" fill="#2ca02c" />
<polyline points="72.00,78.13 218.33,67.81 364.67,83.29 511.00,72.97 657.33,72.97 803.67,83.29 950.00,96.19" fill="none" stroke="#d62728" stroke-width="2" stroke-linejoin="round" stroke-linecap="round" /><circle cx="72.00" cy="78.13" r="3" fill="#d62728" /><circle cx="218.33" cy="67.81" r="3" fill="#d62728" /><circle cx="364.67" cy="83.29" r="3" fill="#d62728" /><circle cx="511.00" cy="72.97" r="3" fill="#d62728" /><circle cx="657.33" cy="72.97" r="3" fill="#d62728" /><circle cx="803.67" cy="83.29" r="3" fill="#d62728" /><circle cx="950.00" cy="96.19" r="3" fill="#d62728" />
<polyline points="72.00,75.55 218.33,54.90 364.67,103.94 511.00,70.39 657.33,75.55 803.67,52.32 950.00,103.94" fill="none" stroke="#9467bd" stroke-width="2" stroke-linejoin="round" stroke-linecap="round" /><circle cx="72.00" cy="75.55" r="3" fill="#9467bd" /><circle cx="218.33" cy="54.90" r="3" fill="#9467bd" /><circle cx="364.67" cy="103.94" r="3" fill="#9467bd" /><circle cx="511.00" cy="70.39" r="3" fill="#9467bd" /><circle cx="657.33" cy="75.55" r="3" fill="#9467bd" /><circle cx="803.67" cy="52.32" r="3" fill="#9467bd" /><circle cx="950.00" cy="103.94" r="3" fill="#9467bd" />
<polyline points="72.00,80.71 218.33,42.00 364.67,60.06 511.00,78.13 657.33,85.87 803.67,67.81 950.00,52.32" fill="none" stroke="#8c564b" stroke-width="2" stroke-linejoin="round" stroke-linecap="round" /><circle cx="72.00" cy="80.71" r="3" fill="#8c564b" /><circle cx="218.33" cy="42.00" r="3" fill="#8c564b" /><circle cx="364.67" cy="60.06" r="3" fill="#8c564b" /><circle cx="511.00" cy="78.13" r="3" fill="#8c564b" /><circle cx="657.33" cy="85.87" r="3" fill="#8c564b" /><circle cx="803.67" cy="67.81" r="3" fill="#8c564b" /><circle cx="950.00" cy="52.32" r="3" fill="#8c564b" />
<rect x="976" y="48" width="12" height="12" fill="#1f77b4" />
<text x="994" y="58" class="legend">xxh32</text>
<rect x="976" y="66" width="12" height="12" fill="#ff7f0e" />
<text x="994" y="76" class="legend">xxh64</text>
<rect x="976" y="84" width="12" height="12" fill="#2ca02c" />
<text x="994" y="94" class="legend">xxh3_64</text>
<rect x="976" y="102" width="12" height="12" fill="#d62728" />
<text x="994" y="112" class="legend">city32</text>
<rect x="976" y="120" width="12" height="12" fill="#9467bd" />
<text x="994" y="130" class="legend">city64</text>
<rect x="976" y="138" width="12" height="12" fill="#8c564b" />
<text x="994" y="148" class="legend">joaat</text>
</g></g>
<g transform="translate(0,840)"><g class="chart">
<text x="550" y="22" text-anchor="middle" class="title">Random bytes: 16-bit truncated hash collision rate</text>
<rect x="72" y="42" width="878" height="320" class="plot-bg" />
<line x1="72.00" y1="42" x2="72.00" y2="362" class="grid" />
<text x="72.00" y="380" text-anchor="middle" class="tick">4</text>
<line x1="218.33" y1="42" x2="218.33" y2="362" class="grid" />
<text x="218.33" y="380" text-anchor="middle" class="tick">8</text>
<line x1="364.67" y1="42" x2="364.67" y2="362" class="grid" />
<text x="364.67" y="380" text-anchor="middle" class="tick">16</text>
<line x1="511.00" y1="42" x2="511.00" y2="362" class="grid" />
<text x="511.00" y="380" text-anchor="middle" class="tick">32</text>
<line x1="657.33" y1="42" x2="657.33" y2="362" class="grid" />
<text x="657.33" y="380" text-anchor="middle" class="tick">64</text>
<line x1="803.67" y1="42" x2="803.67" y2="362" class="grid" />
<text x="803.67" y="380" text-anchor="middle" class="tick">128</text>
<line x1="950.00" y1="42" x2="950.00" y2="362" class="grid" />
<text x="950.00" y="380" text-anchor="middle" class="tick">256</text>
<line x1="72" y1="362.00" x2="950" y2="362.00" class="grid" />
<text x="64" y="366.00" text-anchor="end" class="tick">0</text>
<line x1="72" y1="308.67" x2="950" y2="308.67" class="grid" />
<text x="64" y="312.67" text-anchor="end" class="tick">2.00e-03</text>
<line x1="72" y1="255.33" x2="950" y2="255.33" class="grid" />
<text x="64" y="259.33" text-anchor="end" class="tick">4.00e-03</text>
<line x1="72" y1="202.00" x2="950" y2="202.00" class="grid" />
<text x="64" y="206.00" text-anchor="end" class="tick">6.00e-03</text>
<line x1="72" y1="148.67" x2="950" y2="148.67" class="grid" />
<text x="64" y="152.67" text-anchor="end" class="tick">8.00e-03</text>
<line x1="72" y1="95.33" x2="950" y2="95.33" class="grid" />
<text x="64" y="99.33" text-anchor="end" class="tick">0.01</text>
<line x1="72" y1="42.00" x2="950" y2="42.00" class="grid" />
<text x="64" y="46.00" text-anchor="end" class="tick">0.012</text>
<line x1="72" y1="362" x2="950" y2="362" class="axis" />
<line x1="72" y1="42" x2="72" y2="362" class="axis" />
<text x="511" y="406" text-anchor="middle" class="label">input length, bytes/chars (log scale)</text>
<text transform="translate(18,202) rotate(-90)" text-anchor="middle" class="label">median collision rate</text>
<polyline points="72.00,148.67 218.33,202.00 364.67,202.00 511.00,175.33 657.33,95.33 803.67,202.00 950.00,255.33" fill="none" stroke="#1f77b4" stroke-width="2" stroke-linejoin="round" stroke-linecap="round" /><circle cx="72.00" cy="148.67" r="3" fill="#1f77b4" /><circle cx="218.33" cy="202.00" r="3" fill="#1f77b4" /><circle cx="364.67" cy="202.00" r="3" fill="#1f77b4" /><circle cx="511.00" cy="175.33" r="3" fill="#1f77b4" /><circle cx="657.33" cy="95.33" r="3" fill="#1f77b4" /><circle cx="803.67" cy="202.00" r="3" fill="#1f77b4" /><circle cx="950.00" cy="255.33" r="3" fill="#1f77b4" />
<polyline points="72.00,122.00 218.33,95.33 364.67,175.33 511.00,95.33 657.33,148.67 803.67,122.00 950.00,175.33" fill="none" stroke="#ff7f0e" stroke-width="2" stroke-linejoin="round" stroke-linecap="round" /><circle cx="72.00" cy="122.00" r="3" fill="#ff7f0e" /><circle cx="218.33" cy="95.33" r="3" fill="#ff7f0e" /><circle cx="364.67" cy="175.33" r="3" fill="#ff7f0e" /><circle cx="511.00" cy="95.33" r="3" fill="#ff7f0e" /><circle cx="657.33" cy="148.67" r="3" fill="#ff7f0e" /><circle cx="803.67" cy="122.00" r="3" fill="#ff7f0e" /><circle cx="950.00" cy="175.33" r="3" fill="#ff7f0e" />
<polyline points="72.00,175.33 218.33,175.33 364.67,148.67 511.00,148.67 657.33,202.00 803.67,175.33 950.00,122.00" fill="none" stroke="#2ca02c" stroke-width="2" stroke-linejoin="round" stroke-linecap="round" /><circle cx="72.00" cy="175.33" r="3" fill="#2ca02c" /><circle cx="218.33" cy="175.33" r="3" fill="#2ca02c" /><circle cx="364.67" cy="148.67" r="3" fill="#2ca02c" /><circle cx="511.00" cy="148.67" r="3" fill="#2ca02c" /><circle cx="657.33" cy="202.00" r="3" fill="#2ca02c" /><circle cx="803.67" cy="175.33" r="3" fill="#2ca02c" /><circle cx="950.00" cy="122.00" r="3" fill="#2ca02c" />
<polyline points="72.00,202.00 218.33,148.67 364.67,202.00 511.00,122.00 657.33,255.33 803.67,175.33 950.00,202.00" fill="none" stroke="#d62728" stroke-width="2" stroke-linejoin="round" stroke-linecap="round" /><circle cx="72.00" cy="202.00" r="3" fill="#d62728" /><circle cx="218.33" cy="148.67" r="3" fill="#d62728" /><circle cx="364.67" cy="202.00" r="3" fill="#d62728" /><circle cx="511.00" cy="122.00" r="3" fill="#d62728" /><circle cx="657.33" cy="255.33" r="3" fill="#d62728" /><circle cx="803.67" cy="175.33" r="3" fill="#d62728" /><circle cx="950.00" cy="202.00" r="3" fill="#d62728" />
<polyline points="72.00,95.33 218.33,148.67 364.67,202.00 511.00,148.67 657.33,42.00 803.67,148.67 950.00,228.67" fill="none" stroke="#9467bd" stroke-width="2" stroke-linejoin="round" stroke-linecap="round" /><circle cx="72.00" cy="95.33" r="3" fill="#9467bd" /><circle cx="218.33" cy="148.67" r="3" fill="#9467bd" /><circle cx="364.67" cy="202.00" r="3" fill="#9467bd" /><circle cx="511.00" cy="148.67" r="3" fill="#9467bd" /><circle cx="657.33" cy="42.00" r="3" fill="#9467bd" /><circle cx="803.67" cy="148.67" r="3" fill="#9467bd" /><circle cx="950.00" cy="228.67" r="3" fill="#9467bd" />
<polyline points="72.00,148.67 218.33,148.67 364.67,122.00 511.00,175.33 657.33,175.33 803.67,255.33 950.00,175.33" fill="none" stroke="#8c564b" stroke-width="2" stroke-linejoin="round" stroke-linecap="round" /><circle cx="72.00" cy="148.67" r="3" fill="#8c564b" /><circle cx="218.33" cy="148.67" r="3" fill="#8c564b" /><circle cx="364.67" cy="122.00" r="3" fill="#8c564b" /><circle cx="511.00" cy="175.33" r="3" fill="#8c564b" /><circle cx="657.33" cy="175.33" r="3" fill="#8c564b" /><circle cx="803.67" cy="255.33" r="3" fill="#8c564b" /><circle cx="950.00" cy="175.33" r="3" fill="#8c564b" />
<rect x="976" y="48" width="12" height="12" fill="#1f77b4" />
<text x="994" y="58" class="legend">xxh32</text>
<rect x="976" y="66" width="12" height="12" fill="#ff7f0e" />
<text x="994" y="76" class="legend">xxh64</text>
<rect x="976" y="84" width="12" height="12" fill="#2ca02c" />
<text x="994" y="94" class="legend">xxh3_64</text>
<rect x="976" y="102" width="12" height="12" fill="#d62728" />
<text x="994" y="112" class="legend">city32</text>
<rect x="976" y="120" width="12" height="12" fill="#9467bd" />
<text x="994" y="130" class="legend">city64</text>
<rect x="976" y="138" width="12" height="12" fill="#8c564b" />
<text x="994" y="148" class="legend">joaat</text>
</g></g>
<g transform="translate(0,1260)"><g class="chart">
<text x="550" y="22" text-anchor="middle" class="title">Random bytes: 20-bit truncated hash collision rate</text>
<rect x="72" y="42" width="878" height="320" class="plot-bg" />
<line x1="72.00" y1="42" x2="72.00" y2="362" class="grid" />
<text x="72.00" y="380" text-anchor="middle" class="tick">4</text>
<line x1="218.33" y1="42" x2="218.33" y2="362" class="grid" />
<text x="218.33" y="380" text-anchor="middle" class="tick">8</text>
<line x1="364.67" y1="42" x2="364.67" y2="362" class="grid" />
<text x="364.67" y="380" text-anchor="middle" class="tick">16</text>
<line x1="511.00" y1="42" x2="511.00" y2="362" class="grid" />
<text x="511.00" y="380" text-anchor="middle" class="tick">32</text>
<line x1="657.33" y1="42" x2="657.33" y2="362" class="grid" />
<text x="657.33" y="380" text-anchor="middle" class="tick">64</text>
<line x1="803.67" y1="42" x2="803.67" y2="362" class="grid" />
<text x="803.67" y="380" text-anchor="middle" class="tick">128</text>
<line x1="950.00" y1="42" x2="950.00" y2="362" class="grid" />
<text x="950.00" y="380" text-anchor="middle" class="tick">256</text>
<line x1="72" y1="362.00" x2="950" y2="362.00" class="grid" />
<text x="64" y="366.00" text-anchor="end" class="tick">0</text>
<line x1="72" y1="298.00" x2="950" y2="298.00" class="grid" />
<text x="64" y="302.00" text-anchor="end" class="tick">2.00e-04</text>
<line x1="72" y1="234.00" x2="950" y2="234.00" class="grid" />
<text x="64" y="238.00" text-anchor="end" class="tick">4.00e-04</text>
<line x1="72" y1="170.00" x2="950" y2="170.00" class="grid" />
<text x="64" y="174.00" text-anchor="end" class="tick">6.00e-04</text>
<line x1="72" y1="106.00" x2="950" y2="106.00" class="grid" />
<text x="64" y="110.00" text-anchor="end" class="tick">8.00e-04</text>
<line x1="72" y1="42.00" x2="950" y2="42.00" class="grid" />
<text x="64" y="46.00" text-anchor="end" class="tick">1.00e-03</text>
<line x1="72" y1="362" x2="950" y2="362" class="axis" />
<line x1="72" y1="42" x2="72" y2="362" class="axis" />
<text x="511" y="406" text-anchor="middle" class="label">input length, bytes/chars (log scale)</text>
<text transform="translate(18,202) rotate(-90)" text-anchor="middle" class="label">median collision rate</text>
<polyline points="72.00,362.00 218.33,42.00 364.67,362.00 511.00,362.00 657.33,362.00 803.67,42.00 950.00,362.00" fill="none" stroke="#1f77b4" stroke-width="2" stroke-linejoin="round" stroke-linecap="round" /><circle cx="72.00" cy="362.00" r="3" fill="#1f77b4" /><circle cx="218.33" cy="42.00" r="3" fill="#1f77b4" /><circle cx="364.67" cy="362.00" r="3" fill="#1f77b4" /><circle cx="511.00" cy="362.00" r="3" fill="#1f77b4" /><circle cx="657.33" cy="362.00" r="3" fill="#1f77b4" /><circle cx="803.67" cy="42.00" r="3" fill="#1f77b4" /><circle cx="950.00" cy="362.00" r="3" fill="#1f77b4" />
<polyline points="72.00,42.00 218.33,362.00 364.67,362.00 511.00,362.00 657.33,362.00 803.67,362.00 950.00,42.00" fill="none" stroke="#ff7f0e" stroke-width="2" stroke-linejoin="round" stroke-linecap="round" /><circle cx="72.00" cy="42.00" r="3" fill="#ff7f0e" /><circle cx="218.33" cy="362.00" r="3" fill="#ff7f0e" /><circle cx="364.67" cy="362.00" r="3" fill="#ff7f0e" /><circle cx="511.00" cy="362.00" r="3" fill="#ff7f0e" /><circle cx="657.33" cy="362.00" r="3" fill="#ff7f0e" /><circle cx="803.67" cy="362.00" r="3" fill="#ff7f0e" /><circle cx="950.00" cy="42.00" r="3" fill="#ff7f0e" />
<polyline points="72.00,362.00 218.33,362.00 364.67,362.00 511.00,42.00 657.33,362.00 803.67,362.00 950.00,42.00" fill="none" stroke="#2ca02c" stroke-width="2" stroke-linejoin="round" stroke-linecap="round" /><circle cx="72.00" cy="362.00" r="3" fill="#2ca02c" /><circle cx="218.33" cy="362.00" r="3" fill="#2ca02c" /><circle cx="364.67" cy="362.00" r="3" fill="#2ca02c" /><circle cx="511.00" cy="42.00" r="3" fill="#2ca02c" /><circle cx="657.33" cy="362.00" r="3" fill="#2ca02c" /><circle cx="803.67" cy="362.00" r="3" fill="#2ca02c" /><circle cx="950.00" cy="42.00" r="3" fill="#2ca02c" />
<polyline points="72.00,362.00 218.33,362.00 364.67,362.00 511.00,362.00 657.33,42.00 803.67,362.00 950.00,362.00" fill="none" stroke="#d62728" stroke-width="2" stroke-linejoin="round" stroke-linecap="round" /><circle cx="72.00" cy="362.00" r="3" fill="#d62728" /><circle cx="218.33" cy="362.00" r="3" fill="#d62728" /><circle cx="364.67" cy="362.00" r="3" fill="#d62728" /><circle cx="511.00" cy="362.00" r="3" fill="#d62728" /><circle cx="657.33" cy="42.00" r="3" fill="#d62728" /><circle cx="803.67" cy="362.00" r="3" fill="#d62728" /><circle cx="950.00" cy="362.00" r="3" fill="#d62728" />
<polyline points="72.00,42.00 218.33,362.00 364.67,42.00 511.00,362.00 657.33,362.00 803.67,362.00 950.00,362.00" fill="none" stroke="#9467bd" stroke-width="2" stroke-linejoin="round" stroke-linecap="round" /><circle cx="72.00" cy="42.00" r="3" fill="#9467bd" /><circle cx="218.33" cy="362.00" r="3" fill="#9467bd" /><circle cx="364.67" cy="42.00" r="3" fill="#9467bd" /><circle cx="511.00" cy="362.00" r="3" fill="#9467bd" /><circle cx="657.33" cy="362.00" r="3" fill="#9467bd" /><circle cx="803.67" cy="362.00" r="3" fill="#9467bd" /><circle cx="950.00" cy="362.00" r="3" fill="#9467bd" />
<polyline points="72.00,362.00 218.33,362.00 364.67,42.00 511.00,362.00 657.33,362.00 803.67,362.00 950.00,42.00" fill="none" stroke="#8c564b" stroke-width="2" stroke-linejoin="round" stroke-linecap="round" /><circle cx="72.00" cy="362.00" r="3" fill="#8c564b" /><circle cx="218.33" cy="362.00" r="3" fill="#8c564b" /><circle cx="364.67" cy="42.00" r="3" fill="#8c564b" /><circle cx="511.00" cy="362.00" r="3" fill="#8c564b" /><circle cx="657.33" cy="362.00" r="3" fill="#8c564b" /><circle cx="803.67" cy="362.00" r="3" fill="#8c564b" /><circle cx="950.00" cy="42.00" r="3" fill="#8c564b" />
<rect x="976" y="48" width="12" height="12" fill="#1f77b4" />
<text x="994" y="58" class="legend">xxh32</text>
<rect x="976" y="66" width="12" height="12" fill="#ff7f0e" />
<text x="994" y="76" class="legend">xxh64</text>
<rect x="976" y="84" width="12" height="12" fill="#2ca02c" />
<text x="994" y="94" class="legend">xxh3_64</text>
<rect x="976" y="102" width="12" height="12" fill="#d62728" />
<text x="994" y="112" class="legend">city32</text>
<rect x="976" y="120" width="12" height="12" fill="#9467bd" />
<text x="994" y="130" class="legend">city64</text>
<rect x="976" y="138" width="12" height="12" fill="#8c564b" />
<text x="994" y="148" class="legend">joaat</text>
</g></g>
<g transform="translate(0,1680)"><g class="chart">
<text x="550" y="22" text-anchor="middle" class="title">Random bytes: 24-bit truncated hash collision rate</text>
<rect x="72" y="42" width="878" height="320" class="plot-bg" />
<line x1="72.00" y1="42" x2="72.00" y2="362" class="grid" />
<text x="72.00" y="380" text-anchor="middle" class="tick">4</text>
<line x1="218.33" y1="42" x2="218.33" y2="362" class="grid" />
<text x="218.33" y="380" text-anchor="middle" class="tick">8</text>
<line x1="364.67" y1="42" x2="364.67" y2="362" class="grid" />
<text x="364.67" y="380" text-anchor="middle" class="tick">16</text>
<line x1="511.00" y1="42" x2="511.00" y2="362" class="grid" />
<text x="511.00" y="380" text-anchor="middle" class="tick">32</text>
<line x1="657.33" y1="42" x2="657.33" y2="362" class="grid" />
<text x="657.33" y="380" text-anchor="middle" class="tick">64</text>
<line x1="803.67" y1="42" x2="803.67" y2="362" class="grid" />
<text x="803.67" y="380" text-anchor="middle" class="tick">128</text>
<line x1="950.00" y1="42" x2="950.00" y2="362" class="grid" />
<text x="950.00" y="380" text-anchor="middle" class="tick">256</text>
<line x1="72" y1="202.00" x2="950" y2="202.00" class="grid" />
<text x="64" y="206.00" text-anchor="end" class="tick">0</text>
<line x1="72" y1="362" x2="950" y2="362" class="axis" />
<line x1="72" y1="42" x2="72" y2="362" class="axis" />
<text x="511" y="406" text-anchor="middle" class="label">input length, bytes/chars (log scale)</text>
<text transform="translate(18,202) rotate(-90)" text-anchor="middle" class="label">median collision rate</text>
<polyline points="72.00,202.00 218.33,202.00 364.67,202.00 511.00,202.00 657.33,202.00 803.67,202.00 950.00,202.00" fill="none" stroke="#1f77b4" stroke-width="2" stroke-linejoin="round" stroke-linecap="round" /><circle cx="72.00" cy="202.00" r="3" fill="#1f77b4" /><circle cx="218.33" cy="202.00" r="3" fill="#1f77b4" /><circle cx="364.67" cy="202.00" r="3" fill="#1f77b4" /><circle cx="511.00" cy="202.00" r="3" fill="#1f77b4" /><circle cx="657.33" cy="202.00" r="3" fill="#1f77b4" /><circle cx="803.67" cy="202.00" r="3" fill="#1f77b4" /><circle cx="950.00" cy="202.00" r="3" fill="#1f77b4" />
<polyline points="72.00,202.00 218.33,202.00 364.67,202.00 511.00,202.00 657.33,202.00 803.67,202.00 950.00,202.00" fill="none" stroke="#ff7f0e" stroke-width="2" stroke-linejoin="round" stroke-linecap="round" /><circle cx="72.00" cy="202.00" r="3" fill="#ff7f0e" /><circle cx="218.33" cy="202.00" r="3" fill="#ff7f0e" /><circle cx="364.67" cy="202.00" r="3" fill="#ff7f0e" /><circle cx="511.00" cy="202.00" r="3" fill="#ff7f0e" /><circle cx="657.33" cy="202.00" r="3" fill="#ff7f0e" /><circle cx="803.67" cy="202.00" r="3" fill="#ff7f0e" /><circle cx="950.00" cy="202.00" r="3" fill="#ff7f0e" />
<polyline points="72.00,202.00 218.33,202.00 364.67,202.00 511.00,202.00 657.33,202.00 803.67,202.00 950.00,202.00" fill="none" stroke="#2ca02c" stroke-width="2" stroke-linejoin="round" stroke-linecap="round" /><circle cx="72.00" cy="202.00" r="3" fill="#2ca02c" /><circle cx="218.33" cy="202.00" r="3" fill="#2ca02c" /><circle cx="364.67" cy="202.00" r="3" fill="#2ca02c" /><circle cx="511.00" cy="202.00" r="3" fill="#2ca02c" /><circle cx="657.33" cy="202.00" r="3" fill="#2ca02c" /><circle cx="803.67" cy="202.00" r="3" fill="#2ca02c" /><circle cx="950.00" cy="202.00" r="3" fill="#2ca02c" />
<polyline points="72.00,202.00 218.33,202.00 364.67,202.00 511.00,202.00 657.33,202.00 803.67,202.00 950.00,202.00" fill="none" stroke="#d62728" stroke-width="2" stroke-linejoin="round" stroke-linecap="round" /><circle cx="72.00" cy="202.00" r="3" fill="#d62728" /><circle cx="218.33" cy="202.00" r="3" fill="#d62728" /><circle cx="364.67" cy="202.00" r="3" fill="#d62728" /><circle cx="511.00" cy="202.00" r="3" fill="#d62728" /><circle cx="657.33" cy="202.00" r="3" fill="#d62728" /><circle cx="803.67" cy="202.00" r="3" fill="#d62728" /><circle cx="950.00" cy="202.00" r="3" fill="#d62728" />
<polyline points="72.00,202.00 218.33,202.00 364.67,202.00 511.00,202.00 657.33,202.00 803.67,202.00 950.00,202.00" fill="none" stroke="#9467bd" stroke-width="2" stroke-linejoin="round" stroke-linecap="round" /><circle cx="72.00" cy="202.00" r="3" fill="#9467bd" /><circle cx="218.33" cy="202.00" r="3" fill="#9467bd" /><circle cx="364.67" cy="202.00" r="3" fill="#9467bd" /><circle cx="511.00" cy="202.00" r="3" fill="#9467bd" /><circle cx="657.33" cy="202.00" r="3" fill="#9467bd" /><circle cx="803.67" cy="202.00" r="3" fill="#9467bd" /><circle cx="950.00" cy="202.00" r="3" fill="#9467bd" />
<polyline points="72.00,202.00 218.33,202.00 364.67,202.00 511.00,202.00 657.33,202.00 803.67,202.00 950.00,202.00" fill="none" stroke="#8c564b" stroke-width="2" stroke-linejoin="round" stroke-linecap="round" /><circle cx="72.00" cy="202.00" r="3" fill="#8c564b" /><circle cx="218.33" cy="202.00" r="3" fill="#8c564b" /><circle cx="364.67" cy="202.00" r="3" fill="#8c564b" /><circle cx="511.00" cy="202.00" r="3" fill="#8c564b" /><circle cx="657.33" cy="202.00" r="3" fill="#8c564b" /><circle cx="803.67" cy="202.00" r="3" fill="#8c564b" /><circle cx="950.00" cy="202.00" r="3" fill="#8c564b" />
<rect x="976" y="48" width="12" height="12" fill="#1f77b4" />
<text x="994" y="58" class="legend">xxh32</text>
<rect x="976" y="66" width="12" height="12" fill="#ff7f0e" />
<text x="994" y="76" class="legend">xxh64</text>
<rect x="976" y="84" width="12" height="12" fill="#2ca02c" />
<text x="994" y="94" class="legend">xxh3_64</text>
<rect x="976" y="102" width="12" height="12" fill="#d62728" />
<text x="994" y="112" class="legend">city32</text>
<rect x="976" y="120" width="12" height="12" fill="#9467bd" />
<text x="994" y="130" class="legend">city64</text>
<rect x="976" y="138" width="12" height="12" fill="#8c564b" />
<text x="994" y="148" class="legend">joaat</text>
</g></g>
<g transform="translate(0,2100)"><g class="chart">
<text x="550" y="22" text-anchor="middle" class="title">Random bytes: 32-bit truncated hash collision rate</text>
<rect x="72" y="42" width="878" height="320" class="plot-bg" />
<line x1="72.00" y1="42" x2="72.00" y2="362" class="grid" />
<text x="72.00" y="380" text-anchor="middle" class="tick">4</text>
<line x1="218.33" y1="42" x2="218.33" y2="362" class="grid" />
<text x="218.33" y="380" text-anchor="middle" class="tick">8</text>
<line x1="364.67" y1="42" x2="364.67" y2="362" class="grid" />
<text x="364.67" y="380" text-anchor="middle" class="tick">16</text>
<line x1="511.00" y1="42" x2="511.00" y2="362" class="grid" />
<text x="511.00" y="380" text-anchor="middle" class="tick">32</text>
<line x1="657.33" y1="42" x2="657.33" y2="362" class="grid" />
<text x="657.33" y="380" text-anchor="middle" class="tick">64</text>
<line x1="803.67" y1="42" x2="803.67" y2="362" class="grid" />
<text x="803.67" y="380" text-anchor="middle" class="tick">128</text>
<line x1="950.00" y1="42" x2="950.00" y2="362" class="grid" />
<text x="950.00" y="380" text-anchor="middle" class="tick">256</text>
<line x1="72" y1="202.00" x2="950" y2="202.00" class="grid" />
<text x="64" y="206.00" text-anchor="end" class="tick">0</text>
<line x1="72" y1="362" x2="950" y2="362" class="axis" />
<line x1="72" y1="42" x2="72" y2="362" class="axis" />
<text x="511" y="406" text-anchor="middle" class="label">input length, bytes/chars (log scale)</text>
<text transform="translate(18,202) rotate(-90)" text-anchor="middle" class="label">median collision rate</text>
<polyline points="72.00,202.00 218.33,202.00 364.67,202.00 511.00,202.00 657.33,202.00 803.67,202.00 950.00,202.00" fill="none" stroke="#1f77b4" stroke-width="2" stroke-linejoin="round" stroke-linecap="round" /><circle cx="72.00" cy="202.00" r="3" fill="#1f77b4" /><circle cx="218.33" cy="202.00" r="3" fill="#1f77b4" /><circle cx="364.67" cy="202.00" r="3" fill="#1f77b4" /><circle cx="511.00" cy="202.00" r="3" fill="#1f77b4" /><circle cx="657.33" cy="202.00" r="3" fill="#1f77b4" /><circle cx="803.67" cy="202.00" r="3" fill="#1f77b4" /><circle cx="950.00" cy="202.00" r="3" fill="#1f77b4" />
<polyline points="72.00,202.00 218.33,202.00 364.67,202.00 511.00,202.00 657.33,202.00 803.67,202.00 950.00,202.00" fill="none" stroke="#ff7f0e" stroke-width="2" stroke-linejoin="round" stroke-linecap="round" /><circle cx="72.00" cy="202.00" r="3" fill="#ff7f0e" /><circle cx="218.33" cy="202.00" r="3" fill="#ff7f0e" /><circle cx="364.67" cy="202.00" r="3" fill="#ff7f0e" /><circle cx="511.00" cy="202.00" r="3" fill="#ff7f0e" /><circle cx="657.33" cy="202.00" r="3" fill="#ff7f0e" /><circle cx="803.67" cy="202.00" r="3" fill="#ff7f0e" /><circle cx="950.00" cy="202.00" r="3" fill="#ff7f0e" />
<polyline points="72.00,202.00 218.33,202.00 364.67,202.00 511.00,202.00 657.33,202.00 803.67,202.00 950.00,202.00" fill="none" stroke="#2ca02c" stroke-width="2" stroke-linejoin="round" stroke-linecap="round" /><circle cx="72.00" cy="202.00" r="3" fill="#2ca02c" /><circle cx="218.33" cy="202.00" r="3" fill="#2ca02c" /><circle cx="364.67" cy="202.00" r="3" fill="#2ca02c" /><circle cx="511.00" cy="202.00" r="3" fill="#2ca02c" /><circle cx="657.33" cy="202.00" r="3" fill="#2ca02c" /><circle cx="803.67" cy="202.00" r="3" fill="#2ca02c" /><circle cx="950.00" cy="202.00" r="3" fill="#2ca02c" />
<polyline points="72.00,202.00 218.33,202.00 364.67,202.00 511.00,202.00 657.33,202.00 803.67,202.00 950.00,202.00" fill="none" stroke="#d62728" stroke-width="2" stroke-linejoin="round" stroke-linecap="round" /><circle cx="72.00" cy="202.00" r="3" fill="#d62728" /><circle cx="218.33" cy="202.00" r="3" fill="#d62728" /><circle cx="364.67" cy="202.00" r="3" fill="#d62728" /><circle cx="511.00" cy="202.00" r="3" fill="#d62728" /><circle cx="657.33" cy="202.00" r="3" fill="#d62728" /><circle cx="803.67" cy="202.00" r="3" fill="#d62728" /><circle cx="950.00" cy="202.00" r="3" fill="#d62728" />
<polyline points="72.00,202.00 218.33,202.00 364.67,202.00 511.00,202.00 657.33,202.00 803.67,202.00 950.00,202.00" fill="none" stroke="#9467bd" stroke-width="2" stroke-linejoin="round" stroke-linecap="round" /><circle cx="72.00" cy="202.00" r="3" fill="#9467bd" /><circle cx="218.33" cy="202.00" r="3" fill="#9467bd" /><circle cx="364.67" cy="202.00" r="3" fill="#9467bd" /><circle cx="511.00" cy="202.00" r="3" fill="#9467bd" /><circle cx="657.33" cy="202.00" r="3" fill="#9467bd" /><circle cx="803.67" cy="202.00" r="3" fill="#9467bd" /><circle cx="950.00" cy="202.00" r="3" fill="#9467bd" />
<polyline points="72.00,202.00 218.33,202.00 364.67,202.00 511.00,202.00 657.33,202.00 803.67,202.00 950.00,202.00" fill="none" stroke="#8c564b" stroke-width="2" stroke-linejoin="round" stroke-linecap="round" /><circle cx="72.00" cy="202.00" r="3" fill="#8c564b" /><circle cx="218.33" cy="202.00" r="3" fill="#8c564b" /><circle cx="364.67" cy="202.00" r="3" fill="#8c564b" /><circle cx="511.00" cy="202.00" r="3" fill="#8c564b" /><circle cx="657.33" cy="202.00" r="3" fill="#8c564b" /><circle cx="803.67" cy="202.00" r="3" fill="#8c564b" /><circle cx="950.00" cy="202.00" r="3" fill="#8c564b" />
<rect x="976" y="48" width="12" height="12" fill="#1f77b4" />
<text x="994" y="58" class="legend">xxh32</text>
<rect x="976" y="66" width="12" height="12" fill="#ff7f0e" />
<text x="994" y="76" class="legend">xxh64</text>
<rect x="976" y="84" width="12" height="12" fill="#2ca02c" />
<text x="994" y="94" class="legend">xxh3_64</text>
<rect x="976" y="102" width="12" height="12" fill="#d62728" />
<text x="994" y="112" class="legend">city32</text>
<rect x="976" y="120" width="12" height="12" fill="#9467bd" />
<text x="994" y="130" class="legend">city64</text>
<rect x="976" y="138" width="12" height="12" fill="#8c564b" />
<text x="994" y="148" class="legend">joaat</text>
</g></g>
</svg>

After

Width:  |  Height:  |  Size: 37 KiB

@@ -0,0 +1,312 @@
<svg xmlns="http://www.w3.org/2000/svg" width="1100" height="2520" viewBox="0 0 1100 2520">
<style>
.title { font: 700 18px sans-serif; fill: #111; }
.label { font: 13px sans-serif; fill: #222; }
.tick { font: 11px sans-serif; fill: #555; }
.legend { font: 12px monospace; fill: #222; }
.axis { stroke: #333; stroke-width: 1.2; }
.grid { stroke: #ddd; stroke-width: 0.8; }
.plot-bg { fill: #fff; stroke: #bbb; stroke-width: 1; }
</style>
<rect width="100%" height="100%" fill="#fff" />
<g transform="translate(0,0)"><g class="chart">
<text x="550" y="22" text-anchor="middle" class="title">Random a-zA-Z strings: 10-bit truncated hash collision rate</text>
<rect x="72" y="42" width="878" height="320" class="plot-bg" />
<line x1="72.00" y1="42" x2="72.00" y2="362" class="grid" />
<text x="72.00" y="380" text-anchor="middle" class="tick">4</text>
<line x1="218.33" y1="42" x2="218.33" y2="362" class="grid" />
<text x="218.33" y="380" text-anchor="middle" class="tick">8</text>
<line x1="364.67" y1="42" x2="364.67" y2="362" class="grid" />
<text x="364.67" y="380" text-anchor="middle" class="tick">16</text>
<line x1="511.00" y1="42" x2="511.00" y2="362" class="grid" />
<text x="511.00" y="380" text-anchor="middle" class="tick">32</text>
<line x1="657.33" y1="42" x2="657.33" y2="362" class="grid" />
<text x="657.33" y="380" text-anchor="middle" class="tick">64</text>
<line x1="803.67" y1="42" x2="803.67" y2="362" class="grid" />
<text x="803.67" y="380" text-anchor="middle" class="tick">128</text>
<line x1="950.00" y1="42" x2="950.00" y2="362" class="grid" />
<text x="950.00" y="380" text-anchor="middle" class="tick">256</text>
<line x1="72" y1="362.00" x2="950" y2="362.00" class="grid" />
<text x="64" y="366.00" text-anchor="end" class="tick">0</text>
<line x1="72" y1="275.75" x2="950" y2="275.75" class="grid" />
<text x="64" y="279.75" text-anchor="end" class="tick">0.1</text>
<line x1="72" y1="189.49" x2="950" y2="189.49" class="grid" />
<text x="64" y="193.49" text-anchor="end" class="tick">0.2</text>
<line x1="72" y1="103.24" x2="950" y2="103.24" class="grid" />
<text x="64" y="107.24" text-anchor="end" class="tick">0.3</text>
<line x1="72" y1="362" x2="950" y2="362" class="axis" />
<line x1="72" y1="42" x2="72" y2="362" class="axis" />
<text x="511" y="406" text-anchor="middle" class="label">input length, bytes/chars (log scale)</text>
<text transform="translate(18,202) rotate(-90)" text-anchor="middle" class="label">median collision rate</text>
<polyline points="72.00,60.98 218.33,52.35 364.67,54.94 511.00,48.04 657.33,55.80 803.67,52.35 950.00,51.49" fill="none" stroke="#1f77b4" stroke-width="2" stroke-linejoin="round" stroke-linecap="round" /><circle cx="72.00" cy="60.98" r="3" fill="#1f77b4" /><circle cx="218.33" cy="52.35" r="3" fill="#1f77b4" /><circle cx="364.67" cy="54.94" r="3" fill="#1f77b4" /><circle cx="511.00" cy="48.04" r="3" fill="#1f77b4" /><circle cx="657.33" cy="55.80" r="3" fill="#1f77b4" /><circle cx="803.67" cy="52.35" r="3" fill="#1f77b4" /><circle cx="950.00" cy="51.49" r="3" fill="#1f77b4" />
<polyline points="72.00,54.94 218.33,54.94 364.67,48.04 511.00,45.45 657.33,46.31 803.67,54.94 950.00,48.90" fill="none" stroke="#ff7f0e" stroke-width="2" stroke-linejoin="round" stroke-linecap="round" /><circle cx="72.00" cy="54.94" r="3" fill="#ff7f0e" /><circle cx="218.33" cy="54.94" r="3" fill="#ff7f0e" /><circle cx="364.67" cy="48.04" r="3" fill="#ff7f0e" /><circle cx="511.00" cy="45.45" r="3" fill="#ff7f0e" /><circle cx="657.33" cy="46.31" r="3" fill="#ff7f0e" /><circle cx="803.67" cy="54.94" r="3" fill="#ff7f0e" /><circle cx="950.00" cy="48.90" r="3" fill="#ff7f0e" />
<polyline points="72.00,52.35 218.33,57.53 364.67,57.53 511.00,58.39 657.33,65.29 803.67,50.63 950.00,56.66" fill="none" stroke="#2ca02c" stroke-width="2" stroke-linejoin="round" stroke-linecap="round" /><circle cx="72.00" cy="52.35" r="3" fill="#2ca02c" /><circle cx="218.33" cy="57.53" r="3" fill="#2ca02c" /><circle cx="364.67" cy="57.53" r="3" fill="#2ca02c" /><circle cx="511.00" cy="58.39" r="3" fill="#2ca02c" /><circle cx="657.33" cy="65.29" r="3" fill="#2ca02c" /><circle cx="803.67" cy="50.63" r="3" fill="#2ca02c" /><circle cx="950.00" cy="56.66" r="3" fill="#2ca02c" />
<polyline points="72.00,51.49 218.33,49.76 364.67,52.35 511.00,48.04 657.33,50.63 803.67,47.18 950.00,45.45" fill="none" stroke="#d62728" stroke-width="2" stroke-linejoin="round" stroke-linecap="round" /><circle cx="72.00" cy="51.49" r="3" fill="#d62728" /><circle cx="218.33" cy="49.76" r="3" fill="#d62728" /><circle cx="364.67" cy="52.35" r="3" fill="#d62728" /><circle cx="511.00" cy="48.04" r="3" fill="#d62728" /><circle cx="657.33" cy="50.63" r="3" fill="#d62728" /><circle cx="803.67" cy="47.18" r="3" fill="#d62728" /><circle cx="950.00" cy="45.45" r="3" fill="#d62728" />
<polyline points="72.00,42.00 218.33,46.31 364.67,57.53 511.00,60.98 657.33,59.25 803.67,61.84 950.00,51.49" fill="none" stroke="#9467bd" stroke-width="2" stroke-linejoin="round" stroke-linecap="round" /><circle cx="72.00" cy="42.00" r="3" fill="#9467bd" /><circle cx="218.33" cy="46.31" r="3" fill="#9467bd" /><circle cx="364.67" cy="57.53" r="3" fill="#9467bd" /><circle cx="511.00" cy="60.98" r="3" fill="#9467bd" /><circle cx="657.33" cy="59.25" r="3" fill="#9467bd" /><circle cx="803.67" cy="61.84" r="3" fill="#9467bd" /><circle cx="950.00" cy="51.49" r="3" fill="#9467bd" />
<polyline points="72.00,42.00 218.33,52.35 364.67,43.73 511.00,51.49 657.33,45.45 803.67,50.63 950.00,47.18" fill="none" stroke="#8c564b" stroke-width="2" stroke-linejoin="round" stroke-linecap="round" /><circle cx="72.00" cy="42.00" r="3" fill="#8c564b" /><circle cx="218.33" cy="52.35" r="3" fill="#8c564b" /><circle cx="364.67" cy="43.73" r="3" fill="#8c564b" /><circle cx="511.00" cy="51.49" r="3" fill="#8c564b" /><circle cx="657.33" cy="45.45" r="3" fill="#8c564b" /><circle cx="803.67" cy="50.63" r="3" fill="#8c564b" /><circle cx="950.00" cy="47.18" r="3" fill="#8c564b" />
<rect x="976" y="48" width="12" height="12" fill="#1f77b4" />
<text x="994" y="58" class="legend">xxh32</text>
<rect x="976" y="66" width="12" height="12" fill="#ff7f0e" />
<text x="994" y="76" class="legend">xxh64</text>
<rect x="976" y="84" width="12" height="12" fill="#2ca02c" />
<text x="994" y="94" class="legend">xxh3_64</text>
<rect x="976" y="102" width="12" height="12" fill="#d62728" />
<text x="994" y="112" class="legend">city32</text>
<rect x="976" y="120" width="12" height="12" fill="#9467bd" />
<text x="994" y="130" class="legend">city64</text>
<rect x="976" y="138" width="12" height="12" fill="#8c564b" />
<text x="994" y="148" class="legend">joaat</text>
</g></g>
<g transform="translate(0,420)"><g class="chart">
<text x="550" y="22" text-anchor="middle" class="title">Random a-zA-Z strings: 12-bit truncated hash collision rate</text>
<rect x="72" y="42" width="878" height="320" class="plot-bg" />
<line x1="72.00" y1="42" x2="72.00" y2="362" class="grid" />
<text x="72.00" y="380" text-anchor="middle" class="tick">4</text>
<line x1="218.33" y1="42" x2="218.33" y2="362" class="grid" />
<text x="218.33" y="380" text-anchor="middle" class="tick">8</text>
<line x1="364.67" y1="42" x2="364.67" y2="362" class="grid" />
<text x="364.67" y="380" text-anchor="middle" class="tick">16</text>
<line x1="511.00" y1="42" x2="511.00" y2="362" class="grid" />
<text x="511.00" y="380" text-anchor="middle" class="tick">32</text>
<line x1="657.33" y1="42" x2="657.33" y2="362" class="grid" />
<text x="657.33" y="380" text-anchor="middle" class="tick">64</text>
<line x1="803.67" y1="42" x2="803.67" y2="362" class="grid" />
<text x="803.67" y="380" text-anchor="middle" class="tick">128</text>
<line x1="950.00" y1="42" x2="950.00" y2="362" class="grid" />
<text x="950.00" y="380" text-anchor="middle" class="tick">256</text>
<line x1="72" y1="362.00" x2="950" y2="362.00" class="grid" />
<text x="64" y="366.00" text-anchor="end" class="tick">0</text>
<line x1="72" y1="310.80" x2="950" y2="310.80" class="grid" />
<text x="64" y="314.80" text-anchor="end" class="tick">0.02</text>
<line x1="72" y1="259.60" x2="950" y2="259.60" class="grid" />
<text x="64" y="263.60" text-anchor="end" class="tick">0.04</text>
<line x1="72" y1="208.40" x2="950" y2="208.40" class="grid" />
<text x="64" y="212.40" text-anchor="end" class="tick">0.06</text>
<line x1="72" y1="157.20" x2="950" y2="157.20" class="grid" />
<text x="64" y="161.20" text-anchor="end" class="tick">0.08</text>
<line x1="72" y1="106.00" x2="950" y2="106.00" class="grid" />
<text x="64" y="110.00" text-anchor="end" class="tick">0.1</text>
<line x1="72" y1="54.80" x2="950" y2="54.80" class="grid" />
<text x="64" y="58.80" text-anchor="end" class="tick">0.12</text>
<line x1="72" y1="362" x2="950" y2="362" class="axis" />
<line x1="72" y1="42" x2="72" y2="362" class="axis" />
<text x="511" y="406" text-anchor="middle" class="label">input length, bytes/chars (log scale)</text>
<text transform="translate(18,202) rotate(-90)" text-anchor="middle" class="label">median collision rate</text>
<polyline points="72.00,88.08 218.33,85.52 364.67,57.36 511.00,93.20 657.33,75.28 803.67,72.72 950.00,62.48" fill="none" stroke="#1f77b4" stroke-width="2" stroke-linejoin="round" stroke-linecap="round" /><circle cx="72.00" cy="88.08" r="3" fill="#1f77b4" /><circle cx="218.33" cy="85.52" r="3" fill="#1f77b4" /><circle cx="364.67" cy="57.36" r="3" fill="#1f77b4" /><circle cx="511.00" cy="93.20" r="3" fill="#1f77b4" /><circle cx="657.33" cy="75.28" r="3" fill="#1f77b4" /><circle cx="803.67" cy="72.72" r="3" fill="#1f77b4" /><circle cx="950.00" cy="62.48" r="3" fill="#1f77b4" />
<polyline points="72.00,67.60 218.33,106.00 364.67,67.60 511.00,85.52 657.33,72.72 803.67,90.64 950.00,65.04" fill="none" stroke="#ff7f0e" stroke-width="2" stroke-linejoin="round" stroke-linecap="round" /><circle cx="72.00" cy="67.60" r="3" fill="#ff7f0e" /><circle cx="218.33" cy="106.00" r="3" fill="#ff7f0e" /><circle cx="364.67" cy="67.60" r="3" fill="#ff7f0e" /><circle cx="511.00" cy="85.52" r="3" fill="#ff7f0e" /><circle cx="657.33" cy="72.72" r="3" fill="#ff7f0e" /><circle cx="803.67" cy="90.64" r="3" fill="#ff7f0e" /><circle cx="950.00" cy="65.04" r="3" fill="#ff7f0e" />
<polyline points="72.00,82.96 218.33,88.08 364.67,88.08 511.00,82.96 657.33,98.32 803.67,67.60 950.00,65.04" fill="none" stroke="#2ca02c" stroke-width="2" stroke-linejoin="round" stroke-linecap="round" /><circle cx="72.00" cy="82.96" r="3" fill="#2ca02c" /><circle cx="218.33" cy="88.08" r="3" fill="#2ca02c" /><circle cx="364.67" cy="88.08" r="3" fill="#2ca02c" /><circle cx="511.00" cy="82.96" r="3" fill="#2ca02c" /><circle cx="657.33" cy="98.32" r="3" fill="#2ca02c" /><circle cx="803.67" cy="67.60" r="3" fill="#2ca02c" /><circle cx="950.00" cy="65.04" r="3" fill="#2ca02c" />
<polyline points="72.00,95.76 218.33,70.16 364.67,70.16 511.00,57.36 657.33,72.72 803.67,93.20 950.00,42.00" fill="none" stroke="#d62728" stroke-width="2" stroke-linejoin="round" stroke-linecap="round" /><circle cx="72.00" cy="95.76" r="3" fill="#d62728" /><circle cx="218.33" cy="70.16" r="3" fill="#d62728" /><circle cx="364.67" cy="70.16" r="3" fill="#d62728" /><circle cx="511.00" cy="57.36" r="3" fill="#d62728" /><circle cx="657.33" cy="72.72" r="3" fill="#d62728" /><circle cx="803.67" cy="93.20" r="3" fill="#d62728" /><circle cx="950.00" cy="42.00" r="3" fill="#d62728" />
<polyline points="72.00,72.72 218.33,65.04 364.67,65.04 511.00,65.04 657.33,88.08 803.67,90.64 950.00,70.16" fill="none" stroke="#9467bd" stroke-width="2" stroke-linejoin="round" stroke-linecap="round" /><circle cx="72.00" cy="72.72" r="3" fill="#9467bd" /><circle cx="218.33" cy="65.04" r="3" fill="#9467bd" /><circle cx="364.67" cy="65.04" r="3" fill="#9467bd" /><circle cx="511.00" cy="65.04" r="3" fill="#9467bd" /><circle cx="657.33" cy="88.08" r="3" fill="#9467bd" /><circle cx="803.67" cy="90.64" r="3" fill="#9467bd" /><circle cx="950.00" cy="70.16" r="3" fill="#9467bd" />
<polyline points="72.00,67.60 218.33,59.92 364.67,70.16 511.00,72.72 657.33,72.72 803.67,77.84 950.00,44.56" fill="none" stroke="#8c564b" stroke-width="2" stroke-linejoin="round" stroke-linecap="round" /><circle cx="72.00" cy="67.60" r="3" fill="#8c564b" /><circle cx="218.33" cy="59.92" r="3" fill="#8c564b" /><circle cx="364.67" cy="70.16" r="3" fill="#8c564b" /><circle cx="511.00" cy="72.72" r="3" fill="#8c564b" /><circle cx="657.33" cy="72.72" r="3" fill="#8c564b" /><circle cx="803.67" cy="77.84" r="3" fill="#8c564b" /><circle cx="950.00" cy="44.56" r="3" fill="#8c564b" />
<rect x="976" y="48" width="12" height="12" fill="#1f77b4" />
<text x="994" y="58" class="legend">xxh32</text>
<rect x="976" y="66" width="12" height="12" fill="#ff7f0e" />
<text x="994" y="76" class="legend">xxh64</text>
<rect x="976" y="84" width="12" height="12" fill="#2ca02c" />
<text x="994" y="94" class="legend">xxh3_64</text>
<rect x="976" y="102" width="12" height="12" fill="#d62728" />
<text x="994" y="112" class="legend">city32</text>
<rect x="976" y="120" width="12" height="12" fill="#9467bd" />
<text x="994" y="130" class="legend">city64</text>
<rect x="976" y="138" width="12" height="12" fill="#8c564b" />
<text x="994" y="148" class="legend">joaat</text>
</g></g>
<g transform="translate(0,840)"><g class="chart">
<text x="550" y="22" text-anchor="middle" class="title">Random a-zA-Z strings: 16-bit truncated hash collision rate</text>
<rect x="72" y="42" width="878" height="320" class="plot-bg" />
<line x1="72.00" y1="42" x2="72.00" y2="362" class="grid" />
<text x="72.00" y="380" text-anchor="middle" class="tick">4</text>
<line x1="218.33" y1="42" x2="218.33" y2="362" class="grid" />
<text x="218.33" y="380" text-anchor="middle" class="tick">8</text>
<line x1="364.67" y1="42" x2="364.67" y2="362" class="grid" />
<text x="364.67" y="380" text-anchor="middle" class="tick">16</text>
<line x1="511.00" y1="42" x2="511.00" y2="362" class="grid" />
<text x="511.00" y="380" text-anchor="middle" class="tick">32</text>
<line x1="657.33" y1="42" x2="657.33" y2="362" class="grid" />
<text x="657.33" y="380" text-anchor="middle" class="tick">64</text>
<line x1="803.67" y1="42" x2="803.67" y2="362" class="grid" />
<text x="803.67" y="380" text-anchor="middle" class="tick">128</text>
<line x1="950.00" y1="42" x2="950.00" y2="362" class="grid" />
<text x="950.00" y="380" text-anchor="middle" class="tick">256</text>
<line x1="72" y1="362.00" x2="950" y2="362.00" class="grid" />
<text x="64" y="366.00" text-anchor="end" class="tick">0</text>
<line x1="72" y1="298.00" x2="950" y2="298.00" class="grid" />
<text x="64" y="302.00" text-anchor="end" class="tick">2.00e-03</text>
<line x1="72" y1="234.00" x2="950" y2="234.00" class="grid" />
<text x="64" y="238.00" text-anchor="end" class="tick">4.00e-03</text>
<line x1="72" y1="170.00" x2="950" y2="170.00" class="grid" />
<text x="64" y="174.00" text-anchor="end" class="tick">6.00e-03</text>
<line x1="72" y1="106.00" x2="950" y2="106.00" class="grid" />
<text x="64" y="110.00" text-anchor="end" class="tick">8.00e-03</text>
<line x1="72" y1="42.00" x2="950" y2="42.00" class="grid" />
<text x="64" y="46.00" text-anchor="end" class="tick">0.01</text>
<line x1="72" y1="362" x2="950" y2="362" class="axis" />
<line x1="72" y1="42" x2="72" y2="362" class="axis" />
<text x="511" y="406" text-anchor="middle" class="label">input length, bytes/chars (log scale)</text>
<text transform="translate(18,202) rotate(-90)" text-anchor="middle" class="label">median collision rate</text>
<polyline points="72.00,74.00 218.33,74.00 364.67,106.00 511.00,42.00 657.33,106.00 803.67,170.00 950.00,170.00" fill="none" stroke="#1f77b4" stroke-width="2" stroke-linejoin="round" stroke-linecap="round" /><circle cx="72.00" cy="74.00" r="3" fill="#1f77b4" /><circle cx="218.33" cy="74.00" r="3" fill="#1f77b4" /><circle cx="364.67" cy="106.00" r="3" fill="#1f77b4" /><circle cx="511.00" cy="42.00" r="3" fill="#1f77b4" /><circle cx="657.33" cy="106.00" r="3" fill="#1f77b4" /><circle cx="803.67" cy="170.00" r="3" fill="#1f77b4" /><circle cx="950.00" cy="170.00" r="3" fill="#1f77b4" />
<polyline points="72.00,74.00 218.33,74.00 364.67,74.00 511.00,202.00 657.33,74.00 803.67,202.00 950.00,106.00" fill="none" stroke="#ff7f0e" stroke-width="2" stroke-linejoin="round" stroke-linecap="round" /><circle cx="72.00" cy="74.00" r="3" fill="#ff7f0e" /><circle cx="218.33" cy="74.00" r="3" fill="#ff7f0e" /><circle cx="364.67" cy="74.00" r="3" fill="#ff7f0e" /><circle cx="511.00" cy="202.00" r="3" fill="#ff7f0e" /><circle cx="657.33" cy="74.00" r="3" fill="#ff7f0e" /><circle cx="803.67" cy="202.00" r="3" fill="#ff7f0e" /><circle cx="950.00" cy="106.00" r="3" fill="#ff7f0e" />
<polyline points="72.00,42.00 218.33,170.00 364.67,138.00 511.00,42.00 657.33,170.00 803.67,138.00 950.00,234.00" fill="none" stroke="#2ca02c" stroke-width="2" stroke-linejoin="round" stroke-linecap="round" /><circle cx="72.00" cy="42.00" r="3" fill="#2ca02c" /><circle cx="218.33" cy="170.00" r="3" fill="#2ca02c" /><circle cx="364.67" cy="138.00" r="3" fill="#2ca02c" /><circle cx="511.00" cy="42.00" r="3" fill="#2ca02c" /><circle cx="657.33" cy="170.00" r="3" fill="#2ca02c" /><circle cx="803.67" cy="138.00" r="3" fill="#2ca02c" /><circle cx="950.00" cy="234.00" r="3" fill="#2ca02c" />
<polyline points="72.00,106.00 218.33,170.00 364.67,202.00 511.00,106.00 657.33,74.00 803.67,170.00 950.00,42.00" fill="none" stroke="#d62728" stroke-width="2" stroke-linejoin="round" stroke-linecap="round" /><circle cx="72.00" cy="106.00" r="3" fill="#d62728" /><circle cx="218.33" cy="170.00" r="3" fill="#d62728" /><circle cx="364.67" cy="202.00" r="3" fill="#d62728" /><circle cx="511.00" cy="106.00" r="3" fill="#d62728" /><circle cx="657.33" cy="74.00" r="3" fill="#d62728" /><circle cx="803.67" cy="170.00" r="3" fill="#d62728" /><circle cx="950.00" cy="42.00" r="3" fill="#d62728" />
<polyline points="72.00,74.00 218.33,74.00 364.67,202.00 511.00,202.00 657.33,138.00 803.67,138.00 950.00,170.00" fill="none" stroke="#9467bd" stroke-width="2" stroke-linejoin="round" stroke-linecap="round" /><circle cx="72.00" cy="74.00" r="3" fill="#9467bd" /><circle cx="218.33" cy="74.00" r="3" fill="#9467bd" /><circle cx="364.67" cy="202.00" r="3" fill="#9467bd" /><circle cx="511.00" cy="202.00" r="3" fill="#9467bd" /><circle cx="657.33" cy="138.00" r="3" fill="#9467bd" /><circle cx="803.67" cy="138.00" r="3" fill="#9467bd" /><circle cx="950.00" cy="170.00" r="3" fill="#9467bd" />
<polyline points="72.00,170.00 218.33,202.00 364.67,74.00 511.00,138.00 657.33,74.00 803.67,170.00 950.00,106.00" fill="none" stroke="#8c564b" stroke-width="2" stroke-linejoin="round" stroke-linecap="round" /><circle cx="72.00" cy="170.00" r="3" fill="#8c564b" /><circle cx="218.33" cy="202.00" r="3" fill="#8c564b" /><circle cx="364.67" cy="74.00" r="3" fill="#8c564b" /><circle cx="511.00" cy="138.00" r="3" fill="#8c564b" /><circle cx="657.33" cy="74.00" r="3" fill="#8c564b" /><circle cx="803.67" cy="170.00" r="3" fill="#8c564b" /><circle cx="950.00" cy="106.00" r="3" fill="#8c564b" />
<rect x="976" y="48" width="12" height="12" fill="#1f77b4" />
<text x="994" y="58" class="legend">xxh32</text>
<rect x="976" y="66" width="12" height="12" fill="#ff7f0e" />
<text x="994" y="76" class="legend">xxh64</text>
<rect x="976" y="84" width="12" height="12" fill="#2ca02c" />
<text x="994" y="94" class="legend">xxh3_64</text>
<rect x="976" y="102" width="12" height="12" fill="#d62728" />
<text x="994" y="112" class="legend">city32</text>
<rect x="976" y="120" width="12" height="12" fill="#9467bd" />
<text x="994" y="130" class="legend">city64</text>
<rect x="976" y="138" width="12" height="12" fill="#8c564b" />
<text x="994" y="148" class="legend">joaat</text>
</g></g>
<g transform="translate(0,1260)"><g class="chart">
<text x="550" y="22" text-anchor="middle" class="title">Random a-zA-Z strings: 20-bit truncated hash collision rate</text>
<rect x="72" y="42" width="878" height="320" class="plot-bg" />
<line x1="72.00" y1="42" x2="72.00" y2="362" class="grid" />
<text x="72.00" y="380" text-anchor="middle" class="tick">4</text>
<line x1="218.33" y1="42" x2="218.33" y2="362" class="grid" />
<text x="218.33" y="380" text-anchor="middle" class="tick">8</text>
<line x1="364.67" y1="42" x2="364.67" y2="362" class="grid" />
<text x="364.67" y="380" text-anchor="middle" class="tick">16</text>
<line x1="511.00" y1="42" x2="511.00" y2="362" class="grid" />
<text x="511.00" y="380" text-anchor="middle" class="tick">32</text>
<line x1="657.33" y1="42" x2="657.33" y2="362" class="grid" />
<text x="657.33" y="380" text-anchor="middle" class="tick">64</text>
<line x1="803.67" y1="42" x2="803.67" y2="362" class="grid" />
<text x="803.67" y="380" text-anchor="middle" class="tick">128</text>
<line x1="950.00" y1="42" x2="950.00" y2="362" class="grid" />
<text x="950.00" y="380" text-anchor="middle" class="tick">256</text>
<line x1="72" y1="362.00" x2="950" y2="362.00" class="grid" />
<text x="64" y="366.00" text-anchor="end" class="tick">0</text>
<line x1="72" y1="298.00" x2="950" y2="298.00" class="grid" />
<text x="64" y="302.00" text-anchor="end" class="tick">2.00e-04</text>
<line x1="72" y1="234.00" x2="950" y2="234.00" class="grid" />
<text x="64" y="238.00" text-anchor="end" class="tick">4.00e-04</text>
<line x1="72" y1="170.00" x2="950" y2="170.00" class="grid" />
<text x="64" y="174.00" text-anchor="end" class="tick">6.00e-04</text>
<line x1="72" y1="106.00" x2="950" y2="106.00" class="grid" />
<text x="64" y="110.00" text-anchor="end" class="tick">8.00e-04</text>
<line x1="72" y1="42.00" x2="950" y2="42.00" class="grid" />
<text x="64" y="46.00" text-anchor="end" class="tick">1.00e-03</text>
<line x1="72" y1="362" x2="950" y2="362" class="axis" />
<line x1="72" y1="42" x2="72" y2="362" class="axis" />
<text x="511" y="406" text-anchor="middle" class="label">input length, bytes/chars (log scale)</text>
<text transform="translate(18,202) rotate(-90)" text-anchor="middle" class="label">median collision rate</text>
<polyline points="72.00,42.00 218.33,362.00 364.67,362.00 511.00,362.00 657.33,42.00 803.67,362.00 950.00,362.00" fill="none" stroke="#1f77b4" stroke-width="2" stroke-linejoin="round" stroke-linecap="round" /><circle cx="72.00" cy="42.00" r="3" fill="#1f77b4" /><circle cx="218.33" cy="362.00" r="3" fill="#1f77b4" /><circle cx="364.67" cy="362.00" r="3" fill="#1f77b4" /><circle cx="511.00" cy="362.00" r="3" fill="#1f77b4" /><circle cx="657.33" cy="42.00" r="3" fill="#1f77b4" /><circle cx="803.67" cy="362.00" r="3" fill="#1f77b4" /><circle cx="950.00" cy="362.00" r="3" fill="#1f77b4" />
<polyline points="72.00,42.00 218.33,42.00 364.67,362.00 511.00,362.00 657.33,42.00 803.67,362.00 950.00,362.00" fill="none" stroke="#ff7f0e" stroke-width="2" stroke-linejoin="round" stroke-linecap="round" /><circle cx="72.00" cy="42.00" r="3" fill="#ff7f0e" /><circle cx="218.33" cy="42.00" r="3" fill="#ff7f0e" /><circle cx="364.67" cy="362.00" r="3" fill="#ff7f0e" /><circle cx="511.00" cy="362.00" r="3" fill="#ff7f0e" /><circle cx="657.33" cy="42.00" r="3" fill="#ff7f0e" /><circle cx="803.67" cy="362.00" r="3" fill="#ff7f0e" /><circle cx="950.00" cy="362.00" r="3" fill="#ff7f0e" />
<polyline points="72.00,42.00 218.33,362.00 364.67,362.00 511.00,362.00 657.33,42.00 803.67,42.00 950.00,362.00" fill="none" stroke="#2ca02c" stroke-width="2" stroke-linejoin="round" stroke-linecap="round" /><circle cx="72.00" cy="42.00" r="3" fill="#2ca02c" /><circle cx="218.33" cy="362.00" r="3" fill="#2ca02c" /><circle cx="364.67" cy="362.00" r="3" fill="#2ca02c" /><circle cx="511.00" cy="362.00" r="3" fill="#2ca02c" /><circle cx="657.33" cy="42.00" r="3" fill="#2ca02c" /><circle cx="803.67" cy="42.00" r="3" fill="#2ca02c" /><circle cx="950.00" cy="362.00" r="3" fill="#2ca02c" />
<polyline points="72.00,362.00 218.33,42.00 364.67,362.00 511.00,42.00 657.33,362.00 803.67,362.00 950.00,362.00" fill="none" stroke="#d62728" stroke-width="2" stroke-linejoin="round" stroke-linecap="round" /><circle cx="72.00" cy="362.00" r="3" fill="#d62728" /><circle cx="218.33" cy="42.00" r="3" fill="#d62728" /><circle cx="364.67" cy="362.00" r="3" fill="#d62728" /><circle cx="511.00" cy="42.00" r="3" fill="#d62728" /><circle cx="657.33" cy="362.00" r="3" fill="#d62728" /><circle cx="803.67" cy="362.00" r="3" fill="#d62728" /><circle cx="950.00" cy="362.00" r="3" fill="#d62728" />
<polyline points="72.00,362.00 218.33,42.00 364.67,362.00 511.00,362.00 657.33,362.00 803.67,42.00 950.00,362.00" fill="none" stroke="#9467bd" stroke-width="2" stroke-linejoin="round" stroke-linecap="round" /><circle cx="72.00" cy="362.00" r="3" fill="#9467bd" /><circle cx="218.33" cy="42.00" r="3" fill="#9467bd" /><circle cx="364.67" cy="362.00" r="3" fill="#9467bd" /><circle cx="511.00" cy="362.00" r="3" fill="#9467bd" /><circle cx="657.33" cy="362.00" r="3" fill="#9467bd" /><circle cx="803.67" cy="42.00" r="3" fill="#9467bd" /><circle cx="950.00" cy="362.00" r="3" fill="#9467bd" />
<polyline points="72.00,42.00 218.33,362.00 364.67,42.00 511.00,362.00 657.33,42.00 803.67,362.00 950.00,362.00" fill="none" stroke="#8c564b" stroke-width="2" stroke-linejoin="round" stroke-linecap="round" /><circle cx="72.00" cy="42.00" r="3" fill="#8c564b" /><circle cx="218.33" cy="362.00" r="3" fill="#8c564b" /><circle cx="364.67" cy="42.00" r="3" fill="#8c564b" /><circle cx="511.00" cy="362.00" r="3" fill="#8c564b" /><circle cx="657.33" cy="42.00" r="3" fill="#8c564b" /><circle cx="803.67" cy="362.00" r="3" fill="#8c564b" /><circle cx="950.00" cy="362.00" r="3" fill="#8c564b" />
<rect x="976" y="48" width="12" height="12" fill="#1f77b4" />
<text x="994" y="58" class="legend">xxh32</text>
<rect x="976" y="66" width="12" height="12" fill="#ff7f0e" />
<text x="994" y="76" class="legend">xxh64</text>
<rect x="976" y="84" width="12" height="12" fill="#2ca02c" />
<text x="994" y="94" class="legend">xxh3_64</text>
<rect x="976" y="102" width="12" height="12" fill="#d62728" />
<text x="994" y="112" class="legend">city32</text>
<rect x="976" y="120" width="12" height="12" fill="#9467bd" />
<text x="994" y="130" class="legend">city64</text>
<rect x="976" y="138" width="12" height="12" fill="#8c564b" />
<text x="994" y="148" class="legend">joaat</text>
</g></g>
<g transform="translate(0,1680)"><g class="chart">
<text x="550" y="22" text-anchor="middle" class="title">Random a-zA-Z strings: 24-bit truncated hash collision rate</text>
<rect x="72" y="42" width="878" height="320" class="plot-bg" />
<line x1="72.00" y1="42" x2="72.00" y2="362" class="grid" />
<text x="72.00" y="380" text-anchor="middle" class="tick">4</text>
<line x1="218.33" y1="42" x2="218.33" y2="362" class="grid" />
<text x="218.33" y="380" text-anchor="middle" class="tick">8</text>
<line x1="364.67" y1="42" x2="364.67" y2="362" class="grid" />
<text x="364.67" y="380" text-anchor="middle" class="tick">16</text>
<line x1="511.00" y1="42" x2="511.00" y2="362" class="grid" />
<text x="511.00" y="380" text-anchor="middle" class="tick">32</text>
<line x1="657.33" y1="42" x2="657.33" y2="362" class="grid" />
<text x="657.33" y="380" text-anchor="middle" class="tick">64</text>
<line x1="803.67" y1="42" x2="803.67" y2="362" class="grid" />
<text x="803.67" y="380" text-anchor="middle" class="tick">128</text>
<line x1="950.00" y1="42" x2="950.00" y2="362" class="grid" />
<text x="950.00" y="380" text-anchor="middle" class="tick">256</text>
<line x1="72" y1="362.00" x2="950" y2="362.00" class="grid" />
<text x="64" y="366.00" text-anchor="end" class="tick">0</text>
<line x1="72" y1="298.00" x2="950" y2="298.00" class="grid" />
<text x="64" y="302.00" text-anchor="end" class="tick">2.00e-04</text>
<line x1="72" y1="234.00" x2="950" y2="234.00" class="grid" />
<text x="64" y="238.00" text-anchor="end" class="tick">4.00e-04</text>
<line x1="72" y1="170.00" x2="950" y2="170.00" class="grid" />
<text x="64" y="174.00" text-anchor="end" class="tick">6.00e-04</text>
<line x1="72" y1="106.00" x2="950" y2="106.00" class="grid" />
<text x="64" y="110.00" text-anchor="end" class="tick">8.00e-04</text>
<line x1="72" y1="42.00" x2="950" y2="42.00" class="grid" />
<text x="64" y="46.00" text-anchor="end" class="tick">1.00e-03</text>
<line x1="72" y1="362" x2="950" y2="362" class="axis" />
<line x1="72" y1="42" x2="72" y2="362" class="axis" />
<text x="511" y="406" text-anchor="middle" class="label">input length, bytes/chars (log scale)</text>
<text transform="translate(18,202) rotate(-90)" text-anchor="middle" class="label">median collision rate</text>
<polyline points="72.00,362.00 218.33,362.00 364.67,362.00 511.00,362.00 657.33,362.00 803.67,362.00 950.00,362.00" fill="none" stroke="#1f77b4" stroke-width="2" stroke-linejoin="round" stroke-linecap="round" /><circle cx="72.00" cy="362.00" r="3" fill="#1f77b4" /><circle cx="218.33" cy="362.00" r="3" fill="#1f77b4" /><circle cx="364.67" cy="362.00" r="3" fill="#1f77b4" /><circle cx="511.00" cy="362.00" r="3" fill="#1f77b4" /><circle cx="657.33" cy="362.00" r="3" fill="#1f77b4" /><circle cx="803.67" cy="362.00" r="3" fill="#1f77b4" /><circle cx="950.00" cy="362.00" r="3" fill="#1f77b4" />
<polyline points="72.00,362.00 218.33,362.00 364.67,362.00 511.00,362.00 657.33,362.00 803.67,362.00 950.00,362.00" fill="none" stroke="#ff7f0e" stroke-width="2" stroke-linejoin="round" stroke-linecap="round" /><circle cx="72.00" cy="362.00" r="3" fill="#ff7f0e" /><circle cx="218.33" cy="362.00" r="3" fill="#ff7f0e" /><circle cx="364.67" cy="362.00" r="3" fill="#ff7f0e" /><circle cx="511.00" cy="362.00" r="3" fill="#ff7f0e" /><circle cx="657.33" cy="362.00" r="3" fill="#ff7f0e" /><circle cx="803.67" cy="362.00" r="3" fill="#ff7f0e" /><circle cx="950.00" cy="362.00" r="3" fill="#ff7f0e" />
<polyline points="72.00,362.00 218.33,362.00 364.67,362.00 511.00,362.00 657.33,362.00 803.67,362.00 950.00,362.00" fill="none" stroke="#2ca02c" stroke-width="2" stroke-linejoin="round" stroke-linecap="round" /><circle cx="72.00" cy="362.00" r="3" fill="#2ca02c" /><circle cx="218.33" cy="362.00" r="3" fill="#2ca02c" /><circle cx="364.67" cy="362.00" r="3" fill="#2ca02c" /><circle cx="511.00" cy="362.00" r="3" fill="#2ca02c" /><circle cx="657.33" cy="362.00" r="3" fill="#2ca02c" /><circle cx="803.67" cy="362.00" r="3" fill="#2ca02c" /><circle cx="950.00" cy="362.00" r="3" fill="#2ca02c" />
<polyline points="72.00,362.00 218.33,362.00 364.67,362.00 511.00,362.00 657.33,362.00 803.67,362.00 950.00,362.00" fill="none" stroke="#d62728" stroke-width="2" stroke-linejoin="round" stroke-linecap="round" /><circle cx="72.00" cy="362.00" r="3" fill="#d62728" /><circle cx="218.33" cy="362.00" r="3" fill="#d62728" /><circle cx="364.67" cy="362.00" r="3" fill="#d62728" /><circle cx="511.00" cy="362.00" r="3" fill="#d62728" /><circle cx="657.33" cy="362.00" r="3" fill="#d62728" /><circle cx="803.67" cy="362.00" r="3" fill="#d62728" /><circle cx="950.00" cy="362.00" r="3" fill="#d62728" />
<polyline points="72.00,362.00 218.33,362.00 364.67,362.00 511.00,362.00 657.33,362.00 803.67,362.00 950.00,362.00" fill="none" stroke="#9467bd" stroke-width="2" stroke-linejoin="round" stroke-linecap="round" /><circle cx="72.00" cy="362.00" r="3" fill="#9467bd" /><circle cx="218.33" cy="362.00" r="3" fill="#9467bd" /><circle cx="364.67" cy="362.00" r="3" fill="#9467bd" /><circle cx="511.00" cy="362.00" r="3" fill="#9467bd" /><circle cx="657.33" cy="362.00" r="3" fill="#9467bd" /><circle cx="803.67" cy="362.00" r="3" fill="#9467bd" /><circle cx="950.00" cy="362.00" r="3" fill="#9467bd" />
<polyline points="72.00,42.00 218.33,362.00 364.67,362.00 511.00,362.00 657.33,362.00 803.67,362.00 950.00,362.00" fill="none" stroke="#8c564b" stroke-width="2" stroke-linejoin="round" stroke-linecap="round" /><circle cx="72.00" cy="42.00" r="3" fill="#8c564b" /><circle cx="218.33" cy="362.00" r="3" fill="#8c564b" /><circle cx="364.67" cy="362.00" r="3" fill="#8c564b" /><circle cx="511.00" cy="362.00" r="3" fill="#8c564b" /><circle cx="657.33" cy="362.00" r="3" fill="#8c564b" /><circle cx="803.67" cy="362.00" r="3" fill="#8c564b" /><circle cx="950.00" cy="362.00" r="3" fill="#8c564b" />
<rect x="976" y="48" width="12" height="12" fill="#1f77b4" />
<text x="994" y="58" class="legend">xxh32</text>
<rect x="976" y="66" width="12" height="12" fill="#ff7f0e" />
<text x="994" y="76" class="legend">xxh64</text>
<rect x="976" y="84" width="12" height="12" fill="#2ca02c" />
<text x="994" y="94" class="legend">xxh3_64</text>
<rect x="976" y="102" width="12" height="12" fill="#d62728" />
<text x="994" y="112" class="legend">city32</text>
<rect x="976" y="120" width="12" height="12" fill="#9467bd" />
<text x="994" y="130" class="legend">city64</text>
<rect x="976" y="138" width="12" height="12" fill="#8c564b" />
<text x="994" y="148" class="legend">joaat</text>
</g></g>
<g transform="translate(0,2100)"><g class="chart">
<text x="550" y="22" text-anchor="middle" class="title">Random a-zA-Z strings: 32-bit truncated hash collision rate</text>
<rect x="72" y="42" width="878" height="320" class="plot-bg" />
<line x1="72.00" y1="42" x2="72.00" y2="362" class="grid" />
<text x="72.00" y="380" text-anchor="middle" class="tick">4</text>
<line x1="218.33" y1="42" x2="218.33" y2="362" class="grid" />
<text x="218.33" y="380" text-anchor="middle" class="tick">8</text>
<line x1="364.67" y1="42" x2="364.67" y2="362" class="grid" />
<text x="364.67" y="380" text-anchor="middle" class="tick">16</text>
<line x1="511.00" y1="42" x2="511.00" y2="362" class="grid" />
<text x="511.00" y="380" text-anchor="middle" class="tick">32</text>
<line x1="657.33" y1="42" x2="657.33" y2="362" class="grid" />
<text x="657.33" y="380" text-anchor="middle" class="tick">64</text>
<line x1="803.67" y1="42" x2="803.67" y2="362" class="grid" />
<text x="803.67" y="380" text-anchor="middle" class="tick">128</text>
<line x1="950.00" y1="42" x2="950.00" y2="362" class="grid" />
<text x="950.00" y="380" text-anchor="middle" class="tick">256</text>
<line x1="72" y1="202.00" x2="950" y2="202.00" class="grid" />
<text x="64" y="206.00" text-anchor="end" class="tick">0</text>
<line x1="72" y1="362" x2="950" y2="362" class="axis" />
<line x1="72" y1="42" x2="72" y2="362" class="axis" />
<text x="511" y="406" text-anchor="middle" class="label">input length, bytes/chars (log scale)</text>
<text transform="translate(18,202) rotate(-90)" text-anchor="middle" class="label">median collision rate</text>
<polyline points="72.00,202.00 218.33,202.00 364.67,202.00 511.00,202.00 657.33,202.00 803.67,202.00 950.00,202.00" fill="none" stroke="#1f77b4" stroke-width="2" stroke-linejoin="round" stroke-linecap="round" /><circle cx="72.00" cy="202.00" r="3" fill="#1f77b4" /><circle cx="218.33" cy="202.00" r="3" fill="#1f77b4" /><circle cx="364.67" cy="202.00" r="3" fill="#1f77b4" /><circle cx="511.00" cy="202.00" r="3" fill="#1f77b4" /><circle cx="657.33" cy="202.00" r="3" fill="#1f77b4" /><circle cx="803.67" cy="202.00" r="3" fill="#1f77b4" /><circle cx="950.00" cy="202.00" r="3" fill="#1f77b4" />
<polyline points="72.00,202.00 218.33,202.00 364.67,202.00 511.00,202.00 657.33,202.00 803.67,202.00 950.00,202.00" fill="none" stroke="#ff7f0e" stroke-width="2" stroke-linejoin="round" stroke-linecap="round" /><circle cx="72.00" cy="202.00" r="3" fill="#ff7f0e" /><circle cx="218.33" cy="202.00" r="3" fill="#ff7f0e" /><circle cx="364.67" cy="202.00" r="3" fill="#ff7f0e" /><circle cx="511.00" cy="202.00" r="3" fill="#ff7f0e" /><circle cx="657.33" cy="202.00" r="3" fill="#ff7f0e" /><circle cx="803.67" cy="202.00" r="3" fill="#ff7f0e" /><circle cx="950.00" cy="202.00" r="3" fill="#ff7f0e" />
<polyline points="72.00,202.00 218.33,202.00 364.67,202.00 511.00,202.00 657.33,202.00 803.67,202.00 950.00,202.00" fill="none" stroke="#2ca02c" stroke-width="2" stroke-linejoin="round" stroke-linecap="round" /><circle cx="72.00" cy="202.00" r="3" fill="#2ca02c" /><circle cx="218.33" cy="202.00" r="3" fill="#2ca02c" /><circle cx="364.67" cy="202.00" r="3" fill="#2ca02c" /><circle cx="511.00" cy="202.00" r="3" fill="#2ca02c" /><circle cx="657.33" cy="202.00" r="3" fill="#2ca02c" /><circle cx="803.67" cy="202.00" r="3" fill="#2ca02c" /><circle cx="950.00" cy="202.00" r="3" fill="#2ca02c" />
<polyline points="72.00,202.00 218.33,202.00 364.67,202.00 511.00,202.00 657.33,202.00 803.67,202.00 950.00,202.00" fill="none" stroke="#d62728" stroke-width="2" stroke-linejoin="round" stroke-linecap="round" /><circle cx="72.00" cy="202.00" r="3" fill="#d62728" /><circle cx="218.33" cy="202.00" r="3" fill="#d62728" /><circle cx="364.67" cy="202.00" r="3" fill="#d62728" /><circle cx="511.00" cy="202.00" r="3" fill="#d62728" /><circle cx="657.33" cy="202.00" r="3" fill="#d62728" /><circle cx="803.67" cy="202.00" r="3" fill="#d62728" /><circle cx="950.00" cy="202.00" r="3" fill="#d62728" />
<polyline points="72.00,202.00 218.33,202.00 364.67,202.00 511.00,202.00 657.33,202.00 803.67,202.00 950.00,202.00" fill="none" stroke="#9467bd" stroke-width="2" stroke-linejoin="round" stroke-linecap="round" /><circle cx="72.00" cy="202.00" r="3" fill="#9467bd" /><circle cx="218.33" cy="202.00" r="3" fill="#9467bd" /><circle cx="364.67" cy="202.00" r="3" fill="#9467bd" /><circle cx="511.00" cy="202.00" r="3" fill="#9467bd" /><circle cx="657.33" cy="202.00" r="3" fill="#9467bd" /><circle cx="803.67" cy="202.00" r="3" fill="#9467bd" /><circle cx="950.00" cy="202.00" r="3" fill="#9467bd" />
<polyline points="72.00,202.00 218.33,202.00 364.67,202.00 511.00,202.00 657.33,202.00 803.67,202.00 950.00,202.00" fill="none" stroke="#8c564b" stroke-width="2" stroke-linejoin="round" stroke-linecap="round" /><circle cx="72.00" cy="202.00" r="3" fill="#8c564b" /><circle cx="218.33" cy="202.00" r="3" fill="#8c564b" /><circle cx="364.67" cy="202.00" r="3" fill="#8c564b" /><circle cx="511.00" cy="202.00" r="3" fill="#8c564b" /><circle cx="657.33" cy="202.00" r="3" fill="#8c564b" /><circle cx="803.67" cy="202.00" r="3" fill="#8c564b" /><circle cx="950.00" cy="202.00" r="3" fill="#8c564b" />
<rect x="976" y="48" width="12" height="12" fill="#1f77b4" />
<text x="994" y="58" class="legend">xxh32</text>
<rect x="976" y="66" width="12" height="12" fill="#ff7f0e" />
<text x="994" y="76" class="legend">xxh64</text>
<rect x="976" y="84" width="12" height="12" fill="#2ca02c" />
<text x="994" y="94" class="legend">xxh3_64</text>
<rect x="976" y="102" width="12" height="12" fill="#d62728" />
<text x="994" y="112" class="legend">city32</text>
<rect x="976" y="120" width="12" height="12" fill="#9467bd" />
<text x="994" y="130" class="legend">city64</text>
<rect x="976" y="138" width="12" height="12" fill="#8c564b" />
<text x="994" y="148" class="legend">joaat</text>
</g></g>
</svg>

After

Width:  |  Height:  |  Size: 38 KiB

+72
View File
@@ -0,0 +1,72 @@
<svg xmlns="http://www.w3.org/2000/svg" width="1100" height="620" viewBox="0 0 1100 620">
<style>
.title { font: 700 18px sans-serif; fill: #111; }
.label { font: 13px sans-serif; fill: #222; }
.tick { font: 11px sans-serif; fill: #555; }
.legend { font: 12px monospace; fill: #222; }
.axis { stroke: #333; stroke-width: 1.2; }
.grid { stroke: #ddd; stroke-width: 0.8; }
.plot-bg { fill: #fff; stroke: #bbb; stroke-width: 1; }
</style>
<rect width="100%" height="100%" fill="#fff" />
<g class="chart">
<text x="550" y="22" text-anchor="middle" class="title">Hash speed on random bytes (median GiB/s)</text>
<rect x="72" y="42" width="878" height="520" class="plot-bg" />
<line x1="72.00" y1="42" x2="72.00" y2="562" class="grid" />
<text x="72.00" y="580" text-anchor="middle" class="tick">1</text>
<line x1="159.80" y1="42" x2="159.80" y2="562" class="grid" />
<text x="159.80" y="580" text-anchor="middle" class="tick">4</text>
<line x1="203.70" y1="42" x2="203.70" y2="562" class="grid" />
<text x="203.70" y="580" text-anchor="middle" class="tick">8</text>
<line x1="247.60" y1="42" x2="247.60" y2="562" class="grid" />
<text x="247.60" y="580" text-anchor="middle" class="tick">16</text>
<line x1="291.50" y1="42" x2="291.50" y2="562" class="grid" />
<text x="291.50" y="580" text-anchor="middle" class="tick">32</text>
<line x1="335.40" y1="42" x2="335.40" y2="562" class="grid" />
<text x="335.40" y="580" text-anchor="middle" class="tick">64</text>
<line x1="379.30" y1="42" x2="379.30" y2="562" class="grid" />
<text x="379.30" y="580" text-anchor="middle" class="tick">128</text>
<line x1="423.20" y1="42" x2="423.20" y2="562" class="grid" />
<text x="423.20" y="580" text-anchor="middle" class="tick">256</text>
<line x1="511.00" y1="42" x2="511.00" y2="562" class="grid" />
<text x="511.00" y="580" text-anchor="middle" class="tick">1024</text>
<line x1="598.80" y1="42" x2="598.80" y2="562" class="grid" />
<text x="598.80" y="580" text-anchor="middle" class="tick">4096</text>
<line x1="686.60" y1="42" x2="686.60" y2="562" class="grid" />
<text x="686.60" y="580" text-anchor="middle" class="tick">1.64e+04</text>
<line x1="774.40" y1="42" x2="774.40" y2="562" class="grid" />
<text x="774.40" y="580" text-anchor="middle" class="tick">6.55e+04</text>
<line x1="950.00" y1="42" x2="950.00" y2="562" class="grid" />
<text x="950.00" y="580" text-anchor="middle" class="tick">1.05e+06</text>
<line x1="72" y1="562.00" x2="950" y2="562.00" class="grid" />
<text x="64" y="566.00" text-anchor="end" class="tick">0</text>
<line x1="72" y1="396.83" x2="950" y2="396.83" class="grid" />
<text x="64" y="400.83" text-anchor="end" class="tick">5</text>
<line x1="72" y1="231.65" x2="950" y2="231.65" class="grid" />
<text x="64" y="235.65" text-anchor="end" class="tick">10</text>
<line x1="72" y1="66.48" x2="950" y2="66.48" class="grid" />
<text x="64" y="70.48" text-anchor="end" class="tick">15</text>
<line x1="72" y1="562" x2="950" y2="562" class="axis" />
<line x1="72" y1="42" x2="72" y2="562" class="axis" />
<text x="511" y="606" text-anchor="middle" class="label">input length, bytes (log scale)</text>
<text transform="translate(18,302) rotate(-90)" text-anchor="middle" class="label">median GiB/s</text>
<polyline points="72.00,555.66 159.80,537.55 203.70,516.71 247.60,498.82 291.50,476.85 335.40,437.57 379.30,435.32 423.20,409.49 511.00,391.00 598.80,387.21 686.60,388.12 774.40,429.67 950.00,412.95" fill="none" stroke="#1f77b4" stroke-width="2" stroke-linejoin="round" stroke-linecap="round" /><circle cx="72.00" cy="555.66" r="3" fill="#1f77b4" /><circle cx="159.80" cy="537.55" r="3" fill="#1f77b4" /><circle cx="203.70" cy="516.71" r="3" fill="#1f77b4" /><circle cx="247.60" cy="498.82" r="3" fill="#1f77b4" /><circle cx="291.50" cy="476.85" r="3" fill="#1f77b4" /><circle cx="335.40" cy="437.57" r="3" fill="#1f77b4" /><circle cx="379.30" cy="435.32" r="3" fill="#1f77b4" /><circle cx="423.20" cy="409.49" r="3" fill="#1f77b4" /><circle cx="511.00" cy="391.00" r="3" fill="#1f77b4" /><circle cx="598.80" cy="387.21" r="3" fill="#1f77b4" /><circle cx="686.60" cy="388.12" r="3" fill="#1f77b4" /><circle cx="774.40" cy="429.67" r="3" fill="#1f77b4" /><circle cx="950.00" cy="412.95" r="3" fill="#1f77b4" />
<polyline points="72.00,558.28 159.80,548.97 203.70,523.86 247.60,496.69 291.50,491.97 335.40,448.11 379.30,388.26 423.20,359.36 511.00,280.00 598.80,260.11 686.60,308.90 774.40,257.71 950.00,261.83" fill="none" stroke="#ff7f0e" stroke-width="2" stroke-linejoin="round" stroke-linecap="round" /><circle cx="72.00" cy="558.28" r="3" fill="#ff7f0e" /><circle cx="159.80" cy="548.97" r="3" fill="#ff7f0e" /><circle cx="203.70" cy="523.86" r="3" fill="#ff7f0e" /><circle cx="247.60" cy="496.69" r="3" fill="#ff7f0e" /><circle cx="291.50" cy="491.97" r="3" fill="#ff7f0e" /><circle cx="335.40" cy="448.11" r="3" fill="#ff7f0e" /><circle cx="379.30" cy="388.26" r="3" fill="#ff7f0e" /><circle cx="423.20" cy="359.36" r="3" fill="#ff7f0e" /><circle cx="511.00" cy="280.00" r="3" fill="#ff7f0e" /><circle cx="598.80" cy="260.11" r="3" fill="#ff7f0e" /><circle cx="686.60" cy="308.90" r="3" fill="#ff7f0e" /><circle cx="774.40" cy="257.71" r="3" fill="#ff7f0e" /><circle cx="950.00" cy="261.83" r="3" fill="#ff7f0e" />
<polyline points="72.00,556.47 159.80,530.81 203.70,499.64 247.60,447.64 291.50,424.62 335.40,356.05 379.30,256.66 423.20,285.10 511.00,107.02 598.80,55.59 686.60,42.00 774.40,173.36 950.00,136.75" fill="none" stroke="#2ca02c" stroke-width="2" stroke-linejoin="round" stroke-linecap="round" /><circle cx="72.00" cy="556.47" r="3" fill="#2ca02c" /><circle cx="159.80" cy="530.81" r="3" fill="#2ca02c" /><circle cx="203.70" cy="499.64" r="3" fill="#2ca02c" /><circle cx="247.60" cy="447.64" r="3" fill="#2ca02c" /><circle cx="291.50" cy="424.62" r="3" fill="#2ca02c" /><circle cx="335.40" cy="356.05" r="3" fill="#2ca02c" /><circle cx="379.30" cy="256.66" r="3" fill="#2ca02c" /><circle cx="423.20" cy="285.10" r="3" fill="#2ca02c" /><circle cx="511.00" cy="107.02" r="3" fill="#2ca02c" /><circle cx="598.80" cy="55.59" r="3" fill="#2ca02c" /><circle cx="686.60" cy="42.00" r="3" fill="#2ca02c" /><circle cx="774.40" cy="173.36" r="3" fill="#2ca02c" /><circle cx="950.00" cy="136.75" r="3" fill="#2ca02c" />
<polyline points="72.00,557.33 159.80,547.72 203.70,530.36 247.60,514.68 291.50,503.06 335.40,485.10 379.30,457.87 423.20,436.61 511.00,426.55 598.80,415.88 686.60,416.08 774.40,422.04 950.00,419.91" fill="none" stroke="#d62728" stroke-width="2" stroke-linejoin="round" stroke-linecap="round" /><circle cx="72.00" cy="557.33" r="3" fill="#d62728" /><circle cx="159.80" cy="547.72" r="3" fill="#d62728" /><circle cx="203.70" cy="530.36" r="3" fill="#d62728" /><circle cx="247.60" cy="514.68" r="3" fill="#d62728" /><circle cx="291.50" cy="503.06" r="3" fill="#d62728" /><circle cx="335.40" cy="485.10" r="3" fill="#d62728" /><circle cx="379.30" cy="457.87" r="3" fill="#d62728" /><circle cx="423.20" cy="436.61" r="3" fill="#d62728" /><circle cx="511.00" cy="426.55" r="3" fill="#d62728" /><circle cx="598.80" cy="415.88" r="3" fill="#d62728" /><circle cx="686.60" cy="416.08" r="3" fill="#d62728" /><circle cx="774.40" cy="422.04" r="3" fill="#d62728" /><circle cx="950.00" cy="419.91" r="3" fill="#d62728" />
<polyline points="72.00,555.41 159.80,530.83 203.70,504.98 247.60,447.76 291.50,340.61 335.40,331.69 379.30,346.88 423.20,287.25 511.00,212.30 598.80,188.65 686.60,191.14 774.40,236.69 950.00,245.34" fill="none" stroke="#9467bd" stroke-width="2" stroke-linejoin="round" stroke-linecap="round" /><circle cx="72.00" cy="555.41" r="3" fill="#9467bd" /><circle cx="159.80" cy="530.83" r="3" fill="#9467bd" /><circle cx="203.70" cy="504.98" r="3" fill="#9467bd" /><circle cx="247.60" cy="447.76" r="3" fill="#9467bd" /><circle cx="291.50" cy="340.61" r="3" fill="#9467bd" /><circle cx="335.40" cy="331.69" r="3" fill="#9467bd" /><circle cx="379.30" cy="346.88" r="3" fill="#9467bd" /><circle cx="423.20" cy="287.25" r="3" fill="#9467bd" /><circle cx="511.00" cy="212.30" r="3" fill="#9467bd" /><circle cx="598.80" cy="188.65" r="3" fill="#9467bd" /><circle cx="686.60" cy="191.14" r="3" fill="#9467bd" /><circle cx="774.40" cy="236.69" r="3" fill="#9467bd" /><circle cx="950.00" cy="245.34" r="3" fill="#9467bd" />
<polyline points="72.00,554.88 159.80,543.93 203.70,539.24 247.60,539.96 291.50,542.69 335.40,544.56 379.30,544.36 423.20,544.07 511.00,544.46 598.80,544.36 686.60,543.54 774.40,544.09 950.00,544.19" fill="none" stroke="#8c564b" stroke-width="2" stroke-linejoin="round" stroke-linecap="round" /><circle cx="72.00" cy="554.88" r="3" fill="#8c564b" /><circle cx="159.80" cy="543.93" r="3" fill="#8c564b" /><circle cx="203.70" cy="539.24" r="3" fill="#8c564b" /><circle cx="247.60" cy="539.96" r="3" fill="#8c564b" /><circle cx="291.50" cy="542.69" r="3" fill="#8c564b" /><circle cx="335.40" cy="544.56" r="3" fill="#8c564b" /><circle cx="379.30" cy="544.36" r="3" fill="#8c564b" /><circle cx="423.20" cy="544.07" r="3" fill="#8c564b" /><circle cx="511.00" cy="544.46" r="3" fill="#8c564b" /><circle cx="598.80" cy="544.36" r="3" fill="#8c564b" /><circle cx="686.60" cy="543.54" r="3" fill="#8c564b" /><circle cx="774.40" cy="544.09" r="3" fill="#8c564b" /><circle cx="950.00" cy="544.19" r="3" fill="#8c564b" />
<rect x="976" y="48" width="12" height="12" fill="#1f77b4" />
<text x="994" y="58" class="legend">xxh32</text>
<rect x="976" y="66" width="12" height="12" fill="#ff7f0e" />
<text x="994" y="76" class="legend">xxh64</text>
<rect x="976" y="84" width="12" height="12" fill="#2ca02c" />
<text x="994" y="94" class="legend">xxh3_64</text>
<rect x="976" y="102" width="12" height="12" fill="#d62728" />
<text x="994" y="112" class="legend">city32</text>
<rect x="976" y="120" width="12" height="12" fill="#9467bd" />
<text x="994" y="130" class="legend">city64</text>
<rect x="976" y="138" width="12" height="12" fill="#8c564b" />
<text x="994" y="148" class="legend">joaat</text>
</g>
</svg>

After

Width:  |  Height:  |  Size: 9.7 KiB