<?php
function micro_parse($a) {
$parts = explode(' ', $a);
return [
(int)$parts[1],
(int)substr($parts[0], 2, 6)
];
}
function micro_diff($a, $b) {
return [ $b[0] - $a[0], $b[1] - $a[1] ];
}
function micro_fmt($a) {
return sprintf('%d.%06d', $a[0], $a[1]);
}
$str = 'foobar';
$iter = 100000;
$algos = ['md5', 'fnv1a32', 'fnv1a64'];
foreach($algos as $algo) {
$start = microtime();
for( $i=0; $i<$iter; $i++ ) {
$h = hash($algo, $str);
}
$end = microtime();
printf("%8s: %s\n", $algo, micro_fmt(micro_diff(micro_parse($start), micro_parse($end))));
}
preferences:
25.94 ms | 402 KiB | 5 Q