我刚刚测试了 3 种方法来替换我的配置文件中的常量:
// No check
function replaceConstantsNoCheck($value)
{
foreach (array_keys(get_defined_constants()) as $constant)
$value = str_replace($constant, constant($constant), $value);
return $value;
}
// Check with strstr
function replaceConstantsStrstr($value)
{
foreach (array_keys(get_defined_constants()) as $constant)
if (strstr($value, $constant))
$value = str_replace($constant, constant($constant), $value);
return $value;
}
// Check with strpos
function replaceConstantsStrpos($value)
{
foreach (array_keys(get_defined_constants()) as $constant)
if (strpos($value, $constant) !== false)
$value = str_replace($constant, constant($constant), $value);
return $value;
}
一些测量:
/*
No check : 0.0078179836273193
Strstr : 0.0034809112548828
Strpos : 0.0034389495849609
No check : 0.0067379474639893
Strstr : 0.0034348964691162
Strpos : 0.0034480094909668
No check : 0.0064759254455566
Strstr : 0.0031521320343018
Strpos : 0.0032868385314941
No check : 0.0068850517272949
Strstr : 0.003389835357666
Strpos : 0.0031671524047852
No check : 0.006864070892334
Strstr : 0.0032939910888672
Strpos : 0.0032010078430176
*/
在我所有的测试中,没有一种检查方法至少使用了两倍的时间!
strstr
和strpos
方法之间似乎没有显着差异。