つかびーの技術日記

情報系修士卒のWeb系技術日記です。現在のフォーカス分野はアドテクです。

twirlはコンパイルが遅い どれくらい遅いのか測りました

      2015/03/22

twirlというScalaのテンプレートエンジンがあるのですが、どうやらこれはコンパイルが遅いらしいです。どれくらい遅いのか測ってみました。

プラグインを入れて、以下のファイルを用意してコンパイルします。

sbt clean compileで計測します。

テンプレファイル数 コンパイル時間
0 7 sec
1 7 sec
5 8 sec
10 9 sec

こんな感じになりました。拡張子が.htmlでも時間はほとんど同じでした。

もう少し複雑なテンプレートも試しておきます。

こんなにforを繰り返す必要はありませんが・・・実戦的なコードだとこれくらいには行数が増えてくるかと思います。

では試してみます。

テンプレファイル数 コンパイル時間
0 7 sec
1 10 sec
5 14 sec
10 16 sec

そこそこ大きいファイルが沢山あると遅いですね・・・

ちなみに今回はcleanしましたが、cleanしない場合は差分コンパイルになるので、テンプレートを1つも変えなければ速いです。手元で試した感じだと0 secでした。一部のみ変えると9 secとかでした。

結論

  • そこそこ大きいテンプレファイル10個で +16 sec (マシンによりますが)
  • テンプレを変えない場合はその分のコンパイルは走らない (毎回cleanしたら別ですが)

自分はサーバサイドエンジニアなのですが、半分くらいはフロントのエンジニアもやってます。その立場からすると差分コンパイルありとは言え、テンプレ1個変えてコンパイル+9秒とかかかると厳しい感じありますね。・・・というかフロントとか関係なく、ちょっと修正して+9秒はScalaコンパイルをさらに遅くして微妙ですね。

みなさんも選択は慎重に・・・!ちなみに自分はメール本文のテンプレートとしてのみ利用しています。

 - Scala, ライブラリ