Personal tools
You are here: Home ブログ 井上 Tomcatの姑息な最適化
« December 2010 »
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 entries
Apache2.4のリリース予定は来年(2011年)初め(あくまで予定) inoue 2010-12-23
Herokuの発音 inoue 2010-12-20
雑誌記事「ソフトウェア・テストPRESS Vol.9」の原稿公開 inoue 2010-12-18
IPA未踏のニュース inoue 2010-12-15
労基法とチキンゲーム inoue 2010-12-06
フロントエンドエンジニア inoue 2010-12-03
ASCII.technologies誌にMapReduceの記事を書きました inoue 2010-11-25
技術評論社パーフェクトシリーズ絶賛発売中 inoue 2010-11-24
雑誌連載「Emacsのトラノマキ」の原稿(part8)公開 inoue 2010-11-22
RESTの当惑 inoue 2010-11-22
「プログラマのためのUXチートシート」を作りました inoue 2010-11-19
「ビューティフルコード」を読みました inoue 2010-11-16
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
Add comment

You can add a comment by filling out the form below. Plain text formatting.

(Required)
(Required)
(Required)
This helps us prevent automated spamming.
Captcha Image


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