我写了一个简单的for循环。
for(int i = 0; i != 100; i++)
然后有人发表意见,应该是
for(int i = 0; i < 100; i++)
当这变成装配时,我应该变成Jump on Equality JNE,后者应该是Jump如果更大的JG。或者编译器会做一些完全不同的事情,它们会变成同样的事情。
无论如何哪一个更正确,我发现第一个更逻辑正确,因为我知道我将通过100,大于检查似乎逻辑上还原。 JNE和JG也一样快吗?
答案 0 :(得分:2)
对于这种情况,使用<
和!=
之间没有实际区别。但是,许多迭代器不定义<
比较,只定义!=
或==
,在这种情况下,这些是您唯一真正的选择。
jne
和jg
通常速度相同。您可能会观察到两者之间的速度差异,但如果是这样,它们很可能源于缓存使用情况,而不是指令本身。
答案 1 :(得分:0)
我认为您不会找到特定情况存在性能差异的系统(要验证的措施)。
大多数代码在i < count
循环中使用for
条件。因此,与<
相比,大多数人阅读!=
条件的代码所需的时间更短。