Skip to content

Commit efe73ab

Browse files
committed
Speed optimizations.
1 parent e2645ae commit efe73ab

File tree

1 file changed

+15
-15
lines changed

1 file changed

+15
-15
lines changed

murmurhash3_32_gc.php

+15-15
Original file line numberDiff line numberDiff line change
@@ -28,30 +28,30 @@ function murmurhash3_32_gc($key,$seed=0){
2828
((ord($key[++$i]) & 0xff) << 16) |
2929
((ord($key[++$i]) & 0xff) << 24);
3030
++$i;
31-
$k1 = (((($k1 & 0xffff) * $c1) + ((((int)((float)$k1 /0x10000) * $c1) & 0xffff) << 16))) & 0xffffffff;
32-
$k1 = ($k1 << 15) | (int)((float)$k1 /pow(2,(int)17));
33-
$k1 = (((($k1 & 0xffff) * $c2) + ((((int)((float)$k1 /0x10000) * $c2) & 0xffff) << 16))) & 0xffffffff;
31+
$k1 = (((($k1 & 0xffff) * $c1) + (((($k1 >> 16) * $c1) & 0xffff) << 16))) & 0xffffffff;
32+
$k1 = $k1 << 15 | $k1 >> 17;
33+
$k1 = (((($k1 & 0xffff) * $c2) + (((($k1 >> 16) * $c2) & 0xffff) << 16))) & 0xffffffff;
3434
$h1 ^= $k1;
35-
$h1 = ($h1 << 13) | (int)((float)$h1 /pow(2,(int)19));
36-
$h1b = (((($h1 & 0xffff) * 5) + ((((int)((float)$h1 /0x10000) * 5) & 0xffff) << 16))) & 0xffffffff;
37-
$h1 = ((($h1b & 0xffff) + 0x6b64) + ((((int)((float)$h1b /0x10000) + 0xe654) & 0xffff) << 16));
35+
$h1 = $h1 << 13 | $h1 >> 19;
36+
$h1b = (((($h1 & 0xffff) * 5) + (((($h1 >> 16) * 5) & 0xffff) << 16))) & 0xffffffff;
37+
$h1 = ((($h1b & 0xffff) + 0x6b64) + (((($h1b >> 16) + 0xe654) & 0xffff) << 16));
3838
}
3939

4040
$k1 = 0;
4141
switch ($remainder) {
4242
case 3: $k1 ^= (ord($key[$i + 2]) & 0xff) << 16;
4343
case 2: $k1 ^= (ord($key[$i + 1]) & 0xff) << 8;
4444
case 1: $k1 ^= (ord($key[$i]) & 0xff);
45-
$k1 = ((($k1 & 0xffff) * $c1) + ((((int)((float)$k1 /0x10000) * $c1) & 0xffff) << 16)) & 0xffffffff;
46-
$k1 = ($k1 << 15) | (int)((float)$k1 /pow(2,(int)17));
47-
$k1 = ((($k1 & 0xffff) * $c2) + ((((int)((float)$k1 /0x10000) * $c2) & 0xffff) << 16)) & 0xffffffff;
45+
$k1 = ((($k1 & 0xffff) * $c1) + (((($k1 >> 16) * $c1) & 0xffff) << 16)) & 0xffffffff;
46+
$k1 = $k1 << 15 | $k1 >> 17;
47+
$k1 = ((($k1 & 0xffff) * $c2) + (((($k1 >> 16) * $c2) & 0xffff) << 16)) & 0xffffffff;
4848
$h1 ^= $k1;
4949
}
5050
$h1 ^= $klen;
51-
$h1 ^= (int)((float)$h1 /0x10000);
52-
$h1 = ((($h1 & 0xffff) * 0x85ebca6b) + ((((int)((float)$h1 /0x10000) * 0x85ebca6b) & 0xffff) << 16)) & 0xffffffff;
53-
$h1 ^= (int)((float)$h1 /pow(2,(int)13));
54-
$h1 = (((($h1 & 0xffff) * 0xc2b2ae35) + ((((int)((float)$h1 /0x10000) * 0xc2b2ae35) & 0xffff) << 16))) & 0xffffffff;
55-
$h1 ^= (int)((float)$h1 /0x10000);
56-
return base_convert((int)$h1,10,32);
51+
$h1 ^= $h1 >> 16;
52+
$h1 = ((($h1 & 0xffff) * 0x85ebca6b) + (((($h1 >> 16) * 0x85ebca6b) & 0xffff) << 16)) & 0xffffffff;
53+
$h1 ^= $h1 >> 13;
54+
$h1 = (((($h1 & 0xffff) * 0xc2b2ae35) + (((($h1 >> 16) * 0xc2b2ae35) & 0xffff) << 16))) & 0xffffffff;
55+
$h1 ^= $h1 >> 16;
56+
return base_convert($h1,10,32);
5757
}

0 commit comments

Comments
 (0)