(C#)ベンチマークを簡単に計測する方法
作ったもの
C#で処理速度を計測するためには、System.Diagnostics.Stopwatch を使います。ただ、これを毎回書くのは結構疲れてしまうので、簡単に計測できる関数を作りました。
コード
/// <summary> /// 1秒程度を消費して処理速度を測定する。 /// </summary> /// <param name="rambda">引数なし、戻り値なしのラムダ関数</param> /// <returns>1回あたり処理にかかったミリ秒</returns> static double Benchmark(Action rambda) { var sw = new System.Diagnostics.Stopwatch(); sw.Start(); int i = 0, loop = 1; while (true) { rambda(); ++i; --loop; if(loop == 0) { if(sw.ElapsedMilliseconds > 500) { break; } loop = i; } } return (sw.ElapsedMilliseconds * 1.0 / i); }
使い方
// 文字列の置き換え処理を1秒間繰り返して、1回あたり掛かった時間を表示します。 int ms = Benchmark(() => { "あいうえおかきくけこ".Replace("かきくけこ", "か行"); }); MessageBox.Show(ms + "[ms]");