Wicked
Новичок
Оптимизация f
объясните, как так надо было написать array_unique(), что array_flip(array_flip()) работает в ~14 раз быстрее? Пусть с ограничениями (напр., сложные значения теряются, когда становятся ключами массива), но все же...

объясните, как так надо было написать array_unique(), что array_flip(array_flip()) работает в ~14 раз быстрее? Пусть с ограничениями (напр., сложные значения теряются, когда становятся ключами массива), но все же...
PHP:
$a = array_merge(range(0, 10000), range(5000, 15000));
shuffle($a);
echo count($a), "\n";
for($i = 0; $i < 10; $i++) {
$t=-microtime(true);
$z = array_unique($a);
echo "uniq: ", count($z), "\n";
echo $t+microtime(true), "\n";
$t=-microtime(true);
$z = array_flip(array_flip($a));
echo "flip: ", count($z), "\n";
echo $t+microtime(true), "\n";
}
Код:
20002
uniq: 15001
0.30942606926
flip: 15001
0.022145986557
uniq: 15001
0.316202163696
flip: 15001
0.022628068924
...
Код:
C:\WWWROOT>c:\php\php -v
PHP 5.2.5 (cli) (built: Nov 8 2007 23:18:51)