刚刚阅读了一篇关于
branch prediction的好帖子.我正在尝试使用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.
我认为这种差异用于排序.分支预测器对速度没有影响看起来是正确的.