分支预测在php

刚刚阅读了一篇关于 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.

我认为这种差异用于排序.分支预测器对速度没有影响看起来是正确的.

你不会在PHP中复制这个.故事结局.原因是Java RTS使用JiT编译技术将Java中间代码编译成底层的X86订单代码.这个基本的订单代码会暴露这些分支预测伪像.

PHP运行时系统将PHP编译成一个字节码,它是一个被解释的伪机器代码.这个解释器将在典型的单个核心上执行0.5M操作码/秒的顺序 – 每个PHP操作码可能需要2-6K本机指令.在这一点上,任何分支的细微之处将会消失.

相关文章

统一支付是JSAPI/NATIVE/APP各种支付场景下生成支付订单,返...
统一支付是JSAPI/NATIVE/APP各种支付场景下生成支付订单,返...
前言 之前做了微信登录,所以总结一下微信授权登录并获取用户...
FastAdmin是我第一个接触的后台管理系统框架。FastAdmin是一...
之前公司需要一个内部的通讯软件,就叫我做一个。通讯软件嘛...
统一支付是JSAPI/NATIVE/APP各种支付场景下生成支付订单,返...