源码

首页 » 归档 » 源码 » c – C中If-Else和Ternary运算符之间的速度差…

c – C中If-Else和Ternary运算符之间的速度差…


因此,在一位同事的建议下,我刚刚测试了三元运算符和等效的If-Else块之间的速度差异……似乎三元运算符产生的代码比If-Else快1到2倍.我的代码是:

  gettimeofday(&tv3, 0);
  for(i = 0; i < N; i++)
  {
     a = i & 1;
     if(a) a = b; else a = c;
  }
  gettimeofday(&tv4, 0);


  gettimeofday(&tv1, 0);
  for(i = 0; i < N; i++)
  {
     a = i & 1;
     a = a ? b : c;
  }
  gettimeofday(&tv2, 0);

(抱歉使用gettimeofday而不是clock_gettime ……我会尽力改善自己.)

我尝试改变我对块进行计时的顺序,但结果似乎仍然存在.是什么赋予了?此外,If-Else在执行速度方面表现出更多的可变性.我应该检查gcc生成的程序集吗?

顺便说一句,这都是在优化级别零(-O0).

我是在想象这个,还是有些东西我没有考虑到,或者这是机器相关的东西,还是什么?任何帮助表示赞赏.

(0)

本文由 投稿者 创作,文章地址:https://blog.isoyu.com/archives/c-czhongif-elseheternaryyunsuanfuzhijiandesuducha.html
采用知识共享署名4.0 国际许可协议进行许可。除注明转载/出处外,均为本站原创或翻译,转载前请务必署名。最后编辑时间为:9 月 25, 2019 at 02:50 下午

热评文章