Имеется пыхпых (тестилось в 5.2 и 4.4), решили сравнить разницу в
скорости при использовании констант и текстовых строк в качестве индексов массивов.
Вот код.
function getmicrotime()
{
list($usec, $sec) = explode(" ", microtime());
return ((float)$usec + (float)$sec);
}
define("BLAH", 'qqq');
$arr = array('aaa'=>"1111",'bbb'=>"2222", 'ccc'=>"333", "qqq"=>"444343", 5=>"0987");
$cycles = 100000;
$time_start = getmicrotime();
for ($i = 0; $i < $cycles; $i++) {
$temp0 = $arr[BLAH];
$temp1 = $arr[BLAH];
$temp2 = $arr[BLAH];
$temp3 = $arr[BLAH];
$temp4 = $arr[BLAH];
}
$time_end = getmicrotime();
$time1 = $time_end - $time_start;
$time_start = getmicrotime();
for ($i = 0; $i < $cycles; $i++) {
$temp0 = $arr["qqq"];
$temp1 = $arr["qqq"];
$temp2 = $arr["qqq"];
$temp3 = $arr["qqq"];
}
$time_end = getmicrotime();
$time2 = $time_end - $time_start;
echo sprintf("Const: %.6fs <br />\nString: %.6fs\n <br/> K=%.3f",$time1,$time2,$time1/$time2);
В результате работы, коээфициент K в районе 2.4, т.е. использование
констант более чем в два раза медленее использования обычных строк.
Шо за фигня?
Форум —
Development

