Skip to content

Commit 8eb0648

Browse files
committed
Dropped string access + ord for unpack
1 parent 2b6d04c commit 8eb0648

File tree

1 file changed

+10
-10
lines changed

1 file changed

+10
-10
lines changed

murmurhash3.php

+10-10
Original file line numberDiff line numberDiff line change
@@ -16,14 +16,14 @@
1616
*/
1717

1818
function murmurhash3_int($key,$seed=0){
19-
$key = (string) $key;
20-
$klen = strlen($key);
21-
$h1 = $seed;
19+
$key = array_values(unpack('C*',(string) $key));
20+
$klen = count($key);
21+
$h1 = (int)$seed;
2222
for ($i=0,$bytes=$klen-($remainder=$klen&3) ; $i<$bytes ; ) {
23-
$k1 = ((ord($key[$i]) & 0xff))
24-
| ((ord($key[++$i]) & 0xff) << 8)
25-
| ((ord($key[++$i]) & 0xff) << 16)
26-
| ((ord($key[++$i]) & 0xff) << 24);
23+
$k1 = $key[$i]
24+
| ($key[++$i] << 8)
25+
| ($key[++$i] << 16)
26+
| ($key[++$i] << 24);
2727
++$i;
2828
$k1 = (((($k1 & 0xffff) * 0xcc9e2d51) + ((((($k1 >= 0 ? $k1 >> 16 : (($k1 & 0x7fffffff) >> 16) | 0x8000)) * 0xcc9e2d51) & 0xffff) << 16))) & 0xffffffff;
2929
$k1 = $k1 << 15 | ($k1 >= 0 ? $k1 >> 17 : (($k1 & 0x7fffffff) >> 17) | 0x4000);
@@ -35,9 +35,9 @@ function murmurhash3_int($key,$seed=0){
3535
}
3636
$k1 = 0;
3737
switch ($remainder) {
38-
case 3: $k1 ^= (ord($key[$i + 2]) & 0xff) << 16;
39-
case 2: $k1 ^= (ord($key[$i + 1]) & 0xff) << 8;
40-
case 1: $k1 ^= (ord($key[$i]) & 0xff);
38+
case 3: $k1 ^= $key[$i + 2] << 16;
39+
case 2: $k1 ^= $key[$i + 1] << 8;
40+
case 1: $k1 ^= $key[$i];
4141
$k1 = ((($k1 & 0xffff) * 0xcc9e2d51) + ((((($k1 >= 0 ? $k1 >> 16 : (($k1 & 0x7fffffff) >> 16) | 0x8000)) * 0xcc9e2d51) & 0xffff) << 16)) & 0xffffffff;
4242
$k1 = $k1 << 15 | ($k1 >= 0 ? $k1 >> 17 : (($k1 & 0x7fffffff) >> 17) | 0x4000);
4343
$k1 = ((($k1 & 0xffff) * 0x1b873593) + ((((($k1 >= 0 ? $k1 >> 16 : (($k1 & 0x7fffffff) >> 16) | 0x8000)) * 0x1b873593) & 0xffff) << 16)) & 0xffffffff;

0 commit comments

Comments
 (0)