Оптимизация GWT - PullRequest
       1

Оптимизация GWT

0 голосов
/ 27 июля 2011

Будет ли первая строка работать быстрее, чем вторая строка в GWT? Есть ли разница в переводе этого кода на JavaScript в разных версиях GWT?

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 ]

4 голосов
/ 27 июля 2011

Обе строки эквивалентны.Компилятор GWT выполняет оптимизацию, называемую «сжатие типов».Вы можете посмотреть, как компилятор оптимизирует конкретный метод, определив свойство среды Java при компиляции модуля:

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

Из источника JProgram:

Формат дляМетоды трассировки - это разделенный двоеточиями список «className.methodName», например «Hello.onModuleLoad: Foo.bar».Вы можете полностью квалифицировать класс для устранения неоднозначности классов, а также можете добавить сигнатуру JSNI метода для устранения неоднозначности «Foo.bar (IZ)».

0 голосов
/ 08 августа 2011

Нет никакой разницы между ними, оба преобразованы в нетипизированный массив JavaScript. В конце концов, вы также можете использовать String [], это не будет иметь никакого значения в скомпилированном коде.

0 голосов
/ 28 июля 2011

Я не уверен, но я думаю, что когда вы используете List <...> в качестве типа возврата метода службы, компилятор должен будет скомпилировать все реализации List, чтобы он генерировал больший код, чем если бы вы использовали ArrayList

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...