@@ -19,15 +19,15 @@ graphs are boring flat lines, so a table is used instead.
19
19
20
20
| Implementation | Throughput (GiB/s) |
21
21
| ----------------| --------------------|
22
- | Rust | 13.5 |
23
- | C | 13.5 |
22
+ | Rust | 13.4 |
23
+ | C | 13.4 |
24
24
25
25
## x86_64
26
26
27
27
| Implementation | Throughput (GiB/s) |
28
28
| ----------------| --------------------|
29
- | Rust | 16.5 |
30
- | C | 16.5 |
29
+ | Rust | 16.7 |
30
+ | C | 16.6 |
31
31
32
32
33
33
## Streaming data
@@ -75,7 +75,6 @@ Compares the **time taken** to hash 0 to 32 bytes of data.
75
75
/>
76
76
</a >
77
77
78
-
79
78
# xxHash3 (64-bit)
80
79
81
80
## Oneshot hashing
@@ -88,20 +87,21 @@ graphs are boring flat lines, so a table is used instead.
88
87
89
88
| Implementation | Throughput (GiB/s) |
90
89
| ----------------| --------------------|
91
- | Rust | 35.2 |
90
+ | Rust | 35.0 |
92
91
| C | 35.0 |
93
92
| C (scalar) | 21.2 |
94
- | C (NEON) | 35.1 |
93
+ | C (NEON) | 35.0 |
95
94
96
95
### x86_64
97
96
98
97
| Implementation | Throughput (GiB/s) |
99
98
| ----------------| --------------------|
100
- | Rust | 58.6 |
101
- | C | 25.0 |
102
- | C (scalar) | 7.5 |
99
+ | Rust | 58.9 |
100
+ | C | 25.1 |
101
+ | C (scalar) | 7.6 |
103
102
| C (SSE2) | 25.1 |
104
- | C (AVX2) | 57.8 |
103
+ | C (AVX2) | 58.4 |
104
+
105
105
106
106
## Streaming data
107
107
@@ -150,6 +150,78 @@ cluttering the graph and wasting benchmarking time.
150
150
/>
151
151
</a >
152
152
153
+ # xxHash3 (128-bit)
154
+
155
+ ## Oneshot hashing
156
+
157
+ Compares the ** speed** of hashing an entire buffer of data in one
158
+ function call. Data sizes from 256 KiB to 4 MiB are tested. These
159
+ graphs are boring flat lines, so a table is used instead.
160
+
161
+ | Implementation | Throughput (GiB/s) |
162
+ | ----------------| --------------------|
163
+ | Rust | 34.4 |
164
+ | C | 34.8 |
165
+ | C (scalar) | 21.3 |
166
+ | C (NEON) | 34.6 |
167
+
168
+ ### x86_64
169
+
170
+ | Implementation | Throughput (GiB/s) |
171
+ | ----------------| --------------------|
172
+ | Rust | 58.3 |
173
+ | C | 25.6 |
174
+ | C (scalar) | 7.6 |
175
+ | C (SSE2) | 25.5 |
176
+ | C (AVX2) | 57.4 |
177
+
178
+ ## Streaming data
179
+
180
+ Compares the ** speed** of hashing a 1 MiB buffer of data split into
181
+ various chunk sizes.
182
+
183
+ ### aarch64
184
+
185
+ <a href =" ./results/xxhash3_128-streaming-aarch64.svg " >
186
+ <img
187
+ src="./results/xxhash3_128-streaming-aarch64.svg"
188
+ alt="xxHash3, 128-bit, streaming data, on an aarch64 processor"
189
+ />
190
+ </a >
191
+
192
+ ### x86_64
193
+
194
+ <a href =" ./results/xxhash3_128-streaming-x86_64.svg " >
195
+ <img
196
+ src="./results/xxhash3_128-streaming-x86_64.svg"
197
+ alt="xxHash3, 128-bit, streaming data, on an x86_64 processor"
198
+ />
199
+ </a >
200
+
201
+ ## Small amounts of data
202
+
203
+ Compares the ** time taken** to hash 0 to 230 bytes of
204
+ data. Representative samples are taken from similar times to avoid
205
+ cluttering the graph and wasting benchmarking time.
206
+
207
+ ### aarch64
208
+
209
+ <a href =" ./results/xxhash3_128-tiny_data-aarch64.svg " >
210
+ <img
211
+ src="./results/xxhash3_128-tiny_data-aarch64.svg"
212
+ alt="xxHash3, 128-bit, small data, on an aarch64 processor"
213
+ />
214
+ </a >
215
+
216
+ ### x86_64
217
+
218
+ <a href =" ./results/xxhash3_128-tiny_data-x86_64.svg " >
219
+ <img
220
+ src="./results/xxhash3_128-tiny_data-x86_64.svg"
221
+ alt="xxHash3, 128-bit, small data, on an x86_64 processor"
222
+ />
223
+ </a >
224
+
153
225
# Benchmark machines
154
226
155
227
## Overview
@@ -159,7 +231,7 @@ cluttering the graph and wasting benchmarking time.
159
231
| Apple M1 Max | 64 GiB | clang 16.0.0 |
160
232
| AMD Ryzen 9 3950X | 32 GiB | cl.exe 19.41.34120 |
161
233
162
- Tests were run with ` rustc 1.81 .0 (eeb90cda1 2024-09-04 ) ` .
234
+ Tests were run with ` rustc 1.82 .0 (f6e511eec 2024-10-15 ) ` .
163
235
164
236
## Details
165
237
0 commit comments