PHP Diziyi Unique Yapmanın En Hızlı Yolu

Emir Buğra KÖKSALAN tarafından tarihinde yayınlandı

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
Kategoriler: PHPTürkçe

Emir Buğra KÖKSALAN

Java & PHP Developer

0 yorum

Bir yanıt yazın

Avatar yer tutucu

E-posta adresiniz yayınlanmayacak. Gerekli alanlar * ile işaretlenmişlerdir

Time limit is exhausted. Please reload the CAPTCHA.

Bu site, istenmeyenleri azaltmak için Akismet kullanıyor. Yorum verilerinizin nasıl işlendiği hakkında daha fazla bilgi edinin.