Personal tools
You are here: Home ブログ 井上
« August 2009 »
Su Mo Tu We Th Fr Sa
            1
2 3 4 5 6 7 8
9 10 11 12 13 14 15
16 17 18 19 20 21 22
23 24 25 26 27 28 29
30 31          
Recent comments
Re:blogのコメントスパムが多すぎる inoue 2010-07-22
Re:マルチスケジューラv5.1.4をリリース - inspired by salesforceのchatter - inoue 2010-06-09
Re:マルチスケジューラv5.1.4をリリース - inspired by salesforceのchatter - hamabe 2010-06-08
Re:雑誌連載「Emacsのトラノマキ」の原稿(part4)公開 tune 2010-05-27
Re:雑誌連載「Emacsのトラノマキ」の原稿(part4)公開 tune 2010-05-27
Re:Emacs23.2が更に1ビット稼いだ秘密 inoue 2010-05-14
Re:Emacs23.2が更に1ビット稼いだ秘密 ef 2010-05-13
Re:TestLinkのUI考察 ef 2010-04-11
Re:「パーフェクトJava」輪講向け講演資料 kawagoe 2010-04-05
Re:grepに数多くのバグ? matsuyama 2010-03-25
Re:バベル Anonymous User 2010-03-24
Re:「パーフェクトJava」輪講向け講演資料 Asaga 2010-03-18
Categories
カテゴリなし
 
Document Actions

Tomcatの姑息な最適化

家で社内に流れているtracのメールを見ていたらTomcatの一部のデフォルト設定がデバッグ向けになっていることを知りました。下記リンク先のdevelopment設定です。

知りませんでした。

Tomcatの設定ファイルのリファレンスのトップ(http://tomcat.apache.org/tomcat-6.0-doc/config/index.html)から1クリックのリンク先はすべて目を通していた(覚えているわけではない)のですが、上記のJSP周りの設定は別にあるので全然知りませんでした。設定ファイルリファレンスにすべてが網羅されていると思っていたので、だまされた気分です。

それはともかく。

ここで注目したいのがgenStringAsCharArrayです。名前からしてCっぽい最適化の匂いがします。

この設定を使っているのは

  • [Tomcatのソースツリー]/java/org/apache/jasper/compiler/Generator.java

内の

  • public void visit(Node.TemplateText n) throws JasperException {

の中です。

次の1900行目です。

visitメソッドのやっていることは、JSPファイル内の通常テキストをJavaのサーブレット用コードのout.write("...")に変換することです。簡単に言えば、JSPファイル内に abc と書くと、Javaのサーブレット用コードの out.write("abc") になり、HTTPのレスポンス出力の一部になる、という理屈です。CGIを知っている人はout.writeが標準出力処理に相当すると考えてください。

以下、説明が繁雑になるのでエスケープ処理は無視しています。

genStringAsCharArrayがfalseの場合(デフォルト)、普通に out.write("abc") 相当の文字列を生成します。

genStringAsCharArrayをtrueにすると、次のようなコードを生成します(JSPに書いた文字列が abc の場合)。

static char[] _jspx_char_array_1 = "abc".toCharArray(); // 実際にはクラスフィールド
out.write(_jspx_char_array_1);

上記の _jspx_char_array_ の部分は固定文字列です。1 の部分は内部的にインクリメントする数値です。

高速化のポイントは、一度現れた"abc"をキーにして_jspx_char_array_1の名前を内部で記憶しておくことです。2度目に同じ文字列"abc"がJSPに現れると、生成されるコードは次の行だけになります。

out.write(_jspx_char_array_1);

姑息です。少しTomcatが好きになりました。

ところで、これ本当にパフォーマンスの効果はあるのでしょうか。

The URL to Trackback this entry is:
http://dev.ariel-networks.com/Members/inoue/tomcat-tuning/tbping

Copyright(C) 2001 - 2006 Ariel Networks, Inc. All rights reserved.