DITA-OTのプロファイルリング

DITA-OTを使っておられるお客様から「最近遅いんだよね~」などという話をうかがうことがあります。

DITA-OTは[DITA-OT]/build.xmlとそこから呼ばれる[DITA-OT]/plugins/[プラグインフォルダの名前]/build.xmlで定義される処理を順に実行するApache antを使ったアプリケーションと言っても良いはずです。ですのでどこでどのように時間がかかっているのかを調べるには、antのプロファイリングの機能を使えば出来ちゃいます。

Printing Ant target execution time

もしあなたが開発者でDITA-OTをoXygenから起動しているなら、antのコマンドラインにloggerのクラスを登録します。こうするとantは各ステップの実行時間を出力してくれるようになります。これはTransormation scenarioのAdvancedタブのAdditional argumentsに-logger org.apache.tools.ant.listener.ProfileLoggerと入れます。

イメージ 1


たとえば以下はこうして出力されたログの一例です。

Target map2pdf5: started Sun Apr 13 17:54:42 JST 2014
...
Target map2pdf5: finished Sun Apr 13 17:55:12 JST 2014 (30044ms)

これだとmap2pdf5は約30秒かかっているのがわかります。

もしDITA-OTをコマンドラインで起動しておられるのなら[DITA-OT]/startcmd.batを起動して、そこからantを呼び出す行を変えるだけです。例えば次のバッチファイルは[DITA-OT]/batにあります。

[sample.bat]
set d=D:\DITA-OT\DITA-OT1.8.M2\samples\
ant -l %d%out\taskbook.log -logger org.apache.tools.ant.listener.ProfileLogger -Dargs.input=%d%taskbook.ditamap -Dtranstype=pdf5 -Dclean.temp=no -Doutput.dir=%d%out -Ddita.temp.dir=%d%temp

このバッチファイルを起動すればD:\DITA-OT\DITA-OT1.8.M2\samples\out\taskbook.log に結果が出てくれます。

難点はantの各ステップの所要時間が出るので、例えばechoにかかる時間まで

echo: started Sun Apr 13 17:54:42 JST 2014
     [echo] Start generating merged middle file.
echo: finished Sun Apr 13 17:54:42 JST 2014 (1ms)

などとロギングされてしまうことでしょうか。

でも、DITA-OTのbuild.xmlを読める方なら、およそどこのステップに時間がかかっているか分析できるはずです。

DITA-OTも最新は2.0になったようです。今使っているDITA-OTと比べて早くなっているか、調べてみるのも良いのではないかと思います。