Преимущества оптимизации genStrAsCharArray - PullRequest
3 голосов
/ 15 июня 2010

Я изучаю доступные мне опции для оптимизации производительности JBoss 5.1.0.

Один из вариантов, на которые я обращаю внимание, это установка genStrAsCharArray в true в <JBOSS_HOME>/server/<PROFILE>/deployers/jbossweb.deployer/web.xml. Это влияет на генерацию кода .java из .JSP.

Комментарий описывает этот флаг как:

Должны ли текстовые строки генерироваться как массивы символов, чтобы повысить производительность в некоторых случаях?

У меня есть несколько вопросов по этому поводу.

  1. Это генерация строк в динамических частях страницы JSP (т. Е. Каждый раз, когда вызывается страница) или генерация строк в статических частях (т.е. когда .java создается из JSP)?
  2. "в некоторых случаях" - какие это случаи? В каких ситуациях производительность хуже?
  3. Ускоряет ли это генерацию .java, компиляцию .class или выполнение .class?
  4. На более техническом уровне (и ответ на этот вопрос, вероятно, будет зависеть от ответа на часть 1), почему использование массивов символов может повысить производительность?

Заранее спасибо

Rich

1 Ответ

2 голосов
/ 15 июня 2010

При этой настройке все значения String объявляются как static char[] следующим образом:

static char[] _char_array_1 = "someString".toCharArray();

и используется следующим образом:

out.write(_char_array_1);

вместо использования следующим образом:

out.write("someString");

Это имеет два явных преимущества:

  1. A char[] имеет меньше памяти, чем String.
  2. toCharArray() больше не нужно (неявно) вызывать каждый out.write(string).

Звучит как микрооптимизация, но эти маленькие кусочки очень важны для часто посещаемых веб-сайтов.

Эта настройка, кстати, не относится к JBoss AS. Это Jasper , JSP-компилятор Apache Tomcat, который также используется в каждой JBoss AS и Sun Glassfish.

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