記憶永続化用のメモブログ

脳内に揮発性記憶領域しかないことに気づいたので作成

Freemarkerって遅いの?

なんか現行のシステムがString#formatでタグ作ってたから、テンプレートエンジン使うと遅いのかなって思って簡単な調査。


FreeMarkerTest
※ 上記コードは1000000回ループ。

10回ループ

試行回数 Freemarker String#format()
1 90962000 (0) 60003000 (0)
2 98667000 (0) 37471000 (0)
3 92529000 (0) 33368000 (0)
4 106556000 (0) 33661000 (0)
5 89869000 (0) 35237000 (0)
平均 95716600 (0) 39948000 (0)

ナノ秒(括弧内の数値はYoungGCの処理時間(秒))

10回のループだと平均で3倍弱速かった。
ただし、各Runner#run()の開始から終わりまでSystem.nanoTime()の差分を計ったら

ループ回数 Freemarker String#format()
1 95704000 35038000
2 315000 546000
3 269000 504000
4 280000 383000
5 272000 387000
6 262000 412000
7 248000 383000
8 302000 396000
9 265000 401000
10 246000 373000

だったので、ループ開始時の初回のみ大きく差が出ていてそれ以外は大きく差が出ていなかったので速度自体はそんなに変わらないっぽい。

1000000回

試行回数 Freemarker String#format()
1 13621484000 (0.095908) 14490797000 (0.112314)
2 13510582000 (0.106299) 13599284000 (0.103076)
3 13726206000 (0.065058) 13826649000 (0.106106)
4 13704940000 (0.077895) 13838695000 (0.091303)
5 13746025000 (0.110715) 13656157000 (0.090931)
平均 13661847400 (0.091175) 13882316400 (0.100746)

ナノ秒(括弧内の数値はYoungGCの処理時間(秒))

結果、そんなに変わらない。