Почему ядро ​​использует печать, а не эхо?

24

Я где-то читал и не помню где, тогда echoэто более эффективный способ вывода данных print.

Почему ядро ​​Drupal использует printтак много? Есть ли какая-то особая причина этого?

jayarjo
источник
1
На заметку: print всегда будет возвращать 1 как значение, echo ничего не даст. Я думаю, что это может быть полезно в некоторых случаях.
Барт
Что это за случай?
Джаярджо
Я тоже удивился этому! Хороший вопрос!
Андрей

Ответы:

25

echoтолько быстрее в академической среде. Разница очень незначительная. Быстрый тест, который я только что сделал: время выборки одной строки из таблицы с более чем 2000 узлами составляет 1 единицу.

Чтобы получить улучшение на 1 единицу, мне нужно заменить около 3.700.000 (более 3 миллионов) printоператоров на echo. Другими словами, если вы хотите улучшить производительность, вряд ли стоит начинать.

То, что printможет быть использовано в более широком диапазоне случаев echo, первое имеет некоторые преимущества. Это оставляет вам три варианта:

  • Всегда используйте print
  • Используйте, echoгде это возможно, и используйтеprint
  • Используйте echoвсегда и рефакторинг вашего кода, если echoне может быть использован, чтобы использовать его

Друпал дефолт по первому.

Чтобы ответить на ваш актуальный вопрос о том, почему это было выбрано: это не так. Это просто выросло таким образом.

Беркеш
источник
Не могли бы вы привести пример, когда эхо не может быть использовано? Просто я не могу себе это представить в данный момент.
Джаярджо
6
Наиболее очевидным является if (! print some_method() ) {print some_other_method()}. Так как print возвращает TRUE, если оно действительно что-то напечатало. Эхо ничего не возвращает, поэтому тоже быстрее. Другой пример, который вы увидите, находится return print $somevalueв конце метода возврата статуса.
Беркес