ベンチマークを取り続ける為にやってる小技
たしか,実践ハイパフォーマンスMySQL に書いてたテクニックだと思うんですけど.
ベンチマークを取る時に同時に lock file を作っておいて,それが存在し続ける限りベンチを回し続ける,という風にすると何かと便利.
setvbuf(stdout, NULL, _IONBF, 0); // stdout のバッファリングを無効にしておく (しなくても良い) char *bench_lock_file = "./bench.lock"; fopen(bench_lock_file, "w"); // ここでロックファイル作る // lock ファイルが存在している間,処理を回し続ける while (access(bench_lock_file, F_OK) != -1) { // ここで何らかのベンチマーク的な処理をさせる printf("Bench no Kekka Dayo!\n"); }
これをコンパイルして,
$ ./a.out > ./bench_result.log
という感じでやってやるとベンチの結果が延々延々取れる.
(なお,上のコードでバッファリングを無効にしたのは tail -f
等でログファイルを見たかったからです.)
「ベンチ回すのをやめる!!」という時は
$ rm bench.lock
という風に lock ファイルを消してやると,回っている最中のベンチが回り終わったらプログラムを終了させることが出来ます.
便利!
実践ハイパフォーマンスMySQL,MySQL の話だけではなくてこういう技法についても言及されていて有益な感じでした.
- 作者: Baron Schwartz,Peter Zaitsev,Vadim Tkachenko,菊池研自(監訳),株式会社クイープ
- 出版社/メーカー: オライリージャパン
- 発売日: 2013/11/25
- メディア: 大型本
- この商品を含むブログ (6件) を見る