從第5版開始,泛型一直在Java中。在Java應用程序中使用泛型的性能影響是什麼?您能解釋性能影響的原因嗎?在Java中使用泛型會影響性能嗎?
回答
泛型是編譯時的功能。運行應用程序時幾乎沒有影響。
像大多數表現問題一樣;編寫清晰簡單的代碼顯得尤爲重要,而且這通常會帶來非常好的性能。
改變您對性能的原因的設計是一個經常犯錯有人說你不應該這樣做。在開始之前,我認爲這是值得考慮的,但是當你有一個相對微不足道的表現問題時,你必須認識到這一點。
當你有一個更好的瞭解你的應用程序如何表現你最好寫你的代碼,並隨後對其進行優化。即當你是真正的用例和分析器時。
它會影響應用程序的性能嗎?
不,不會,因爲它甚至沒有出現在運行時會影響性能。
來自官方的線索:
當一個泛型類型實例化時,編譯器的技術叫做類型擦除轉換的類型 - 一個過程,其中,編譯器將刪除所有相關信息,輸入參數和類型參數在一個類或方法中。
正如我已經說明here這兩個程序轉換爲同樣的字節碼:
import java.util.*;
class Test {
public static void main(String[] args) {
List<String> l = new ArrayList<String>();
l.add("hello");
System.out.println(l.get(0).length());
}
}
import java.util.*;
class Test2 {
public static void main(String[] args) {
List l = new ArrayList();
l.add("hello");
System.out.println(((String) l.get(0)).length());
}
}
@downvoter,爲什麼downvote?請說明理由。 – 2011-06-03 07:53:28
不知道他們爲什麼低估,但我可以想象一些人(像我)不會同意你的解釋。你應該比較性能是一個MyClass
泛型不會影響運行時性能。但是,它們可能會對您的開發性能產生積極影由於泛型,您可以在編譯期間獲得額外的檢查,所以您可以更快地檢測到某些錯誤。
是的,它會影響性能,因爲編譯器會創建類型轉換。
例如:
List<String> strings = ...
String first = strings.get(0);
將變爲:
List strings;
String first = (String)string.get(0);
然而,這並不重要,因爲之前的Java泛型了這解決了同樣的方式。在Java中,泛型只在編譯時確保類型安全。
- 1. 使用jaxb XMLAdapter會影響性能嗎?
- 2. NSClassFromString會影響性能嗎?
- 3. 使用'this'關鍵字會影響Java性能嗎?
- 4. 在GridView中使用android:numColumns =「auto_fit」會對性能產生影響嗎?
- 5. 如果在Java中循環使用,try catch子句會影響性能嗎?
- 6. Java靜態屬性會影響性能嗎?
- 7. 您使用AWSDBProxy嗎?擴展時性能會受到影響嗎?
- 8. 急於加載會影響性能嗎?
- 9. django adminplus會影響性能嗎?
- 10. BindingExpression(path)錯誤會影響性能嗎?
- 11. Oracle數據泵會影響性能嗎?
- 12. Sysout會影響tomcat的性能嗎?
- 13. Javascript SetTimeOut會影響頁面性能嗎?
- 14. 很多IFRAME會影響性能嗎?
- 15. GAC中有未使用的程序集會影響性能嗎?
- 16. web.config中未使用的行會影響性能嗎?
- 17. 使用require()是否會影響性能?
- 18. 長類型名稱會影響性能嗎?
- 19. 做數據類型選擇會影響性能嗎?
- 20. 使用CALayer來顯示CGPaths會影響iOS的性能嗎?
- 21. 使用_config.GetSection(「section」)[「key」]會對性能產生影響嗎?
- 22. 使用漸變會影響WP7的性能嗎?
- 23. 未使用的mysql表會影響網站性能嗎?
- 24. 使用scriptlet會影響JSP的性能嗎?
- 25. 使用KMS進行AWS RDS加密會影響性能嗎?
- 26. 使用完全限定名稱會影響性能嗎?
- 27. setTimeout()會影響性能
- 28. Java -verbose:gc性能影響?
- 29. 使用視圖模型可以組織代碼,但會影響性能嗎?
- 30. 在MySQL中乘以rand()會影響性能嗎?
比較什麼影響性能? – Arne 2017-08-15 13:18:38