表现是"小于/大于"优于"少于/大于或等于"

时间:2014-11-19 12:24:55

标签: performance theory compiler-theory

小于/大于小于/大于或等于相比,计算效率更高吗?

直观地,人们可以认为小于/大于稍微好一些。

编译器是否可以使用一些技巧使比较看起来相同?

编译器可以消除例如小于或等于 小于,将边界增加1,但如果边界为“活动”,则无法完成此操作。

1 个答案:

答案 0 :(得分:4)

几乎在每个现代CPU上,都有比较/ jumpless和compare / jumplessequal指令花费的时间完全相同,因为它通过完全相同的硬件模数运行,包括或不包含“等于”位。

计算“不小于”(并且“少于”)的情况是免费的;对于无符号值,它相当于从二进制补码减法中进位,CPU已经这样做了。计算相等更难:CPU必须确定减法结果的所有位都为零;对于64位CPU,这是天真的64位和门,这是相当大,因此很慢。 CPU设计人员知道这一点,并构建非常快速的网络来快速检测到这一点,因此它不是瓶颈。

所以答案是“不”,或者说清楚,它们需要相同的时间,并且没有编译器技巧来改变它。