- PR -

カスタムタグのパフォーマンスについて。。

1
投稿者投稿内容
sumin
ベテラン
会議室デビュー日: 2003/07/17
投稿数: 93
投稿日時: 2003-08-15 01:55
いきなりですが、つい思い出した事がありまして。。

例えばの話で、JSPファイルの中でカスタムタグを多用しているとただJSPだけのページよりパフォーマンスが悪くなるのではと言う事を思いましたがこれは正しいでしょうか?

つまり、JSP自体はServletに変換されて実行されるときは各ページは一つのServletのスレッドとして実行され表示されますが、もしそのページの中でカスタムタグを沢山使っているとしたら、カスタムタグって実はJavaBeansだから毎回ページが表示されるたびに新しいJavaBeansのインスタンスが生成される事になり、カスタムタグを使わないページに比べパフォーマンスが悪くなるのでは?と思いましたが。。。
もし、上記が正しかったら、カスタムタグは開発の効率は上げてくれるかも知らないけど実行時のパフォーマンスは悪くなると言う結論になりますけど、これは正しい推測でしょうか?

ご意見下さい。
たーぞう
ぬし
会議室デビュー日: 2003/08/08
投稿数: 317
お住まい・勤務地: お花畑
投稿日時: 2003-08-15 09:48
引用:

suminさんの書き込み (2003-08-15 01:55) より:
つまり、JSP自体はServletに変換されて実行されるときは各ページは一つのServletのスレッドとして実行され表示されますが、もしそのページの中でカスタムタグを沢山使っているとしたら、カスタムタグって実はJavaBeansだから毎回ページが表示されるたびに新しいJavaBeansのインスタンスが生成される事になり、カスタムタグを使わないページに比べパフォーマンスが悪くなるのでは?と思いましたが。。。



カスタムタグって実はJavaBeansじゃないです
javax.servlet.jsp.tagext.BodyTagSupportを継承した「タグハンドラ」と呼ばれるものがカスタムタグの正体で、これ(ってゆーかタグライブラリディスクリプタ)をweb.xmlの中に記述することによりwebアプリケーションサーバの起動時にインスタンスが生成されます。

JavaBeansは、何らかのデータを保持しておいて、必要なときにデータを取り出すために用いるもので、カスタムタグに必須のものというわけではありません。

まぁスクリプトレットで記述されたものと比較すると、カスタムタグのメソッド呼び出しなどで余計な時間がかかるのは事実ですが、それほどパフォーマンスが悪化するわけではないと思いますが。
もちろん、作り方にもよりますけどね
山本 裕介
ぬし
会議室デビュー日: 2003/05/22
投稿数: 2415
お住まい・勤務地: 恵比寿
投稿日時: 2003-08-15 11:45
以前自分でカスタム taglib を書いたところ、release()メソッドを適切に記述しておらず、Tomcatでは動いていたのに WebLogicでうまくうごかなかったことがあります。(WLSではなく、私のコードの問題です。)

実際に Tomcat のコードを調べたわけではありませんが、Tomcat(3.2.xかな?)は taglib のインスタンスをリクエスト毎に生成して、WebLogic ではインスタンスを使い回しているのではないかと考えました。
商用のサーブレットコンテナではしっかりインスタンスを使い回してくれるのではないでしょうか? WebSphereについてはしらべていません。
まぁ、ランタイムの微妙なパフォーマンスよりも開発生産性のほうが重視される傾向にありますが、気になるのであれば jMeter などで検証してみてはいかがでしょうか。

[ メッセージ編集済み 編集者: インギ 編集日時 2003-08-15 11:59 ]

[ メッセージ編集済み 編集者: インギ 編集日時 2003-08-15 12:00 ]
sumin
ベテラン
会議室デビュー日: 2003/07/17
投稿数: 93
投稿日時: 2003-08-15 19:47
ご返事ありがとうございます。(インギさんにはよくお世話になっております。)
実は、以前にもインギさんから答えて頂いた通り、最近ウェブアプリの負荷テストを行っておりましてその関係の質問をしていました。

確かに私が読んだ本によりますとカスタムタグは根本的にはJavaBeansだよと言う記述がありましたので呆然とそう思っていましたが違うんでしたね。でも、Servletだったら基本的に新しいインスタンスを作るのではなくマルチスレッドで動くのではないかなと、また呆然と思っていたりしますけど。。

まあ、もうちょっと調べて見ます。

ありがとうございました。
1

スキルアップ/キャリアアップ(JOB@IT)