4
A
回答
13
甲性能問題纔有意義在上下文其中功能行爲是相同的(因爲,如果功能性是不同的,一個正確的行爲優於一個微小更快的一個),所以我假設你指的是不使用表達式的值的情況?也就是說,表達式的唯一目的是增加i
?在這種情況下,答案是否定的:沒有性能差異,事實上,沒有任何區別。我剛剛編譯了這個類:
public class Foo
{
public static void main(final String args[])
{
int i = Integer.parseInt(args[0]);
i++;
}
}
並計算得到的Foo.class
的MD5校驗和;並且類似地用++i
代替。他們有相同的校驗,表明這兩個版本被編譯成確切相同的字節,因此將執行字面上相同。
(當然,這在理論上可以,取決於編譯器。不同的編譯器可能會決定甚至在上下文,他們是相當於編譯i++
不同於++i
,但我懷疑,這是真的不值得擔憂的,即使它的情況。)
1
的增量所需的運行本身應該是相同的,但如果您使用的是前或後增量明顯可能對周圍的代碼對性能的影響並且在更多情況下可以優化後增量。
也有一些不明顯的情況下,如果周圍的代碼的性能變化。至少當與Oracle在x86或x64硬件服務器虛擬機上運行,下面的循環在其運行時顯著差異:
long a=0, b=0;
for(int i=0;i<1000000;i++) {
b = 3;
a += i * (b++);
}
...
long a=0, b=0;
for(int i=0;i<1000000;i++) {
b = 3;
a += i * (++b);
}
相關問題
- 1. 後增量和增量前置運算符
- 2. 增量,增量前和增量後
- 3. 性能差異與鑄造增加一倍和增量
- 4. Java:增量/減量運算符的前綴/後綴?
- 5. 後增量運算符的行爲
- 6. 後綴增量運算符評估
- 7. 重載後綴增量運算符
- 8. 在MySQL和IN運算符之間有任何性能差異
- 9. 迭代器和增量運算符
- 10. 預增量,在MSDOS和DEVC++編譯器後增量結果差異
- 11. ostream運算符在重載的後綴增量/減量運算符上重載
- 12. 差異和合並或增量同步
- 13. GUID +自動增量ID =性能較差?
- 14. 打印熊貓列之間的增量差異
- 15. 兩個表之間的差異(使用sql) - >增量更改
- 16. 後綴和前綴增量運算在for循環中
- 17. 增量遞減的按位運算符
- 18. 如何在我的課堂上實現前後增量/減量運算符?
- 19. SQL之間的差異在運算符和「> =」&「<=」運算符之間
- 20. 前增量和後增量如何工作?
- 21. Java中的前後增量
- 22. 前綴和後綴增量運算符在C++中爲迭代器重載實現之間的區別
- 23. C++重載增量運算符
- 24. VBScript是否有增量運算符
- 25. C#++一元運算符增量問題
- 26. C++/g ++過載增量運算符
- 27. C中的宏和前/後增量
- 28. 在變量分配之前,前/後增量操作符是如何操作的?
- 29. C#前期和後期增量混淆
- 30. 使用XmlEncoder創建增量/差異xml
據我所知,沒有差異,表現方向 – 2012-03-19 16:52:15
運行測試並找出? – cdeszaq 2012-03-19 16:52:41
[非常基本的代碼性能]的可能的重複(http://stackoverflow.com/questions/4110764/very-basic-code-performance) – assylias 2012-03-19 16:57:22