diff --git a/comparison/README.md b/comparison/README.md
index 5bd5f11dc..73b6b73d0 100644
--- a/comparison/README.md
+++ b/comparison/README.md
@@ -19,15 +19,15 @@ graphs are boring flat lines, so a table is used instead.
| Implementation | Throughput (GiB/s) |
|----------------|--------------------|
-| Rust | 13.5 |
-| C | 13.5 |
+| Rust | 13.4 |
+| C | 13.4 |
## x86_64
| Implementation | Throughput (GiB/s) |
|----------------|--------------------|
-| Rust | 16.5 |
-| C | 16.5 |
+| Rust | 16.7 |
+| C | 16.6 |
## Streaming data
@@ -75,7 +75,6 @@ Compares the **time taken** to hash 0 to 32 bytes of data.
/>
-
# xxHash3 (64-bit)
## Oneshot hashing
@@ -88,20 +87,21 @@ graphs are boring flat lines, so a table is used instead.
| Implementation | Throughput (GiB/s) |
|----------------|--------------------|
-| Rust | 35.2 |
+| Rust | 35.0 |
| C | 35.0 |
| C (scalar) | 21.2 |
-| C (NEON) | 35.1 |
+| C (NEON) | 35.0 |
### x86_64
| Implementation | Throughput (GiB/s) |
|----------------|--------------------|
-| Rust | 58.6 |
-| C | 25.0 |
-| C (scalar) | 7.5 |
+| Rust | 58.9 |
+| C | 25.1 |
+| C (scalar) | 7.6 |
| C (SSE2) | 25.1 |
-| C (AVX2) | 57.8 |
+| C (AVX2) | 58.4 |
+
## Streaming data
@@ -150,6 +150,78 @@ cluttering the graph and wasting benchmarking time.
/>
+# xxHash3 (128-bit)
+
+## Oneshot hashing
+
+Compares the **speed** of hashing an entire buffer of data in one
+function call. Data sizes from 256 KiB to 4 MiB are tested. These
+graphs are boring flat lines, so a table is used instead.
+
+| Implementation | Throughput (GiB/s) |
+|----------------|--------------------|
+| Rust | 34.4 |
+| C | 34.8 |
+| C (scalar) | 21.3 |
+| C (NEON) | 34.6 |
+
+### x86_64
+
+| Implementation | Throughput (GiB/s) |
+|----------------|--------------------|
+| Rust | 58.3 |
+| C | 25.6 |
+| C (scalar) | 7.6 |
+| C (SSE2) | 25.5 |
+| C (AVX2) | 57.4 |
+
+## Streaming data
+
+Compares the **speed** of hashing a 1 MiB buffer of data split into
+various chunk sizes.
+
+### aarch64
+
+
+
+
+
+### x86_64
+
+
+
+
+
+## Small amounts of data
+
+Compares the **time taken** to hash 0 to 230 bytes of
+data. Representative samples are taken from similar times to avoid
+cluttering the graph and wasting benchmarking time.
+
+### aarch64
+
+
+
+
+
+### x86_64
+
+
+
+
+
# Benchmark machines
## Overview
@@ -159,7 +231,7 @@ cluttering the graph and wasting benchmarking time.
| Apple M1 Max | 64 GiB | clang 16.0.0 |
| AMD Ryzen 9 3950X | 32 GiB | cl.exe 19.41.34120 |
-Tests were run with `rustc 1.81.0 (eeb90cda1 2024-09-04)`.
+Tests were run with `rustc 1.82.0 (f6e511eec 2024-10-15)`.
## Details
diff --git a/comparison/results/xxhash3_128-streaming-aarch64.svg b/comparison/results/xxhash3_128-streaming-aarch64.svg
new file mode 100644
index 000000000..15cb7e2ce
--- /dev/null
+++ b/comparison/results/xxhash3_128-streaming-aarch64.svg
@@ -0,0 +1,174 @@
+
diff --git a/comparison/results/xxhash3_128-streaming-x86_64.svg b/comparison/results/xxhash3_128-streaming-x86_64.svg
new file mode 100644
index 000000000..7ec2719a4
--- /dev/null
+++ b/comparison/results/xxhash3_128-streaming-x86_64.svg
@@ -0,0 +1,200 @@
+
diff --git a/comparison/results/xxhash3_128-tiny_data-aarch64.svg b/comparison/results/xxhash3_128-tiny_data-aarch64.svg
new file mode 100644
index 000000000..8d66f2958
--- /dev/null
+++ b/comparison/results/xxhash3_128-tiny_data-aarch64.svg
@@ -0,0 +1,122 @@
+
diff --git a/comparison/results/xxhash3_128-tiny_data-x86_64.svg b/comparison/results/xxhash3_128-tiny_data-x86_64.svg
new file mode 100644
index 000000000..a16135f96
--- /dev/null
+++ b/comparison/results/xxhash3_128-tiny_data-x86_64.svg
@@ -0,0 +1,142 @@
+
diff --git a/comparison/results/xxhash3_64-streaming-aarch64.svg b/comparison/results/xxhash3_64-streaming-aarch64.svg
index dc46b30db..a8075662e 100644
--- a/comparison/results/xxhash3_64-streaming-aarch64.svg
+++ b/comparison/results/xxhash3_64-streaming-aarch64.svg
@@ -21,94 +21,94 @@
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
8 MiB/sec
diff --git a/comparison/results/xxhash3_64-streaming-x86_64.svg b/comparison/results/xxhash3_64-streaming-x86_64.svg
index 6a3997ed9..938d03d94 100644
--- a/comparison/results/xxhash3_64-streaming-x86_64.svg
+++ b/comparison/results/xxhash3_64-streaming-x86_64.svg
@@ -21,116 +21,116 @@
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
8 MiB/sec
diff --git a/comparison/results/xxhash3_64-tiny_data-aarch64.svg b/comparison/results/xxhash3_64-tiny_data-aarch64.svg
index 753a36cc5..d4154de35 100644
--- a/comparison/results/xxhash3_64-tiny_data-aarch64.svg
+++ b/comparison/results/xxhash3_64-tiny_data-aarch64.svg
@@ -20,80 +20,79 @@
-
-
-
-
-
-
-
-
-
-
+
+
+
+
+
+
+
+
+
+
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
- 4ns
- 8ns
- 12ns
- 16ns
- 20ns
-
+ 4ns
+ 8ns
+ 12ns
+ 16ns
+
0 B
50 B
100 B
diff --git a/comparison/results/xxhash3_64-tiny_data-x86_64.svg b/comparison/results/xxhash3_64-tiny_data-x86_64.svg
index 81b4fc317..a29058139 100644
--- a/comparison/results/xxhash3_64-tiny_data-x86_64.svg
+++ b/comparison/results/xxhash3_64-tiny_data-x86_64.svg
@@ -20,96 +20,95 @@
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
-
-
-
-
-
+
+
+
+
+
- 4ns
- 8ns
- 12ns
- 16ns
- 20ns
-
+ 4ns
+ 8ns
+ 12ns
+ 16ns
+
0 B
50 B
100 B
diff --git a/comparison/results/xxhash64-streaming-aarch64.svg b/comparison/results/xxhash64-streaming-aarch64.svg
index 1f58161a6..ba0b061e3 100644
--- a/comparison/results/xxhash64-streaming-aarch64.svg
+++ b/comparison/results/xxhash64-streaming-aarch64.svg
@@ -20,63 +20,62 @@
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
- 128 MiB/sec
- 256 MiB/sec
- 512 MiB/sec
- 1 GiB/sec
- 2 GiB/sec
- 4 GiB/sec
- 8 GiB/sec
- 16 GiB/sec
+ 256 MiB/sec
+ 512 MiB/sec
+ 1 GiB/sec
+ 2 GiB/sec
+ 4 GiB/sec
+ 8 GiB/sec
+ 16 GiB/sec
32 GiB/sec
-
+
1 B
2 B
4 B
diff --git a/comparison/results/xxhash64-streaming-x86_64.svg b/comparison/results/xxhash64-streaming-x86_64.svg
index 064188466..a2223dac3 100644
--- a/comparison/results/xxhash64-streaming-x86_64.svg
+++ b/comparison/results/xxhash64-streaming-x86_64.svg
@@ -20,63 +20,62 @@
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
- 128 MiB/sec
- 256 MiB/sec
- 512 MiB/sec
- 1 GiB/sec
- 2 GiB/sec
- 4 GiB/sec
- 8 GiB/sec
- 16 GiB/sec
+ 256 MiB/sec
+ 512 MiB/sec
+ 1 GiB/sec
+ 2 GiB/sec
+ 4 GiB/sec
+ 8 GiB/sec
+ 16 GiB/sec
32 GiB/sec
-
+
1 B
2 B
4 B
diff --git a/comparison/results/xxhash64-tiny_data-aarch64.svg b/comparison/results/xxhash64-tiny_data-aarch64.svg
index df15121a7..34b041ab4 100644
--- a/comparison/results/xxhash64-tiny_data-aarch64.svg
+++ b/comparison/results/xxhash64-tiny_data-aarch64.svg
@@ -20,84 +20,83 @@
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
- 0
- 2ns
- 4ns
- 6ns
- 8ns
-
+ 0
+ 2ns
+ 4ns
+ 6ns
+
0 B
10 B
20 B
diff --git a/comparison/results/xxhash64-tiny_data-x86_64.svg b/comparison/results/xxhash64-tiny_data-x86_64.svg
index ca5185f8c..8ea93460b 100644
--- a/comparison/results/xxhash64-tiny_data-x86_64.svg
+++ b/comparison/results/xxhash64-tiny_data-x86_64.svg
@@ -20,84 +20,83 @@
-
-
-
+
+
+
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
- 0
- 2ns
- 4ns
- 6ns
- 8ns
-
+ 0
+ 2ns
+ 4ns
+ 6ns
+
0 B
10 B
20 B