Saturday, July 27, 2013

mixer2-cacheableをリリースしました。

mixer2-cacheableをリリースしました。 ソースはこちら。 ドキュメントはjavadocくらいしかないので、とりあえずここでざっくり書いときます。

maven使いの方はこんな感じ。 (追記:cache-apiとmixer2本体も別途指定が必要ということを忘れてましたので今朝加筆。) それ以外の方はいつものようにhttp://mixer2.org/dist/にあるアーカイブを使ってください。 mixer2-cacheable-1.0.1-jars.zip にはmixer2本体や依存jarも同梱されています。

単なるMixer2Engineのラッパーなので、使い方は簡単です。 いままでorg.mixer2.Mixer2Engine を使っていた部分を CacheableMixer2Engine を使うようにするだけです。

たとえばSpringMVC上でMixer2EngineをこんなふうにDIしていた場合、
変更前:
変更後:
とするだけです。

エンジンが読み込もう(loadHtmlTemplate/checkAndLoadHtmlTemplate)とするxhtmlテンプレート文字列のSHA-1ハッシュ値が自動的にキャッシュのキーとして使用されます。

デフォルトでは、同梱のorg.mixer2.cacheable.SimpleCacheが使用されます。 これはjavax.cache.Cache(JSR-107)仕様に対するごく簡単な実装になっています。 キャッシュの格納先としてConcurrentHashMapを使っているだけです。

JSR-107準拠のキャッシュ実装に差し替えることももちろん可能です。 たとえばSpringMVCを使っている場合、 これでCachableMixer2Engineに指定のキャッシュ実装のインスタンスがDIされます。

気になる性能ですが、これはhtmlテンプレートのサイズによってだいぶ異なります。 だいだい2倍から4倍程度の性能向上は見込めるでしょう。 ただし、mixer2がテンプレートのロードで頼っているJAXBのunmarshalerそれ自体が結構速いので、 たとえば80msecかかっていた処理が10msecになるみたいな劇的なことにはなりにくいです。 もともと6msec程度で済んでいたテンプレートロードが2msecになるとか、そのくらいの効果ととらえるほうがよいでしょう。

No comments:

Post a Comment