Field Reportsの性能測定
Field ReportsがPDFを生成する速度を測定してみました。
測定環境
PC | DELL PowerEdge T100 |
---|---|
CPU | Core 2 Quad Q8400 2.66GHz |
Memory | 4GB |
HDD | SATA 160GB |
OS | Cent OS 5.5 |
測定方法
Pythonで以下のようなスクリプトを作成してコマンドラインから実行しました。
コマンドライン引数により,作成する帳票のページ数と繰り返し回数を指定できるようになっています。
処理時間の計測には,timeコマンドを使用しました。
用意した帳票は,明細項目が6行ある見積書で,印影の画像を1つ配置しています。
#!/usr/bin/env python # coding: utf-8 import sys from field import reports param = { "template": [ {"*": "./mitumori.pdf"} ], "context": [] } context = { "date": {"value": "${NOW}", "datetime": "GGEE年MM月DD日"}, "number": "10R0001", "to": "△△△惣菜株式会社", "title": "肉じゃがの材料", "delivery_date": "平成23年1月22日", "delivery_place": "貴社指定場所", "payment_terms": "銀行振込", "expiration_date": "発行から3ヶ月以内", "stamp1": {"icon": "./stamp.png"}, "table": [ ["1", "N001", "牛肉(切り落とし)", "200g", "250円", "500円"], ["2", "Y001", "じゃがいも(乱切り)", "3個", "30円", "90円"], ["3", "Y002", "にんじん(乱切り)", "1本", "40円", "40円"], ["4", "Y003", "たまねぎ(くし切り)", "1個", "50円", "50円"], ["5", "Y004", "しらたき", "1袋", "80円", "80円"], ["6", "Y005", "いんげん", "1袋", "40円", "40円"] ], "sub_total": "800円", "tax": "40円", "total": "840円" } if __name__ == "__main__": if len(sys.argv) == 3: reports.set_log_level(0) for i in range(int(sys.argv[1])): param["context"].append(context) for i in range(int(sys.argv[2])): print(i) reports.render(param, "out.pdf")
測定果(1)
合計1,000ページになるように,ページ数と繰り返し回数を調整して実行しました。
頁数 | 繰り返し回数 | 1回目(s) | 2回目(s) | 3回目(s) | 平均速度(ms/頁) |
---|---|---|---|---|---|
1 | 1,000 | 43.862 | 43.614 | 43.647 | 43.7 |
10 | 100 | 42.369 | 42.251 | 42.310 | 42.3 |
100 | 10 | 45.552 | 44.963 | 45.020 | 45.2 |
1,000 | 1 | 55.672 | 55.154 | 55.815 | 55.5 |
印影画像を外したパターンでも測定してみました。
頁数 | 繰り返し回数 | 1回目(s) | 2回目(s) | 3回目(s) | 平均速度(ms/頁) |
---|---|---|---|---|---|
1 | 1,000 | 25.577 | 25.334 | 25.412 | 25.4 |
10 | 100 | 23.957 | 23.987 | 23.982 | 24.0 |
100 | 10 | 27.013 | 26.994 | 27.480 | 27.0 |
1,000 | 1 | 34.840 | 34.985 | 34.936 | 34.9 |
測定結果(2)
長時間運用時の安定性を確認するために,10ページの帳票を100,000回作成しました。
頁数 | 繰り返し回数 | 処理時間(s) | 処理速度(ms/頁) |
---|---|---|---|
10 | 100,000 | 40,444.99 | 40.5 |