Выполнение пустых функций в PHP - PullRequest
2 голосов
/ 14 июля 2009

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

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

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

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

Ответы [ 2 ]

2 голосов
/ 14 июля 2009

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

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

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

2 голосов
/ 14 июля 2009

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

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 ++ теперь работает быстрее или функции работают медленнее.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...