【问题标题】:If statement processing speedif语句处理速度
【发布时间】:2012-11-13 14:14:59
【问题描述】:

这只是为了缓解我的好奇心,如果有人愿意回答这个问题,那就太好了。

使用 if 语句,计算结果的时间是否受其编写方式的影响?

那么我的意思是(如果不是很清楚的话)以下两个语句的处理时间是否相同?

if 1 < 2 and 3 = 3 then
   //do something
end if

相比

if 1 < 2 then
    if 3 = 3 then
      //Do something
    end if
end if

【问题讨论】:

  • 第二个例子是一个不好的做法,看起来很丑
  • 老实说,我不确定为什么会有 java 和 .net 标签。
  • 这些问题不是特定语言的,所以我把它放在我知道的两个类别下。只是出于好奇。

标签: optimization if-statement


【解决方案1】:

如果我们认为编译器不会优化这两个调用,那么第二个语句将需要两个分支指令而不是一个。由于流水线,分支需要 CPU 做一些额外的工作。所以,从技术上讲,第二个版本需要更多的工作,但在这里应该没关系。

【讨论】:

  • 酷,谢谢!如果您不介意回答其他问题,Java 和 .net 等语言会优化此类内容吗?
  • @Feash:Java 优化器非常聪明,但我不能确切地告诉你它是否会优化嵌套的 ifs。它可能会。
  • 天真地第一个也需要两个分支,因为短路。
  • @harold:嗯,没想到。那么这两种情况是等价的。谢谢。
  • @AkiSuihkonen 只有在编译器进行一些优化并且常量 1、2 和 3 是占位符的情况下,这只会解决整个问题。
【解决方案2】:

这只是premature-optimization 的另一个例子。想太多,你不会有任何收获。

您应该关注的是如何使您的代码更具可读性。

【讨论】:

  • 如果你没有回答这个问题,你应该发表评论,而不是答案。
猜你喜欢
  • 2014-11-20
  • 2013-04-02
  • 1970-01-01
  • 2022-01-11
  • 1970-01-01
  • 2016-05-20
  • 2013-08-16
  • 2017-10-21
  • 1970-01-01
相关资源
最近更新 更多