[mayaa-user:1012] Re: ビルド時にClassLoaderSourceDescriptor.prepareURL()の処理時間が高騰してしまいました

suga [E-MAIL ADDRESS DELETED]
2014年 2月 16日 (日) 00:52:11 JST


suga です。

2014-02-12 18:19 GMT+09:00 Susumu ISHIGAMI <susumu.ishigami @ gmail.com>:
> 見たところ、PageSourceDescriptor.collectSourceDescriptor()で
> ClassLoaderSourceDescriptorをnewで生成してしまっていますので
> 現状では設定により外すことはできないように思われます。

はい、この挙動を変えたい場合は PageSourceDescriptor に該当するクラスを作成して
org.seasar.mayaa.source.PageSourceFactory ファイルの serviceClass に指定する形での
カスタマイズをする想定です。

PageSourceDescriptor をカスタマイズされているということなので、既にその方法を
取られているのではないかと思いますが、そうであれば collectSourceDescriptor() を override してください。


> ClassLoaderSourceDescriptor.prepareURL
>> IOUtil.getResource()
> の効率化が可能でしたらご検討頂ければと思います。

ClassLoaderSourceDescriptor#prepareURL() を呼ぶ回数は、
Engine 設定の checkTimestamp が false の場合であれば減らせそうです。

--
suga ( ko.suga @ gmail.com )


2014-02-12 18:19 GMT+09:00 Susumu ISHIGAMI <susumu.ishigami @ gmail.com>:
> 石上です。
>
> いつもお世話になっております。
>
> VisualVMのサンプラーを使用してMayaaテンプレートビルド時の処理時間を計測をしたところ、
> 次の箇所での処理時間の99%を占めていることがわかりました。
> org.seasar.mayaa.impl.util.IOUtil.getResource()
>
> 呼び出し元は
> org.seasar.mayaa.impl.source.ClassLoaderSourceDescriptor.prepareURL()
> となっていて、
>
> この中で
>         if (_url == null) {
>             ClassLoader loader = Thread.currentThread().getContextClassLoader();
>             _url = IOUtil.getResource(path, loader);
>         }
> と言う箇所があり、
> IOUtil.getResource(path, loader);
> がnullの場合、このロジックに何回も突入してしまうのではないかと思われます。
> ここでIOUtil.getResourceがnullだった時と、まだIOUtil.getResourceを実行していない
> nullの状態を判断できるようにすれば効率化出来るのかもしれません。
>
> 私のアプリケーションではPageSourceDescriptorもクラスローダーもカスタマイズしていますので、
> 通常の使い方ではこんなにパフォーマンスのボトルネックにならないのかもしれません。
> 私は、ClassLoader内にテンプレートやmayaaファイルを格納する使い方は
> していませんので、
> ClassLoaderSourceDescriptor
> をPageSourceDescriptorから取り除かれるように設定できませんでしょうか?
>
> 見たところ、PageSourceDescriptor.collectSourceDescriptor()で
> ClassLoaderSourceDescriptorをnewで生成してしまっていますので
> 現状では設定により外すことはできないように思われます。
>
> ClassLoaderSourceDescriptor.prepareURL
>> IOUtil.getResource()
> の効率化が可能でしたらご検討頂ければと思います。
> _______________________________________________
> mayaa-user mailing list
> mayaa-user @ ml.seasar.org
> https://ml.seasar.org/mailman/listinfo/mayaa-user


mayaa-user メーリングリストの案内