如下代码,php中测试是if分支慢2.9秒,else分支快2.2秒,把if条件在1==1和1!=1变换,这是怎么样的机制造成的呢?    $stime=microtime(true); //获取程序开始执行的时间
$j=0;
  for($i=0;$i<5000000;$i++){
    if(1!=1){
     $j++;
    }else
     $j++;
  }    $etime=microtime(true);//获取程序执行结束的时间
    $total=$etime-$stime;   //计算差值
    $str_total = var_export($total, TRUE);
    if(substr_count($str_total,"E")){
        $float_total = floatval(substr($str_total,5));
        $total = $float_total/100000;
    }
    echo "$total".'秒';

解决方案 »

  1.   

    已测,没你说的那回事./*if 
    0.55976009368896秒  
    0.55944108963013秒
    0.56911516189575秒
    0.5602080821991秒
    0.56702303886414秒
    else
    0.5650839805603秒 
    0.56633019447327秒
    0.56741714477539秒
    0.56370115280151秒
    0.56349802017212秒
    */
      

  2.   

    if else执行效率差异只在if代码块和else代码块中代码的执行效率吧?
    这里的两块代码是一样的,应该执行时间大致是相同的吧
      

  3.   

    是由于花括号产生的,php代码并非我们看上去的这几行,php最终会以C来运行,所以每一个符号每一行,C都要进行转化解释
      

  4.   

    最近想看看php性能优化,网上查了查,不知道有没有什么可以深入学习的资料可以介绍?
      

  5.   

    php是执行C的,那么所有c优化方案都可以应用?但是转化也需要时间,如何综合测定性能和找到性能提升的突破点~请大家指点
      

  6.   

    因为if要判断, else不用判断, 你试下 else if 看看, 更慢, 而== 和 != 不就0和1, 没什么区别。一门语言如果if ... else 语句的设计都成性能问题, 那这门语言可以被遗弃了。
      

  7.   


    就算是C, 也是if 慢, else快, 答案如上楼。
      

  8.   

    if 和 else 块里的执行代码相等, 效率相等。
      

  9.   


    如果是C,有细微差别,cpu会做分支预测,预测成功会有些许性能提升
    可以搜索likely unlikely,linux内核中大量使用这个作性能优化
      

  10.   


    一般测试的工具方法有哪些?我要去测定各部分的耗时,耗CPU等情况