Всем известно, что вызовы функций в PHP плохо отражают производительность. Этот сценарий демонстрирует проблему:PHP сокращает функциональные вызовы оптимизатором
// Plain variable assignment.
$time = microtime(true);
$i = 100000;
while ($i--)
{
$x = 'a';
}
echo microtime(true) - $time."\n\n";
// 0.017973899841309
$time = microtime(true);
function f() { $a = "a"; return $a; }
$i = 100000;
while ($i--)
{
$x = f();
}
echo microtime(true) - $time."\n\n";
//0.18558096885681
Кстати анонимные функции являются наихудшими. твой в 10 раз медленнее.
Есть ли PHP-Script-Optimizer, который уменьшает количество вызовов функций и минимизирует сценарий?
Существует также этот пост: Why are PHP function calls *so* expensive?, связанные с этой статьей
Вы сравниваете немного несправедливо, потому что ваш случай вызова функции выполняет больше работы, чем просто добавляет вызов функции. Тело функции должно быть $ x = 'a'; вернуть; вызов функции должен быть просто f(); и ваш запуск запуска microtime должен произойти после объявления функции, а не раньше. Но согласился, PHP довольно медленно при вызове функций. На самом деле, это довольно медленно во многих вещах, из-за его реализации. Зачем выбирать вызовы функций? –
Я проверил ваш точный код с включенным APC, и он только в 2,5 раза медленнее использовал вызовы функций. – Pitchinnate
Все, о чем вы говорите, называется ** Преждевременная оптимизация ** – Yang