Комментарии 35
> (привет пользователям M$OS).
Помечайте хоть отсебятину-то.
Помечайте хоть отсебятину-то.
Тема «print или echo» уже порядком достала, некоторые кодеры даже умудряются в резюме хвастатья знаниями об этом…
А вот за Vulcan Logic Disassembler спасибо, надо будет попробовать ради интереса на битриксе и прочих крутейших CMS ;))) Ну и заодно свой **внокод прогнать just4fun. Хотя в реальность скорее всего всё упрется не в execution units, а в ожидание ввода/вывод всяких БД и внешних API.
А вот за Vulcan Logic Disassembler спасибо, надо будет попробовать ради интереса на битриксе и прочих крутейших CMS ;))) Ну и заодно свой **внокод прогнать just4fun. Хотя в реальность скорее всего всё упрется не в execution units, а в ожидание ввода/вывод всяких БД и внешних API.
Я собственно и делал перевод из желания познакомить людей с VLD, а не чтобы дать ответ на вечный вопрос echo или print, но похоже это мало кто понял.
Просто измените заголовок на «Применение Vulcan Logic Disassembler для анализа кода PHP».
Нет. Во-первых это все-же перевод. Во-вторых, для меня, кармы и рейтинги это показатель отношения читателя. Я пишу что-то на хабре для вас, а не для рейтингов, кармы, денег или вселенской славы и если средний хаброюзер способен заминусовать статью за заголовок, даже не читая её, или прочитав неспособен уловить суть, то что я могу сказать..? Я не буду прикрывать этот его позор, а отнесусь к этому кейсу как к показательному исследованию. Вспоминаю опрос от автором Денвера. Он тогда добавил в заголовок, что он автор Денвера и ушел из глубокого минуса, а зря, люди должны получать то чего действительно заслуживают и первые результаты того его поста были более авторитетными чем те, которые он получил после того как поклонился дуракам.
Сделал вот такой тест:
print использует на опкод больше, но при этом скорость дает чуть-чуть большую (и это не мгновенное явление, я проверял несколько раз)
Интересно, с чем это связано? Или я что-то делаю не так?
Интерес чисто спортивный, никакого отношения к php не имею
user@meowr /tmp/php $ php echo.php | pv > /dev/null
^C,8MiB 0:00:09 [7,76MiB/s] [ <=> ]
user@meowr /tmp/php $ php print.php | pv > /dev/null
^C,3MiB 0:00:08 [8,15MiB/s] [ <=> ]
user@meowr /tmp/php $ cat echo.php
<?php while (1) { echo 'wat'; } ?>
user@meowr /tmp/php $ cat print.php
<?php while (1) { print 'wat'; } ?>
print использует на опкод больше, но при этом скорость дает чуть-чуть большую (и это не мгновенное явление, я проверял несколько раз)
Интересно, с чем это связано? Или я что-то делаю не так?
Интерес чисто спортивный, никакого отношения к php не имею
Если судить по исходникам, то print базируется на echo и лишь устанавливает значение результата в единицу.
опоздал…
опоздал…
February 04, 2009
Очень актуальная тема, продолжайте переводить!
Очень актуальная тема, продолжайте переводить!
При условии, что echo/print должен быть вызван только один раз (это в идеале), то данное исследование ещё более странным кажется.
Чем обусловлен такой идеал? Тело ответа может составлять мегабайты, нужно постоянно держать его в памяти и дописывать а-ля
$body .= "<h1>$title</h1>";
(а это постоянные перераспределения памяти и копирование)?В любом случае у вас вывод тела ответа будет приблизительно в одном месте. А так да, случаи бывают разные, хоть сходу и не придумаю варианта с мегабайтным телом ответа… Даже если речь идет о отдаче файла или генерации изображений, проще записать в файл (куда всеравно нужно будет записывать) и отдавать через sendfile. Хотя случаи разные бывают.
И что что они выполняются за неодинаковое время? print всегда будет медленнее echo за счет того, что print должен вернуть значение. Другое дело что даже на большом количестве итераций преимущество если и будет, то оно будет настолько небольшим что можно и забить.
Да и вообще не вижу смысла для холивара, и у print и у echo есть свои особенности, которые могут быть полезны в разных ситуациях.
Да и вообще не вижу смысла для холивара, и у print и у echo есть свои особенности, которые могут быть полезны в разных ситуациях.
В первом абзаце чувствую ненависть автора к своим падаванам :)
Поясните?
Потому что в 99.999999% случаев, это не имеет значения. Почему? Потому что в 99.99% случаев было бы лучше с вашей стороны, если бы вы установили кешер опкода типа APC, или добавили недостающие в вашей базе индексы, или попробовали не делать те 1000 SQL запросов, которые у вас делаются на главной
Вещи настолько очевидные, что напоминать о них в данном контексте, на мой взгляд, — это троллинг. Намекая на «99.999999% из вас слишком неопытны»
P.S. Ничего не имею против php в умелых руках.
микрооптимизаторы, заменяющие двойные кавычки на одинарные, как раз неопытны, все верно
Пример того как два человека могут смотреть на одно и то же, но видеть это по-разному ((с)). Я вот ничего кроме опытности и как следствие трезвого отношения к вопросу в этих словах не увидел. Ну разве еще самокритику, но её я как то плохо передал переводом. Хотя, может это была просто проекция.
Можно посмотреть online на опкоды: 3v4l.org/BtS8r/vld#tabs
print vs echo, which one is faster?
А почему не перевели этот заголовок?
В вопросе что быстрее print или echo победил ?>foo< ?=$foo?>bar
Как большинство из нас, я устал читать блог-посты про бессмысленные микро-оптимизации типа замены print на echo, ++$I на $i++ или двойные кавычки на одинарные. Почему? Потому что в 99.999999% случаев, это не имеет значения. Почему? Потому что в 99.99% случаев было бы лучше с вашей стороны, если бы вы установили кешер опкода типа APC, или добавили недостающие в вашей базе индексы, или попробовали не делать те 1000 SQL запросов, которые у вас делаются на главной.
Стрелки 80-ого левела. Почему бы сразу не взять в привычку писать одинарные кавычки, echo и $i++?
Обычно так и делают. Вообще смысл статьи в дампере опкодов, а не в том, что быстрее. Это всяко интереснее. То что echo/print будет являться узким местом в приложении конечно смешно слушать.
Кстати, строки с одинарными кавычками не всегда быстрее строк с двойными кавычками. И, наверное, Вы имели в виду ++$i?
Как минимум, потому что есть соглашения, улучшающие читаемость кода, пускай и несколько его замедляющие.
теперь мне совершенно ясно, что можно написать вот так:
print print print print print print print print 1;
и оно отработает )
print print print print print print print print 1;
и оно отработает )
Зарегистрируйтесь на Хабре, чтобы оставить комментарий
print или echo, что быстрее?