xandeadx.ru Блог музицирующего веб-девелопера

PHP → Насколько быстра функция function_exists

Опубликовано в

В Drupal, функция function_exists используется повсеместно. Вся система хуков держится на ней и на call_user_func*. Поэтому мне стало интересно, насколько быстро она делает своё дело.

Для тестов был взят php файл (~88kb, ~3500 строк кода) с набором небольших функций (144 штуки), в конец добавлен код:

$timestart = microtime(true); 
 
for ($i = 0; $i < 10000; $i++){
    if (function_exists('function_' . rand(0, 999999999))){
        // ...
    }
}
 
echo round(microtime(true) - $timestart, 10) . ' sec.';

В результате, среднее время на 10 000 итераций составило 0.0078 sec. Потрясающе! :)

Тестирование проводилось на боевом VDS.

Похожие записи

Комментарии RSS

Есть подозрение, что поиск происходит не по коду, а по внутреннему массиву, в котором хранятся названия всех функций.

да, так и есть, глупо бы было искать по подобию strpos =)

Оставить комментарий

Содержимое этого поля является приватным и не будет отображаться публично. Если у вас есть аккаунт в Gravatar, привязанный к этому e-mail адресу, то он будет использован для отображения аватара.
  • Адреса страниц и электронной почты автоматически преобразуются в ссылки.
  • Доступные HTML теги: <a> <i> <b> <strong> <code> <ul> <ol> <li> <blockquote> <em> <s>
  • Строки и параграфы переносятся автоматически.
  • Подсветка кода осуществляется с помощью тегов: <code>, <css>, <html>, <ini>, <javascript>, <sql>, <php>. Поддерживаемые стили выделения кода: <foo>, [foo].

Подробнее о форматировании