2010-06-15 14 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