任何人都可以告訴我,如果其中的任何一個在Java 1.6下編譯的性能都會比其他編譯器更好?假設爲MyObject是一個領域的一類叫做listField具有getter和setterJava性能:獲取和設置列表
樣品#1:
MyObject obj = new MyObject();
List<String> lst = new ArrayList<String>(1);
lst.add("Foo");
obj.setListField(lst);
樣品#2:
MyObject obj = new MyObject();
obj.setListField(new ArrayList<String> (1));
obj.getListField().add("Foo");
我的想法是創建一個ArrayList的本地實例將創建內存開銷,但是隻要您想添加到列表中,就調用getListField()並不像訪問列表的本地版本那麼快。也許如果有幾個項目要添加到列表中,樣品#1更快,但只有少數項目樣品#2更快?或者編譯器是否會優化它,以便調用getListField()等同於訪問列表的本地版本?
明確地提前優化。 – Tom 2010-08-16 19:02:25
去任何更可讀。 – 2010-08-16 21:23:29
局部變量不需要花費任何東西。一旦將代碼編譯爲本地機器語言,它們通常不會消耗任何內存。(只要代碼仍然被解釋,顯然不足以以任何方式進行優化。) – 2010-08-21 05:15:09