Прогнозирование ветвления на 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:

Я сделал модификации кода в соответствии с комментариями и измерил время на моей локальной машине.

Не отсортированный массив : 1.108197927475

Сортированный массив : 1.6477839946747

Разница : 0,539586067.

Я думаю, что эта разница была потрачена на сортировку. Похоже, что предсказатель ветвления не влияет на скорость.

Вы не будете копировать это в PHP. Конец истории. Причина в том, что Java RTS использует методы компиляции JiT для компиляции промежуточного кода Java вплоть до базового кода заказа X86. Этот базовый код заказа будет раскрывать эти артефакты прогнозирования ветвлений.

Система времени выполнения PHP компилирует PHP до байт-кода, который является псевдо-машинным кодом, который интерпретируется. Этот интерпретатор будет выполнять порядка 0.5M opcodes / sec на типичном одноядерном ядре – каждый PHP-код может содержать 2-6K собственных инструкций. В этом будут потеряны любые тонкости ветвления.