GWT优化

时间:2011-07-27 14:04:08

标签: java performance gwt

第一行在GWT中的工作速度会比第二行快吗?在不同的GWT版本中,在JavaScript中翻译此代码是否存在差异?

ArrayList<String> list = new ArrayList<String>(); 

List<String> list = new ArrayList<String>(); 

据我所知,如果我将编写declearet类型List,JavaScript性能将是最差的,因为将检查此List LinkedList或ArrayList或其他类型的列表。是不是?

如果我要写

,它会提高性能吗?
ArrayList<String> list = new ArrayList<String>(); 

而不是

List<String> list = new ArrayList<String>(); 

3 个答案:

答案 0 :(得分:4)

两条线都是等价的。 GWT编译器执行称为“类型收紧”的优化。您可以通过在编译模块时定义Java环境属性来观察编译器如何优化特定方法:

-Dgwt.jjs.traceMethods=Hello.onModuleLoad:OtherClass.otherMethod

来自JProgram来源:

  

跟踪方法的格式是以冒号分隔的“className.methodName”列表,例如“Hello.onModuleLoad:Foo.bar”。您可以完全限定类以消除类的歧义,并且还可以附加方法的JSNI签名以消除重载的歧义,“Foo.bar(IZ)”。

答案 1 :(得分:0)

我不确定,但我认为当你使用List&lt; ...&gt;作为服务方法的返回类型,编译器必须编译所有List实现,因此如果使用ArrayList,它将生成更大的代码

答案 2 :(得分:0)

它们之间没有区别,都转换为非类型的JavaScript数组。毕竟你也可以使用String [],它在编译代码中没有任何区别。