function calc($t0, $t1)
{
$v0 = array_sum(explode(' ', $t0));
$v1 = array_sum(explode(' ', $t1));
$sub = $v1 - $v0;
echo "$v1 - $v0 = $sub\n";
return $sub;
}
$a = [116,116,116,116,116,116,116,116,116,116,116,116,116,116,116,116,117,116,117,116,116,116,116,116,119];
$t0 = microtime();
for ($i = 0; $i < 1E6; $i++) {
array_values(array_unique($a));
}
$t1 = microtime();
$method1 = calc($t0, $t1); // output: 1527477436.7125 - 1527477409.434 = 27.278562068939
$t0 = microtime();
for ($i = 0; $i < 1E6; $i++) {
array_keys(array_flip($a));
}
$t1 = microtime();
$method2 = calc($t0, $t1); // output: 1527477439.6214 - 1527477436.7126 = 2.908814907074
$t0 = microtime();
for ($i = 0; $i < 1E6; $i++) {
array_merge(array_flip(array_flip($a)));
}
$t1 = microtime();
$method3 = calc($t0, $t1); // output: 1527477443.3256 - 1527477439.6215 = 3.7041912078857
有時候直覺的方式會比較慢。
參考資料:http://php.net/manual/en/function.array-unique.php#70786
PHP 5.6.36 (cli) (built: May 9 2018 20:31:47)
Copyright (c) 1997-2016 The PHP Group
Zend Engine v2.6.0, Copyright (c) 1998-2016 Zend Technologies
with Xdebug v2.3.3, Copyright (c) 2002-2015, by Derick Rethans
沒有留言:
張貼留言