【发布时间】:2015-09-29 22:20:03
【问题描述】:
我最近遇到了一些旧的源代码,我注意到这样的模式:
T item = array[index];
index++;
这样表达会不会更快
T item = array[index++];
?直到最近我还认为不会有区别,因为我认为它是 index = index + 1 的简写,所以无论哪种方式,你都会取消引用 index 两次。但是this post 让我不这么认为;相反,您只会获得一次 index 的值。
这会在性能上产生任何差异(无论多么小),还是现代 JIT 会对此进行优化?
【问题讨论】:
-
您想了解哪种语言?为什么同时标记 Java 和 C#?
-
@hagrawal 因为 JVM 和 CLR 都是 JIT,据我了解,它们的功能相似(此外,增加
int主要与语言无关)。 -
你的 2 个代码 sn-ps 在哪种循环中 - for, while ??
-
编写一个基准程序并确定它们的相对性能其实很简单。
-
@JamesKo 是的,两者都是 JIT,但它们的优化算法会有所不同。您可能还会看到每种情况下生成的不同机器代码指令。
标签: java c# performance increment jit