【问题标题】:Does writing i != 0 compare faster or slower than i > 0 for a positive integer? [duplicate]对于正整数,写 i != 0 比 i > 0 快还是慢? [复制]
【发布时间】:2014-09-03 06:11:23
【问题描述】:

假设我有一个程序需要检查变量i 是否大于零。 i 总是积极的,所以说i > 0 就等于说i != 0

这两个表达式之间是否存在性能差异?为什么?

我知道没有明显的性能差异,这更像是一个哲学问题。

【问题讨论】:

  • 不,没有,别担心这种事情
  • 我知道区别,如果有的话,可能可以忽略不计,但是每次我写出其中一个条件时,问题仍然会浮现在我的脑海中。
  • 如果存在性能差异,可能几乎无法测量。现在,编译器和 CPU 都非常好,我保证你不会发现任何区别。
  • 我知道没有明显的区别,这更像是一种哲学问题。
  • 你知道你问的是什么指令集吗?适用于什么处理器型号?

标签: performance language-agnostic


【解决方案1】:

我不认为它有明显不同,但与流行的看法相反,我会告诉你使用!= 而不是><,因为前者是更通用的操作,并且如果您要将代码转换为 C++ 并使用 迭代器 而不是指针,则并非所有迭代器都支持 <>(但它们都将支持 !=)。

【讨论】:

  • 如果他将其用作循环检查,这与普遍看法相反,但是。
  • 不成熟的优化。 != 适用于前向迭代器,但不适用于步幅大于 1。< 适用于大步幅,但仅适用于随机访问迭代器。哪个是首选是非常特定于上下文的。
  • @MichaelPetrotta:我猜。无论如何,我将这个推理应用于循环和非循环,所以它对我来说并没有太大的区别。
  • @BenVoigt:如果您使用的步幅大于 1,那么您已经在使用 < 时做错了;如果您处于未定义的行为领域,迭代器将超出范围。
  • @Mehrdad:我想你的意思是溢出?但是“打印所有小于 10,000 的 N 的倍数”怎么样,上限是固定的?那么< 就完美了。
猜你喜欢
  • 2022-01-07
  • 2012-11-11
  • 1970-01-01
  • 1970-01-01
  • 2019-03-11
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多