PHP Conference Kansai 2025

Voting

: six minus two?
(Example: nine)

The Note You're Voting On

b dot g dot dariush at gmail dot com
11 years ago
function_exists() does not cache its query internally.

by executing the following code

$funcs = \array_shift(\get_defined_functions());
$l = new \core\utiles\loadTime;
$times = 0;
$l->start();
for($index = 0; $index<count($funcs); $index++)
{
foreach($funcs as $func)
{
$times++;
if(\function_exists($func)) ;
}
}
$s = $l->stop();
echo "<span style='color:green'>$times</span> took : $s";
# the output would be
$> 2365444 took : 0.70324

By executing the

$funcs = \array_shift(\get_defined_functions());
$l = new \core\utiles\loadTime;
$times = 0;
$l->start();
static $func_check = array();
for($index = 0; $index<count($funcs); $index++)
{
foreach($funcs as $func)
{
$times++;
if(!isset($func_check[$func]))
{
if(\function_exists($func)) ;
$func_check[$func] = 1;
}
else $func_check[$func];
}
}
$s = $l->stop();
echo "<span style='color:green'>$times</span> took : $s";
# the output would be
$> 2365444 took : 0.53446

There is a 0.16878 seconds improvement, when you use static array to cache methods existence.

<< Back to user notes page

To Top