Thymeleaf3がどのくらい2より速くなってるか、あとJDK9のcompact stringは有利に働くかどうか、ベンチマークを取ってみました。
結果として、Thymeleaf3は2より3倍速く、JDK9では遅くなっていて、compact stringは関係なさそうという感じ。
あと、Pebble速い。(というかThymeleaf遅い)
まとめると、こう。単位はops/sで、大きいほど良い。
Thymeleaf | cache on | no cache | |
---|---|---|---|
3.0.2 on JDK1.8 | 16378.948 | 376.295 | |
3.0.2 on JDK9 | 11239.364 | 404.544 | |
2.1.5 on JDK1.8 | 4621.328 | 1690.995 | |
2.1.5 on JDK9 | 4185.943 | 1505.521 | |
Pebble on JDK1.8 | 86571.846 | ||
Pebble on JDK9 | 79746.853 |
キャッシュなしだとThymeleaf2のほうが速いというのも面白い。
ついでにPebbleも試したけど、いずれにせよThymeleaf遅いな。
JDK1.8の設定はこんな感じ
# VM version: JDK 1.8.0_112, VM 25.112-b15 # VM options: <none>
JDK9の設定はこんな感じ
# VM version: JDK 9.0.1, VM 9.0.1+11 # VM options: <none>
compact stringをはずしてみたらこんな感じ
Thymeleaf | cache on | no cache | |
---|---|---|---|
3.0.2 on JDK9 cs | 11239.364 | 404.544 | |
3.0.2 on JDK9 no-cs | 11502.128 | 383.660 | |
2.1.5 on JDK9 cs | 4185.943 | 1505.521 | |
2.1.5 on JDK9 no-cs | 4175.685 | 1541.948 | |
Pebble on JDK9 cs | 79746.853 | ||
pebble on JDK9 no-cs | 87707.230 |
Thymeleafは差はなさそう。Pebbleはcompact string外した方が速くなってる。
no-csがcompact stringなしで、VMオプションはこんな感じ。
# VM version: JDK 9.0.1, VM 9.0.1+11 # VM options: -XX:-CompactStrings
ついでに、パラメータが英語だけの場合も試してみたけど、compact stringの効果はなさそう。en付のデータ。
Thymeleaf | cache on |
---|---|
3.0.2 on JDK9 cs en | 12934.452 |
3.0.2 on JDK9 no-cs en | 12877.672 |
2.1.5 on JDK9 cs en | 4286.138 |
2.1.5 on JDK9 no-cs en | 4287.446 |
Pebble on JDK9 cs en | 83942.007 |
Pebble on JDK9 no-cs en | 92066.631 |
あと、テンプレートキャッシュが効かないと劇的に重いので、サーバーレスでやろうとするならテンプレートもプレコンパイルの仕組みが必要そう。