Было один раз, голову себе сломал откуда переменная $item взялась))) Оказалось от foreach наследие...))))
О боже, целый топик заблуждающихся... Прав тут только один человек Если ваш код является узким местом, то экономия на "кавычках" (и всяких foreach и while) вам уже не нужна, вам нужен другой язык (Си например, или С++) но такое бывает редко, чаще всего просто оптимизируется всякое кеширование, группируются запросы, наращивается железо, настраивается ОС, итд (помню наш Psih рассказывал что настроив нормально сервак и обновив железо совсем немного, нагрузка снизилась настолько что никакие кавычки этого сделать не могли) Даже просто вынос статики на отдельный сервак(и) уже снизит нагрузку настолько что загрузить основной сервак будет сложно даже при большой посещаемости, а уж если отказаться от прожёрливого апача и поставить например лайти или "тпштч ©" то это полный финишь, сэкономленную на этом память отдаём мускулу, и кешмруем тяжёлые запросы, и такой сервак даже задосить будет проблематично, не то что штатными средствами уложить...
Vladson Всё верно сказал В 99.9% случаев foreach vs for vs while смысла не имеет, используйте что удобнее. Dagdamor Т.е. в foreach copy-on-write не пашет? Это как минимум странно...
Psih Твой пост на оверах (на 17-й странице) для меня уже как библия, столько раз дёргал из него цитаты, и НИКТО ни по какой из цитат не возразил =) (много полезного для себя черпнул из него)
http://forums.overclockers.ru/viewtopic ... &start=320 (там бы ошибки исправить, да пояснить мелочи, типа что то железо было хорошим в те времена, и была бы реально полезная статья...)
Psih Детали поменялись (железо стало ещё быстрее, ОС-и более сговорчивые, итд) но основные мысли до сих пор актуальны. Я даже дома под виндой от апача отказался (поставил Nginx, не из-за нагрузки, с моим каналом в 1 мегабит это не узкое место, просто чтоб начать разбираться в настройках)
Точно говорю, много полезного от туда вычерпнул (и не только я) а если ещё добавишь что-то новое из опыта, вообще можно на серьёзную статью замахнуться
Ещё и заминусуют Хотя "коллегу" твоего (тоже програмер на торрент-трекере, кстати он на хабр меня и пригласил) не заминусовали когда он про хайлоад писал http://habrahabr.ru/blogs/server_side_o ... ion/53360/ (и опять же ни слова про кавычки или foreach)
*Подумалось* FAQ по быстродействию скрпитов. Q: Сайт тормозит, что делать ? A1: Если вы начинающий. Прочитать книгу (бумажную, а не видеоуроки) и переписать всё нафиг. A2: Если вы уже не начинающий. Прочитать ещё раз ту-же книгу и переписать всё нафиг. A3: Если вы уже профи. Ответа не существует, ибо у вас просто не возникнет такого вопроса. A4: Да !!! тут нет нифига про кавычки, foreach и собак в коде !!!
Что-то я совсем запутался в вопросе, что быстрее foreach() или while(each()). Запускаю такой тест: PHP: $a = range(1,1e5); $t1 = microtime(1); foreach($a as $name=>$value){ $name = $name; $value = $value; } $t2 = microtime(1); $e = "\n".($t2-$t1); reset($a); $t1 = microtime(1); while($a1 = each($a)){ $name = $a1[1]; $value = $a1[0]; } $t2 = microtime(1); $e.= "\n".($t2-$t1); echo $e; В результате получаю: 0.20485901832581 1.6417279243469 Получается foreach быстрее. Но до этого некоторые, и я в том числе, писали обратное. Что это? Я чего-то не допонимаю или в версии 5.2.6.6 все поменялось (,хотя я не помню, что бы менял ее)?