checksums.xxhash: cleanup, faster.
parent
0fb0eaa1cf
commit
5e4ac4b698
|
@ -17,10 +17,23 @@ TUPLE: xxhash seed ;
|
||||||
|
|
||||||
C: <xxhash> xxhash
|
C: <xxhash> xxhash
|
||||||
|
|
||||||
|
<PRIVATE
|
||||||
|
|
||||||
|
:: native-mapper ( from to bytes c-type -- seq )
|
||||||
|
from to bytes <slice>
|
||||||
|
bytes byte-array? little-endian? and
|
||||||
|
[ c-type cast-array ]
|
||||||
|
[ c-type heap-size <groups> [ le> ] map ] if ; inline
|
||||||
|
|
||||||
|
PRIVATE>
|
||||||
|
|
||||||
M:: xxhash checksum-bytes ( bytes checksum -- value )
|
M:: xxhash checksum-bytes ( bytes checksum -- value )
|
||||||
checksum seed>> :> seed
|
checksum seed>> :> seed
|
||||||
bytes length :> len
|
bytes length :> len
|
||||||
|
|
||||||
|
len dup 16 mod - :> len/16
|
||||||
|
len dup 4 mod - :> len/4
|
||||||
|
|
||||||
len 16 >= [
|
len 16 >= [
|
||||||
|
|
||||||
seed prime1 w+ prime2 w+
|
seed prime1 w+ prime2 w+
|
||||||
|
@ -28,12 +41,7 @@ M:: xxhash checksum-bytes ( bytes checksum -- value )
|
||||||
seed
|
seed
|
||||||
seed prime1 w-
|
seed prime1 w-
|
||||||
|
|
||||||
bytes byte-array? little-endian? and [
|
0 len/16 bytes uint native-mapper
|
||||||
0 len dup 16 mod - 4 - 4 <range>
|
|
||||||
[ bytes <displaced-alien> uint deref ] map
|
|
||||||
] [
|
|
||||||
bytes len 16 mod head-slice* 4 <groups> [ le> ] map
|
|
||||||
] if
|
|
||||||
|
|
||||||
4 <groups> [
|
4 <groups> [
|
||||||
first4
|
first4
|
||||||
|
@ -53,16 +61,11 @@ M:: xxhash checksum-bytes ( bytes checksum -- value )
|
||||||
|
|
||||||
len w+
|
len w+
|
||||||
|
|
||||||
bytes len 16 mod tail-slice*
|
len/16 len/4 bytes uint native-mapper
|
||||||
dup length dup 4 mod - cut-slice [
|
[ prime3 w* w+ 17 bitroll-32 prime4 w* ] each
|
||||||
4 <groups> [
|
|
||||||
le> prime3 w* w+ 17 bitroll-32 prime4 w*
|
bytes len/4 tail-slice
|
||||||
] each
|
[ prime5 w* w+ 11 bitroll-32 prime1 w* ] each
|
||||||
] [
|
|
||||||
[
|
|
||||||
prime5 w* w+ 11 bitroll-32 prime1 w*
|
|
||||||
] each
|
|
||||||
] bi*
|
|
||||||
|
|
||||||
[ -15 shift ] [ bitxor ] bi prime2 w*
|
[ -15 shift ] [ bitxor ] bi prime2 w*
|
||||||
[ -13 shift ] [ bitxor ] bi prime3 w*
|
[ -13 shift ] [ bitxor ] bi prime3 w*
|
||||||
|
|
Loading…
Reference in New Issue