hei*_*kim 2 theory performance compiler-theory
它是计算上更高性能的比较少/大于过少/大于或等于?
凭直觉,人们可能认为少/多于好。
编译器可以使用一些技巧使比较看起来相同吗?
编译器可以消除例如小于或等于与小于通过增加一个绑定的,但如果绑定的是“活着”,那么这不能做。
实际上,在每个现代CPU上,都有比较/无跳转和比较/准等式指令花费完全相同的时间,因为它通过完全相同的硬件模来运行,包括或不包括“等于”位。
在这种情况下,计算“不少于”(以及“少于”)是免费的。对于无符号值,等效于由CPU已经执行的二进制补码减法。计算相等更加困难:CPU必须确定减法结果的所有位都为零;对于64位CPU,天真的是64位并门,这相当大,因此速度很慢。CPU设计人员知道这一点,并建立了非常快速的网络来快速,准确地检测到这一点,因此这不是瓶颈。
因此答案是“否”,或者要明确地说,它们花费相同的时间,并且没有编译器来改变它。