分支预测在php

前端之家收集整理的这篇文章主要介绍了分支预测在php前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
刚刚阅读了一篇关于 branch prediction的好帖子.我正在尝试使用PHP语言来重现它.
  1. <?PHP
  2.  
  3. function microtime_float()
  4. {
  5. list($usec,$sec) = explode(" ",microtime());
  6. return ((float)$usec + (float)$sec);
  7. }
  8.  
  9. $time_start = microtime_float();
  10.  
  11. $count = 300000;
  12. $sum = 0;
  13. for ($i = 0; $i <= $count; $i++) {
  14. $array[] = rand(0,$count);
  15. }
  16.  
  17. sort($array);
  18.  
  19. for ($i = 0; $i <= $count; $i++) {
  20. if ($array[$i] <= 150000) {
  21. $sum += $array[$i];
  22. }
  23. }
  24.  
  25. $time_end = microtime_float();
  26. $time = $time_end - $time_start;
  27.  
  28. echo $sum . '<br />';
  29. echo 'End:' . $time;
  30. ?>

但是我总是得到相同的结果与排序和没有它.也许我在做错事?或者也许PHP已经建立了分支预测器的优化?

UPD:

我根据评论进行了代码修改,并测量了我本机的时间.

未排序数组:1.108197927475

排序数组:1.6477839946747

差异:0.539586067.

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

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

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

猜你在找的PHP相关文章