array_unique, как и многие другие встроенные функции работы с массивами довольно тормознутые

. Самописные замены на больших массивах выигрывают в два и более раз и по скорости и по потреблению памяти.
в большинстве случаев
можно заменить на
PHP:
foreach($a as $v) $b[$v] = 1; $a = array_keys($b);
или еще лучше вместо foreach - for
P.S. смысл имеет на действительно больших массивах %) коих не должно быть в реальных приложениях. у меня такое встречается в каких то служебных скриптах, которые выполняют разовую работу и при array_unique php отъедает памяти в несколько раз больше и иногда просто не дождаться когда скрипт закончит работу.
также отвратительно себя в этом плане ведет функция array_merge.