Что оптимальнее: копить данные в строку или implode массив?

stopkran

Дилетант
(На таком большом форуме вопрос наверняка обсуждался, но я как-то не смог даже подобрать фразу для поиска. Ну, отправьте по ссылке, если знаете, куда...)

Проще показать на примере. Вот есть у меня такой список в 500 строк. Какой алгоритм лучше (быстрее?):

1) данные извлекаются из базы, оборачиваются в HTML-тэги и последовательно добавляются в переменную $list;

2) данные извлекаются из базы, оборачиваются в тэги, добавляются в массив $arr, потом
PHP:
$list = implode("\n", $arr);
Это ж страшно подумать: 500 раз обращаться к строке, которая всё время растёт... И про массив тоже страшно: это ж сколько памяти надо, чтобы разом обработать 500 значений?

Ладно ещё, если строк только 500. Но у меня там бывает и по 5000 (http://vostsibspravka.ru/listfirm.htm). И я всё время не сплю, и думаю: как это можно оптимизировать?..
 

Raziel[SD]

untitled00
Откуда желание оптимизировать ? тесты показали, что там проблема или просто делать нечего ?
 

craz

Нестандартное звание
я так понимаю просто он думает, что не спит, а в реальности он спит и видит во сне, что у него тормозит)))
 

stopkran

Дилетант
Откуда желание оптимизировать ? тесты показали, что там проблема или просто делать нечего ?
Большой потребности оптимизировать пока, конечно, нет. Просто интересно. Как представлю - массив в 5000 элементов, так и сон пропадает. А вам что, не интересно, что происходит внутри PHP со строкой, которую наращивают 5000 раз подряд? Да просто узнать, посоветоваться - бывает такое вообще в природе, или это ненормальное извращение?
 

c0dex

web.dev 2002-...
Команда форума
Партнер клуба
Еще один преждевременный оптимизатор)
 

freeek

Новичок
где то попадался на глаза тест: конкатенации vs имплойд

в общем, конкатенация быстрее получилась
 

craz

Нестандартное звание
я вот не буду спать изза того, что у людей по соседству 18 миллионов строк в таблице, вот думаю а вдруг у меня так??????? о_О - вот так буду ходить и не спать!
 

stopkran

Дилетант
по сути: замерить время почему не получилось?
Дело ведь не только во времени. Может, время с массивом меньше, а процессор зашкалит. Да только я сомневаюсь, что описанные способы на 100% разные. Подозреваю, что PHP там всё равно представляет все эти операции в каком-то третьем виде. Иначе бы цены на хостингах совсем другие были... Javascript'ом ведь не вопрос процессор завесить, а PHP, видимо, как-то от этого защищается.

Ну, типа все ведь знают, что при $a=array(); $b=$a; реального копирования массивов не происходит.
 

stopkran

Дилетант
я вот не буду спать изза того, что у людей по соседству 18 миллионов строк в таблице
И это правильно. Не спать! На одном форуме (http://webew.ru/) как-то начальство расслабилось всего на каких-то три дня, и остались на страницах одни mysql-errorы. Из-за программы статистики, пишущей в базу. До запретных миллиардов строк там так быстро дело, конечно, не дошло, но зато банально место на диске кончилось.
 

Absinthe

жожо
stopkran времени у тебя свободного много, вот дурью и маешься.
Преждевременная оптимизация - корень всех зол.
 

c0dex

web.dev 2002-...
Команда форума
Партнер клуба
Тяжелый случай. Я что-то этого лимита и не заметил даже.
 

stopkran

Дилетант
Я что-то этого лимита и не заметил даже.
Раз не заметил, значит работает нормально. Если бы лимита не было (на стр. http://vostsibspravka.ru/listfirm.htm), страница открывалась бы раз в 5 дольше. А так браузер отображает только первые 20 строк (но вы можете мгновенно получить доступ к любой выборке из 5000).
 

craz

Нестандартное звание
слушайте раз вы тут такие все оптимизаторы как я)))

что быстрее
PHP:
echo $a.$b;
или
PHP:
echo $a,$b;
 

stopkran

Дилетант
что быстрее
PHP:
echo $a.$b;
или
PHP:
echo $a,$b;
Одинаково. У меня ob_gzhandler на всех сайтах. Да и без него, при "среднестатистических" размерах $a, $b, PHP не будет отдавать их по отдельности (будет копить и вывалит сразу общий результат).
 

c0dex

web.dev 2002-...
Команда форума
Партнер клуба
stopkran
открою тебе секрет, не работает твой лимит в 20 строчек.
без яваскрипта, увы и ах. Не хорошо(
 
Сверху