PHP Diziyi Unique Yapmanın En Hızlı Yolu
PHP ile bir dizi elemanlarını unique yapmanın en hızlı yolunu yazacağım. Birkaç elemanlık dizi için hız o kadar önemli olmuyor ama veriler milyonlara ulaştığı zaman kalçada ağrı yapabiliyor (pain ass). O yüzden en hızlı yöntemi paylaşıyorum.
<?php ini_set('memory_limit', -1); $max = 10000000; $arr = range(1,$max,3); $arr2 = range(1,$max,2); $arr = array_merge($arr,$arr2); /* array_unique çok yavaş lan çalıştırma bile $time = -microtime(true); $res1 = array_unique($arr); $time += microtime(true); echo "array_unique ".count($res1)." in ".$time; */ $time = -microtime(true); $res2 = array(); foreach($arr as $key=>$val) $res2[$val] = true; $res2 = array_keys($res2); $time += microtime(true); echo "\nforeach ".count($res2)." in ".$time; $time = -microtime(true); $res3 = array_keys(array_flip($arr)); $time += microtime(true); echo "\narray_keys ".count($res3)." in ".$time; $time = -microtime(true); $res4 = array_flip(array_flip($arr)); $time += microtime(true); echo "\narray_flip ".count($res4)." in ".$time;
Bu da çıktısı oluyor:
emir@bugra:~$ php array_unique_speed.php foreach 6666667 in 3.1165158748627 array_keys 6666667 in 1.6601619720459 array_flip 6666667 in 1.9474921226501
0 yorum