哪个运算符更快:
示例:我想测试一个值(它可以是正值或-1)是否等于-1:
>
还是 ==
?示例:我想测试一个值(它可以是正值或-1)是否等于-1:
if(time > -1)
// or
if (time != -1)
时间的类型是“int”
标准中没有明确规定。因此,取决于给定编译器在其给定版本中生成的操作码以及给定CPU执行这些操作码的速度。
也就是说,实现/平台定义。
您可以通过查看/基准测试可执行代码来了解特定的编译器/平台组合情况。
但我认为这不会有太大的差异;这是一种微观优化,几乎总是被更高级别的架构决策所抛弃。
这取决于平台。通常来说,这两个操作会直接转换成汇编指令“大于时跳转”和“不等时跳转”。这两者之间很可能没有性能差异,如果有的话,也是非常微小的。
唯一比其他跳转指令略快一点的跳转指令通常是“为零时跳转”/“非零时跳转”。
(在编译器较差的黑暗年代,C程序员因此喜欢将循环写成递减到零,而不是递增,以便将比较与零而不是一个值进行比较,以获得几纳秒的时间。现代编译器可以自行进行这种优化,但你偶尔还会看到这样的循环。)
总的来说,你不应该过分关注性能的微观管理。如果你花时间考虑 >
是否比 !=
更快,而不是考虑程序设计、可读性和功能性,那么你需要尽快重新确定你的优先级。
从语义上讲,这些条件是不同的。第一个条件检查对象time
是否为正数或零。
if(time > -1)
if( time >= 0 )
if ( time != -1 )
在编译器只生成一条机器指令以进行比较时,速度并不是你需要考虑的问题。你需要考虑哪个条件更具表现力,并显示程序员的意图。
x
是有符号整数)x > -1
并不测试 x
是否为正数。它测试的是 x
是否为非负数。 - Andreas Rejbrand
time > -1
。 - dlask> 0
可能比>= 1
更快。 - Simple>= 1
替换为> 0
。 - molbdnilo