Предсказание ветвления на php
Просто прочитайте отличный пост опрогноз отрасли, Я пытался воспроизвести его, используя язык php.
<?php
function microtime_float()
{
list($usec, $sec) = explode(" ", microtime());
return ((float)$usec + (float)$sec);
}
$time_start = microtime_float();
$count = 300000;
$sum = 0;
for ($i = 0; $i <= $count; $i++) {
$array[] = rand(0, $count);
}
sort($array);
for ($i = 0; $i <= $count; $i++) {
if ($array[$i] <= 150000) {
$sum += $array[$i];
}
}
$time_end = microtime_float();
$time = $time_end - $time_start;
echo $sum . '<br />';
echo 'End:' . $time;
?>
Но я всегда получаю одинаковые результаты с сортировкой и без нее. Может быть, я делаю что-то не так? Или, может быть, PHP имеет встроенную оптимизацию для предсказателя ветвлений?
UPD:
Я сделал изменения кода в соответствии с комментариями и измерил время на моей локальной машине.
Not sorted array: 1.108197927475
Sorted array: 1.6477839946747
Difference: 0.539586067.
Я думаю эту разницу потратили на сортировку. Похоже, правда, что предсказатель ветвления не влияет на скорость.