Эффективная работа с массивами в ПХП

.des.

Поставил пиво кому надо ;-)
Автор оригинала: tony2001
на тесты под Вин можно просто внимание не обращать.
Хм... это почему же? я сколько тестировал у меня порядки совпадают и там и там.
 

tony2001

TeaM PHPClub
потому что версия под вин - это мертворожденный ребенок.
количество глюков, тормознутость и пр. - все это давно известно.
родная платформа для РНР - юникс, значит там и надо тестить.
плюс еще одно - Win ME - почему тогда бы не потестить на 95 ? или 3.1 ?
они настолько же приспособлены для работы как ОС веб-сервера.
 

.des.

Поставил пиво кому надо ;-)
насчет Win Me согласен.. окей проехали не хочу чтобы трэд перерос в спор unix vs win
 

tony2001

TeaM PHPClub
дело не в том, что лучше.
ты же IIS не будешь тестить под vmWare на FreeBSD ? =)
 

.des.

Поставил пиво кому надо ;-)
хм.. но в возможностях IIS нигде и не заявляется что он будет работать в системе отличной от win32. В отличие от пхп и Апача.
 

kim

Guest
Автор оригинала: .des.
Немножко поразмыслив предлагаю свой вариант array_unique
по всем тестам он обошел все другие.. :) (правда не на много :(но на больших файлах (2,5 мб) уже почти в полтора раза!!
PHP:
$worduniq=array();
$words=explode(" ",$html_text);
for($j=1;$j<sizeof($words)-1;$j++)
	$worduniq[$words[$j]]=1;
// Ну и чтобы получить массив со значениями
$words=array_keys($words);
Можно еще немного ускориться :)
for($j=1,$k=sizeof($words)-1;$j<$k;$j++)
 

si

Administrator
внимательно посмотрите ГДЕ в цикле стоит это присвоение. оно выполниться 1 раз.
 

sapenov

Guest
друзья мои, а вам не кажется, что вы забыли что иногда важно сохранить порядок ключей массива, о чем и говорится в мане. задача ведь состоит не только в генерации массива с уникальными значениями.

искренне ваш,
 

.des.

Поставил пиво кому надо ;-)
sapenov если в этом есть такая необходимость, то эти строчки в скрипт добавить не сложно. И тогда он скорее всего по скорости сравняется с array_unique но если необходимости нет и важна скорость, то это решение эффективнее.
 

Silent

Новичок
>It does not mean that the key of the first related value from the unsorted array will be kept.

И где здесь говоится о сохранении порядка? Если они используют qsort, а затем берут первый элемент, то порядок сохраниться не может, о чем и написано в мане.
 

sapenov

Guest
2 Silent:
У меня складывается мнение, что вы очень хорошо знаете английский язык. Вы уже второй раз цитируете не в свою пользу. :)))
зы. Создатели РНР наивные простофили и забыли разработать эффективную строчную функцию для уникальных слов.
 

ONK

Пассивист PHPСluba
Автор оригинала: si
внимательно посмотрите ГДЕ в цикле стоит это присвоение. оно выполниться 1 раз.
Неправильно, проверка выполняется на каждой итерации цикла, и функции входящие в условие тоже будут вывполняться на каждой итерации цикла. Так что если функцию можно вынести из
PHP:
for(;$x<functoin();)
то это надо сделать.
 

.des.

Поставил пиво кому надо ;-)
ONK по вашему утверждению и присваивание $j=1 то же будет выполняться на каждой итерации цикла. Еще раз ВНИМАТЕЛЬНЕЕ!
 

ONK

Пассивист PHPСluba
Нет, первая часть конструкции
PHP:
for(1;2;3)
исполняется только один раз, в начале цикла. Ненадо дополнять мои утверждения своими..
 

.des.

Поставил пиво кому надо ;-)
Автор оригинала: ONK
Нет, первая часть конструкции
PHP:
for(1;2;3)
исполняется только один раз, в начале цикла. Ненадо дополнять мои утверждения своими..
ONK
почуствуйте разницу
PHP:
for(i;i<function();i++)
и
PHP:
for(i,x=function(); i<x; i++)
 
Сверху