將Java源文件翻譯爲字節碼時是否有任何優化(如死代碼消除)?將Java源代碼翻譯爲字節碼時的優化
1
A
回答
2
標準的Java編譯器對發出的字節碼沒有做任何優化。我認爲推理是未優化的字節碼對於HotSpot JIT編譯器來說更容易優化。
@Mitch Wheat在上述註釋中提供的鏈接(特別是第二個)來自HotSpot JIT是新技術的日子。
0
在搜索所有源代碼優化時,我遇到了這個問題,儘管我在很長時間後回答了這個問題。
jdk1.7後,用加[+]操作者字符串連接轉換爲StringBuilder的追加例如追加如圖字節碼
public static void main(String[] args) {
String s = new String("");
s = s+"new";
}
轉換爲StringBuilder的
public static void main(java.lang.String[]);
descriptor: ([Ljava/lang/String;)V
flags: ACC_PUBLIC, ACC_STATIC
Code:
stack=3, locals=2, args_size=1
0: new #2 // class java/lang/String
3: dup
4: ldc #3 // String
6: invokespecial #4 // Method java/lang/String."<init>":(Ljava/lang/String;)V
9: astore_1
10: new #5 // class java/lang/StringBuilder
13: dup
14: invokespecial #6 // Method java/lang/StringBuilder."<init>":()V
17: aload_1
18: invokevirtual #7 // Method java/lang/StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
21: ldc #8 // String new
23: invokevirtual #7 // Method java/lang/StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
26: invokevirtual #9 // Method java/lang/StringBuilder.toString:()Ljava/lang/String;
29: astore_1
30: return
LineNumberTable:
line 13: 0
line 14: 10
line 15: 30
LocalVariableTable:
Start Length Slot Name Signature
0 31 0 args [Ljava/lang/String;
10 21 1 s Ljava/lang/String;
}
相關問題
- 1. 幫我翻譯使用字節的Java代碼到jython代碼
- 2. 翻譯Java代碼爲PHP代碼
- 3. Java字節碼優化
- 4. 優化Java字節碼?
- 5. Java代碼翻譯
- 6. 如何將Java源代碼轉換爲字節代碼?
- 7. Java源代碼的字節碼
- 8. 在翻譯VBScript代碼Java代碼
- 9. 翻譯的Java代碼爲僞
- 10. Java代碼優化
- 11. 優化Java代碼
- 12. 將C#代碼翻譯成Ruby代碼
- 13. 將組裝的IJVM代碼翻譯成Java代碼
- 14. GWT編譯代碼優化
- 15. Java優化:僅字節碼vs JIT
- 16. 的Java代碼優化(jsoup)
- 17. 源代碼翻譯到子集的ç
- 18. 將此代碼從C#翻譯爲VB.NET
- 19. 將Python PIL代碼翻譯爲Python OpenCV
- 20. 如何將IL代碼翻譯爲AST
- 21. 將vb.net翻譯爲C#:一行代碼
- 22. 將IDL代碼翻譯爲Python
- 23. 將vb代碼翻譯爲c#
- 24. 將PHP片段代碼翻譯爲.net
- 25. 使用不同的源代碼和字節代碼版本編譯java源代碼
- 26. 簡單的字節碼翻譯器
- 27. 將SPSS語法文件翻譯爲R源代碼
- 28. 編譯java源代碼?
- 29. Java:代碼重構/優化
- 30. 優化此java代碼?
http://stackoverflow.com/questions/1680024/compiler-optimization-java-bytecode – 2011-02-17 03:44:16