kamidanaにバッチモードをつけてみた
kamidanaにバッチモードをつけた。これは実験的な機能でまだmasterにはマージされていない。 やっぱり一回のコマンドで終わらせたほうが早いので欲しくなってしまった。
ただまだ見通しが良い感じにできていない(そういう意味でもまだ実験的)。
実行時間の比較
雑に単純なテンプレートを3回実行する処理の時間を測る。
個別にレンダリングした場合
個別にレンダリングした場合の時間は以下。
$ time make 00 echo '{"name": "foo"}' | kamidana -i json hello.j2 --dst 00out/foo.hello echo '{"name": "bar"}' | kamidana -i json hello.j2 --dst 00out/bar.hello kamidana hello.j2 --data me.json --dst 00out/me.hello real 0m0.727s user 0m0.696s sys 0m0.030s
この時のテンプレートは以下のようなもの。
hello {{name}}
まとめてレンダリングした場合
まとめてバッチモードでレンダリングした場合は以下の様な感じ。kamidanaではなくkamidana-batchコマンドを使う。 jinja2の読み込みなどに時間が掛かるのでやっぱり一回で終わらせたほうが早い。
$ time make 01 kamidana-batch 01batch.json --outdir=01out INFO:kamidana.driver:out: 01out/foo.hello INFO:kamidana.driver:out: 01out/bar.hello INFO:kamidana.driver:out: 01out/me.hello real 0m0.250s user 0m0.233s sys 0m0.017s
この時渡したファイルは以下のようなもの。
01batch.json
[ {"template": "./hello.j2", "data": {"name": "foo"}, "outfile": "foo.hello"}, {"template": "./hello.j2", "data": [{"name": "bar"}], "outfile": "bar.hello"}, {"template": "./hello.j2", "data": "me.json", "outfile": "me.hello"} ]
以下のフィールドは必須
- template
- outfile
makefile
作業を行った時のmakefile
default: $(MAKE) 00 $(MAKE) 01 diff -ur 00out 01out # onefile 00: echo '{"name": "foo"}' | kamidana -i json hello.j2 --dst 00out/foo.hello echo '{"name": "bar"}' | kamidana -i json hello.j2 --dst 00out/bar.hello kamidana hello.j2 --data me.json --dst 00out/me.hello # batch 01: kamidana-batch 01batch.json --outdir=01out clean: rm -rf 00out 01out