В 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.
Комментарии
Есть подозрение, что поиск происходит не по коду, а по внутреннему массиву, в котором хранятся названия всех функций.
да, так и есть, глупо бы было искать по подобию strpos =)
Добавить комментарий