とまと あんらいぷ…

エンジニアの活動記録とかつぶやきとか

GitHub

【.NET】Stopwatch(ストップウォッチ)を使った実行速度測定用クラス【テスト用】

プログラムコードの速度確認では
Stopwatchを使って計測する事が多いけど、毎回出力処理を書くのが億劫になってきたので
クラス化しておく。

.NET Framework 4(3.5?)からしか使えないと思うが
時々使いましができるかもしれないのでメモメモ。

経過時間を正確に計測できるStopwatch クラスを利用。
使い方は以下のような感じで、計測したいコードを
StartメソッドとStopメソッドに引数(テスト用No)を指定して実行する。

その後Dumpメソッドを実行するとC\TEMPにファイルができます。TEMPフォルダがないと落ちると思う。

出来上がるファイルは日付とテスト用Noを組み合わせたもので、中身は処理時間です。
Stopメソッドが呼び出しされたIndexを条件としてファイル出力します。

ファイル名:20121029202002_TestNo_0.txt
内容:
処理No 0
0.0750594
0.0717569
0.0726305
0.0731859
0.0743963

上記内容をExcelなどに貼り付けてグラフにすることでビジュアル化なりしてください。
速度結果を選択して、グラフの挿入をすると下記のようなアウトプットになります。
メソッドを階層呼び出した時の速度比較

残念ながらマルチスレッドで同一コードが動いた場合、スレッドIDまで考慮して作っていないから
測定結果が正しく取れません。
もし必要な時はクラス変数に用意してあるStopwatch クラスとStringBuilderのSystem.Collections.Generic.List
をDictionaryかなんかにして、スレッドID+連番のような形でStopwatchクラスが自動でAddされるような実装しなおせば大丈夫。

ちなみにソースコードのコピーはD&Dでやると改行が消えてしまうので、ダブルクリック→コピーするとうまくいくよ。

クラスの実装

テーマ:プログラミング - ジャンル:コンピュータ

次のページ

FC2Ad