コーディングをしていると、「この処理ってどれくらい時間がかかってるの?」と気になってとにかく処理時間を簡単に計測してみたくなることがあります。そんな時に、特別なライブラリを使わずに初心者でも簡単に計測できる方法について解説していきます。
Stopwatchクラスを使用した時間計測
C#で時間を計測する方法はいくつかありますが、今回はとりあえずミリ秒単位で簡単に時間を計測したいのでStopwatchクラスを使用します。使い方は以下の通りです。
Stopwatch sw = new Stopwatch();
sw.Start();
// ここに計測したい処理を書く
sw.Stop();
// コンソールに出力
Console.WriteLine($"処理時間: {sw.ElapsedMilliseconds}ミリ秒");
Stopwatchクラスは名前の通り、ストップウォッチのように使用できるクラスで、Startで計測を開始してStopで一時停止します。Elapsed(=経過)の名が付いたElapsedMillisecondsで現在のミリ秒単位の経過時間が取得できます。ただし、このまま上記の一番下の行に「sw.Start();」を追記して実行すると最初にStartしたところからの継続した経過時間として加算されていくので注意してください。(実際のストップウォッチと同じですね。)
for文などの繰り返し処理の途中で使用する場合など、再度計測を始める場合はRestartを使用して、以下のように処理することで毎回経過時間を0にリセットして再スタートさせることができます。(初回実行時もRestartを使用して大丈夫です。)
Stopwatch sw = new Stopwatch();
for (int i = 0; i < 100; i++)
{
sw.Restart();
// ここに計測したい処理を書く
sw.Stop();
// コンソールに出力
Console.WriteLine($"処理時間({i}回目): {sw.ElapsedMilliseconds}ミリ秒");
}
また、処理の途中までの時間が知りたい場合などはStart/RestartからStopの間にElapsedMillisecondsを入れて出力すると確認できます。(「// ここに計測したい処理を書く」の位置に何個いれても問題ありません。)
まとめ
今回は、C#でとにかく簡単に処理時間を計測する方法をご紹介させていただきました。大抵の場合、処理時間の計測は開発中のみ必要な処理だと思いますので、#if DEBUG~#endifなどを使用してデバッグ時のみ実行するか、削除しておくのも忘れないでくださいね。デバッグ時のみ実行する方法は以下の記事でも解説していますのでチェックしてみてください。
\ おすすめ書籍 /