2009-07-14 4 views
2

Каковы «затраты» на вызов пустой функции PHP? Основная цель заключается в том, что CMS запускает включенные события модуля в различные моменты своей жизни, чтобы обрабатывать такие вещи, как безопасность, разрешения доступа, пост-обработка, синхронизация, http (s) и тому подобное. Так как может быть более дюжины модулей, называемых десятками раз, каждый общий вызов будет достигать сотен и потенциально даже тысяч в какой-то момент для каждой загрузки страницы.Выполнение пустых функций в PHP

Начальный модуль будет в основном выглядеть как следующий код, который будет заменен на объект, чтобы обрабатывать любой триггер события был уволен и обрабатывать переданные данные:

function trigger ($trigger_name, $data=false) 
{ 
    return false; 
} 

Будет ли это быть проблема в конце концов, и должны Вместо этого я работаю в системе модулей, предварительно зарегистрировав триггер, чтобы сократить количество бессмысленных вызовов функций?

ответ

2

я нашел в этой ссылке:

http://phplens.com/lens/php-book/optimizing-debugging-php.php

Вызов функции с одним параметром и пустым телом функции занимает примерно в то же время, делая 7-8 $ localvar ++ операции. Подобным вызовом метода является, конечно, около 15 $ localvar ++ операций.

Обновление: 11 июля 2004 года. Вышеуказанный тест был на PHP 4.0.4, около 3 лет назад. Я проверил это снова в PHP4.3.3, и вызов функции теперь занимает около 20 $ localvar ++ операций, а вызов метода занимает около 30 $ localvar ++ операций. Это может быть связано с тем, что $ localvar ++ работает быстрее, или функции медленнее.

2

Я бы пошёл с чем-то более насыщенным событиями, например this work around для поддержки отсутствующих событий PHP. Это похоже на то, что вы имели в виду с предварительной регистрацией.

Если вы не можете этого сделать или не хотите, куча пустых вызовов функций не повредит производительности (хотя тысячи из них могут быть). Я бы сделал базовое профилирование, чтобы узнать, сколько времени потрачено на обслуживание страницы. Если будет показано, что пустые функции занимают значительное количество времени, я бы об этом подумал.

Я не могу представить случай, когда страница настолько сложна, что требует, чтобы многие триггеры, хотя и не имели других более узких узких мест. То есть, если страница так много продолжается, добавленные триггеры становятся еще менее значительными.

Смежные вопросы