[ ] t1ha |
, , 64- -, .
, , . ?
, () , . , , () . : .
- :
:
, , t1ha , (- ) ( ).
t1ha () - - . t1ha 64- little-endian , 64- (seed) 64- , seed-. , t1ha , 0 ( seed).
- . , . , - . .
, . , SMHasher. t1ha t1ha - . , , t1ha - , ( -).
/ t1ha. , t1ha . , , . - . t1ha 64- , .
statistical prove Google ;)
. , , -, /. , . , , , . , , (x86_64), .
, , . x86, ( ) , .
, SMHasher Reini Urban. , / .
t1ha.
( 1..31 ).
Cycles/Hash ( , ):
Function | MiB/Second | Cycles/Hash |
---|---|---|
t1ha | 12228.80 | 35.55 |
FastHash64 | 5578.06 | 43.42 |
CityHash64 | 11041.72 | 51.77 |
xxHash64 | 11123.15 | 56.17 |
MetroHash | 11808.92 | 46.33 |
(256 ).
MiB/Second ( , ):
Function | MiB/Second | Cycles/Hash |
---|---|---|
t1ha | 12228.80 | 35.55 |
FarmHash64 | 12145.36 | 60.12 |
CityHash64 | 11041.72 | 51.77 |
xxHash64 | 11123.15 | 56.17 |
Spooky64 | 11820.20 | 60.39 |
t1ha . -.
-, - , . , t1ha little-endian , - big-endian . - ? :
, , , . . , :
t1ha0()
.t1ha1()
64- t1ha.t1ha2()
64- .t1ha3()
128- . , t1ha0()
, . , _le _be little-endian big-endian . , t1ha - , E2K .
. , SMHasher, AES-NI :
Simple bench for x86 (large keys, 262144 bytes):
t1ha1_64le: 47151 ticks, 0.1799 clk/byte, 16.679 Gb/s @3GHz
t1ha1_64be: 61602 ticks, 0.2350 clk/byte, 12.766 Gb/s @3GHz
t1ha0_32le: 94101 ticks, 0.3590 clk/byte, 8.357 Gb/s @3GHz
t1ha0_32be: 99804 ticks, 0.3807 clk/byte, 7.880 Gb/s @3GHz
Simple bench for x86 (small keys, 31 bytes):
t1ha1_64le: 39 ticks, 1.2581 clk/byte, 2.385 Gb/s @3GHz
t1ha1_64be: 42 ticks, 1.3548 clk/byte, 2.214 Gb/s @3GHz
t1ha0_32le: 51 ticks, 1.6452 clk/byte, 1.824 Gb/s @3GHz
t1ha0_32be: 54 ticks, 1.7419 clk/byte, 1.722 Gb/s @3GHz
Simple bench for AES-NI (medium keys, 127 bytes):
t1ha0_ia32aes_noavx: 72 ticks, 0.5669 clk/byte, 5.292 Gb/s @3GHz
t1ha0_ia32aes_avx: 78 ticks, 0.6142 clk/byte, 4.885 Gb/s @3GHz
t1ha0_ia32aes_avx2: 78 ticks, 0.6142 clk/byte, 4.885 Gb/s @3GHz
Simple bench for AES-NI (large keys, 262144 bytes):
t1ha0_ia32aes_noavx: 38607 ticks, 0.1473 clk/byte, 20.370 Gb/s @3GHz
t1ha0_ia32aes_avx: 38595 ticks, 0.1472 clk/byte, 20.377 Gb/s @3GHz
t1ha0_ia32aes_avx2: 19881 ticks, 0.0758 clk/byte, 39.557 Gb/s @3GHz
, t1ha - ( wipe-pipe) . 256- , . . 256- 128 .
64- , ARX (Add-Rotate-Xor) MUX/MRX (Mul-Rotate-Xor). , , u-ops , x86_64. .
, . , 128- .
, 64 128- . 64- . t1ha (128- 64- ). . , , t1ha .
. .