小于/大于与小于/大于或等于相比,计算效率更高吗?
直观地,人们可以认为小于/大于稍微好一些。
编译器是否可以使用一些技巧使比较看起来相同?
编译器可以消除例如小于或等于 小于,将边界增加1,但如果边界为“活动”,则无法完成此操作。
答案 0 :(得分:4)
几乎在每个现代CPU上,都有比较/ jumpless和compare / jumplessequal指令花费的时间完全相同,因为它通过完全相同的硬件模数运行,包括或不包含“等于”位。
计算“不小于”(并且“少于”)的情况是免费的;对于无符号值,它相当于从二进制补码减法中进位,CPU已经这样做了。计算相等更难:CPU必须确定减法结果的所有位都为零;对于64位CPU,这是天真的64位和门,这是相当大,因此很慢。 CPU设计人员知道这一点,并构建非常快速的网络来快速检测到这一点,因此它不是瓶颈。
所以答案是“不”,或者说清楚,它们需要相同的时间,并且没有编译器技巧来改变它。