分支预测在php
发布时间:2020-12-13 17:36:42 所属栏目:PHP教程 来源:网络整理
导读:刚刚阅读了一篇关于 branch prediction的好帖子.我正在尝试使用php语言来重现它. ?phpfunction microtime_float(){ list($usec,$sec) = explode(" ",microtime()); return ((float)$usec + (float)$sec);}$time_start = microtime_float();$count = 300000;$
刚刚阅读了一篇关于
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本机指令.在这一点上,任何分支的细微之处将会消失. (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |