MUSASHIの処理速度の目安を示すために、ここでは簡単なベンチマークテストを行なっている。
単純にスクリプトを5回実行し、その平均所要時間を計測している(CPU時間を計測したりはしていない)。
データはランダムに生成し、10、50、100、200万行のデータに対して計測を行なっている。
単純に、処理スクリプトを5回実行し、その平均所要時間を計測している(CPU時間を計測したりはしていない)。
| ファイル名 | 行数 | サイズ | キーの種類数 | |||
| key1 | key2 | key3 | key4 | |||
| dat100000.xt | 10万 | 約10M | 63,077 | 10,000 | 1,000 | 100 |
| dat500000.xt | 50万 | 約50M | 99,360 | 10,000 | 1,000 | 100 |
| dat1000000.xt | 100万 | 約100M | 99,997 | 10,000 | 1,000 | 100 |
| dat2000000.xt | 200万 | 約200M | 100,000 | 10,000 | 1,000 | 100 |
各データの中身は以下のようになっている。
<?xml version="1.0" encoding="euc-jp"?> <xmltbl version="1.1"> <header> <field no="1" name="No"></field> <field no="2" name="key1"></field> <field no="3" name="key2"></field> <field no="4" name="key3"></field> <field no="5" name="key4"></field> <field no="6" name="qtty"></field> <field no="7" name="price"></field> <field no="8" name="rand1"></field> <field no="9" name="rand2"></field> <field no="10" name="date1"></field> <field no="11" name="time1"></field> <field no="12" name="date2"></field> <field no="13" name="time2"></field> <field no="14" name="s1"></field> <field no="15" name="s2"></field> <field no="16" name="s3"></field> <field no="17" name="s4"></field> </header> <body><![CDATA[ 00000001 139438 103943 100394 100039 2 178 415 34174 20030701 000000 20040819 09 2934 123 123 123 123 00000002 178309 107830 100782 100078 3 256 726 67759 20030701 000000 20050626 18 4919 123 123 123 123 00000003 179843 107984 100798 100079 3 259 738 69084 20030701 000000 20050708 19 1124 123 123 123 123 00000004 191164 109116 100911 100090 3 281 828 78865 20030701 000000 20051006 21 5425 123 123 123 123 00000005 119755 101975 100197 100020 1 139 258 17168 20030701 000000 20040315 04 4608 123 123 123 123 00000006 133522 103352 100335 100033 2 167 368 29063 20030701 000000 20040703 08 0423 123 123 123 123 00000007 176822 107682 100767 100076 3 253 714 66474 20030701 000000 20050614 18 2754 123 123 123 123 00000008 127777 102777 100277 100027 2 155 322 24099 20030701 000000 20040518 06 4139 123 123 123 123 00000009 155396 105539 100553 100055 2 210 543 47962 20030701 000000 20041225 13 1922 123 123 123 123 00000010 147739 104773 100477 100047 2 195 481 41347 20030701 000000 20041024 11 2907 123 123 123 123 |
1. ベンチマーク用スクリプト一式をダウンロードし、解凍&展開する。
$ tar zxvf bench.tar.gz |
2. benchというディレクトリができているはずなので、そのディレクトリに移り、以下の3つのスクリプトがあることを確認する。
$ cd bench |
| スクリプト名 | 解説 |
| mkdat.sh | ベンチマーク用のデータを生成する。indatディレクトリに行数の異なる8つのデータを生成する。 |
| bench.sh | ベンチマークを実施し、resultディレクトリに計測結果を保存する。 |
| mkhtml.sh | resultディレクトリの計測結果を集計し、bench.shで指定した名前のディレクトリにHTMLドキュメント一式を生成する。 |
3. mkdat.shを実行し(5〜10分)、indatディレクトリに以下の8つのファイルができていることを確認する。
$ ./mkdat.sh |
| 区分 | ファイル名 | 解説 |
| テスト用データ | dat100.xt | 100行のデータ |
| dat500.xt | 500行のデータ | |
| dat1000.xt | 1000行のデータ | |
| dat2000.xt | 2000行のデータ | |
| 本番用データ | dat100000.xt | 10万行のデータ |
| dat500000.xt | 50万行のデータ | |
| dat1000000.xt | 100万行のデータ | |
| dat200000.xt | 200万行のデータ |
4. ベンチマークスクリプトをテストモード(小さいデータを利用)で実行する(1分以内に終了する)。
実行ログをファイルに保存するために "&>log"を入れておく(画面には何も表示されないようになる)。
$ ./bench.sh all test &>log |
logの中身を確認し、エラーメッセージが出力されていないことを確認する。
また、正しく実行されていれば、resultディレクトリに結果ファイルが書き出されているはずである。
5. ベンチマークスクリプトを本番モードで実行する。
実行ログをファイルに保存するために "&>log"を入れておく(画面には何も表示されないようになる)。
本番の実行には、マシンのスペックにもよるが、2時間以上かかるので、昼休みもしくは就寝中におこなうことを勧めます。
$ ./bench.sh all &>log |
注)このベンチマークスクリプトでは、timeコマンド等で実際のCPU利用時間を計測したりはしておらず、コマンドの起動から終了までの実時間を計測しているだけである。そのため、bench.shスクリプトを実行する際は、余分なプロセスが裏で実行されないよう気をつけて下さい。
6. 現在のマシン環境に関する以下の4つのデータをmkhtml.shスクリプトに記述する(詳細はスクリプト内に説明している)。
7. 結果を集計し、HTMLファイルを生成する(瞬時に終る)。
$ ./mkhtml.sh |
8. 手順6で入力したベンチマーク名のディレクトリの下にHTMLドキュメント"table.html"ができているのでWEBブラウザで開き、内容を確認する。