【发布时间】:2014-04-19 04:27:32
【问题描述】:
我想知道在循环中进行小于或等于比较或小于比较是否更有效。 <= 运算符是指示计算机进行两次比较(是小于还是等于),还是简化了它?举个例子。我想要一个循环而不是递增到 1000。我是否应该将上限设置为 1001 并告诉它while i is < (OR !=) 1001, i++;?或者我应该告诉它while i <= 1000, i++;?编译器 (GCC) 会将其简化为相同的基本指令吗?
【问题讨论】:
-
两者都使用机器级指令。完全没有区别。
-
如果可能,向后运行循环会更有效,这样您就可以针对 0 而不是常数测试
i。 -
怎么会便宜?
-
@chepner,哇,这对我来说是新事物,它如何更有效率?因为我们只需要检索 i 一次?
-
@chepner 是的,但它进入了微优化领域。然后,您将不得不担心 CPU 在向后运行时是否正确预取数据缓存(确实如此,但参数可能与从升序地址预取不同。)有很多事情要担心,我不会除非基准另有说明,否则请放心。
标签: c++ loops optimization compiler-construction operators