Pull to refresh

Comments 35

> (привет пользователям M$OS).
Помечайте хоть отсебятину-то.
Тема «print или echo» уже порядком достала, некоторые кодеры даже умудряются в резюме хвастатья знаниями об этом…
А вот за Vulcan Logic Disassembler спасибо, надо будет попробовать ради интереса на битриксе и прочих крутейших CMS ;))) Ну и заодно свой **внокод прогнать just4fun. Хотя в реальность скорее всего всё упрется не в execution units, а в ожидание ввода/вывод всяких БД и внешних API.
Я собственно и делал перевод из желания познакомить людей с VLD, а не чтобы дать ответ на вечный вопрос echo или print, но похоже это мало кто понял.
Просто измените заголовок на «Применение Vulcan Logic Disassembler для анализа кода 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 не имею
UFO just landed and posted this here
UFO just landed and posted this here
вся разница
Не вся. print кушает один параметр, а echo может и несколько. Хотя из этого куска кода этого почему-то не видно
предположу, что в случае вывода через запятую код транслируется не в один ZEND_ECHO, а в столько, сколько нужно вывести.
February 04, 2009
Очень актуальная тема, продолжайте переводить!
Я впервые слышу про Vulcan Logic Disassembler, так что пользительно и интересно.
А начало поста «Под катом перевод довольно старого поста Фабиена» вам как бы ничего не сказало пока вы оригинал не открыли, да?
При условии, что echo/print должен быть вызван только один раз (это в идеале), то данное исследование ещё более странным кажется.
UFO just landed and posted this here
Чем обусловлен такой идеал? Тело ответа может составлять мегабайты, нужно постоянно держать его в памяти и дописывать а-ля $body .= "<h1>$title</h1>"; (а это постоянные перераспределения памяти и копирование)?
В любом случае у вас вывод тела ответа будет приблизительно в одном месте. А так да, случаи бывают разные, хоть сходу и не придумаю варианта с мегабайтным телом ответа… Даже если речь идет о отдаче файла или генерации изображений, проще записать в файл (куда всеравно нужно будет записывать) и отдавать через sendfile. Хотя случаи разные бывают.
Вывод тела у меня будет размазан по шаблонам и лэйаутам. Где-то, возможно, он будет перехватываться ob_*(), а где-то уходить прямо в stdout, но мне не нужно будет об этом думать.
UFO just landed and posted this here
И что что они выполняются за неодинаковое время? print всегда будет медленнее echo за счет того, что print должен вернуть значение. Другое дело что даже на большом количестве итераций преимущество если и будет, то оно будет настолько небольшим что можно и забить.

Да и вообще не вижу смысла для холивара, и у print и у echo есть свои особенности, которые могут быть полезны в разных ситуациях.
UFO just landed and posted this here
В первом абзаце чувствую ненависть автора к своим падаванам :)
Потому что в 99.999999% случаев, это не имеет значения. Почему? Потому что в 99.99% случаев было бы лучше с вашей стороны, если бы вы установили кешер опкода типа APC, или добавили недостающие в вашей базе индексы, или попробовали не делать те 1000 SQL запросов, которые у вас делаются на главной

Вещи настолько очевидные, что напоминать о них в данном контексте, на мой взгляд, — это троллинг. Намекая на «99.999999% из вас слишком неопытны»

P.S. Ничего не имею против php в умелых руках.
микрооптимизаторы, заменяющие двойные кавычки на одинарные, как раз неопытны, все верно
Пример того как два человека могут смотреть на одно и то же, но видеть это по-разному ((с)). Я вот ничего кроме опытности и как следствие трезвого отношения к вопросу в этих словах не увидел. Ну разве еще самокритику, но её я как то плохо передал переводом. Хотя, может это была просто проекция.
print vs echo, which one is faster?

А почему не перевели этот заголовок?
Как большинство из нас, я устал читать блог-посты про бессмысленные микро-оптимизации типа замены 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;
и оно отработает )
Sign up to leave a comment.

Articles