2010-06-15 13 views
2

我正在研究可用于优化JBoss 5.1.0性能的选项。genStrAsCharArray优化好处

我正在看的其中一个选项是将genStrAsCharArray设置为true in <JBOSS_HOME>/server/<PROFILE>/deployers/jbossweb.deployer/web.xml。这会影响从.JSPs生成.java代码。

的注释说明该标志为:

应的文本字符串作为字符数组生成,提高在某些情况下的表现?

我对此有几个问题。

  1. 这是在JSP页面的动态部分(即每次调用页面时)生成字符串还是生成静态部分的字符串(即.java是从JSP)?
  2. “在某些情况下” - 哪些情况是这些?表现较差的情况是什么?
  3. 这会加速.java的生成,.class的编译还是.class的执行?
  4. 在更技术性的层面(对此的回答可能取决于第1部分的答案),为什么使用char数组可以提高性能?

在此先感谢

丰富

回答

1

通过这个设置,所有String值被声明为static char[]如下:

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

和使用方法如下:

out.write(_char_array_1); 

而不是被用作如下:

out.write("someString"); 

这有两个明显的好处:

  1. 一个char[]具有内存开销比String少。
  2. toCharArray()不需要每(out.write(string))(隐式)调用。

听起来像microoptimization,但这些小点数在重访的网站很多。

这个设置不是JBoss AS特有的。它是Jasper特定的,也是在每个JBoss AS和Sun Glassfish下使用的Apache Tomcat的JSP编译器。

+0

当你说,通过这个设置,所有的字符串值都被声明为static char [],我假定你的意思是从JSP生成的Java源代码中? – Vihung 2014-09-01 13:31:12