[C#] 正確な処理時間の計測

仕事でC#上にてミリ秒単位での処理時間の比較を行うことがあり
その時にStopWatchClassを使ったため、以下にメモを残す

まず復習として・・・C言語(Win32API)で最も正確な処理時間は
QueryPerformanceCounter()やQueryPerformanceFrequency()によって計測する。
なお、ミリ秒単位での計測を望まない場合は、このAPIを使う必要は無いが
TimerControl等の精度が低いものによっては100msのIntervalでも誤差が生じるため
状況に応じて使い分ける必要がある。(一番精度の低いものはWM_TIMERで呼び出されるもの
参考URL : MSDN QueryPerformanceFrequency Function()

そして本題であるC#での正確な処理時間を行う場合は
System.Diagnostics内のStopWatch Classを用いる。
但し、.NET Framework 2.0以降である必要がある。
使い方としては、インスタンスを生成し、Start()とStop()でおk(笑
参考URL : MSDN Stopwatchクラス(System.Diagnostics)

簡単すぎる・・・C言語の時の苦労は何処へやら・・・
但し、相変わらずCPUの分解能のサポートは必要らしい。

出力はElapsedMillisecondsメンバ変数によって
ミリ秒単位での経過時間をlong型で取得出来るため、そのまま出力。

SampleCodeを続きに示す。
  1. using System;
  2. using System.Diagnostics;
  3.  
  4. namespace StopWatchSample
  5. {
  6. const int sleepTime = 1000;
  7.  
  8. /// <summary>
  9. /// Entry Point
  10. /// </summary>
  11. public void Main()
  12. {
  13. Stopwatch sw = new Stopwatch();
  14.  
  15. // StopWatch Start
  16. sw.Start();
  17. // Thread Sleep[ms]
  18. System.Threading.Thread.Sleep(sleepTime);
  19. // StopWatch Stop
  20. sw.Stop();
  21.  
  22. // ミリ秒単位で出力
  23. long millisec = sw.ElapsedMilliseconds;
  24. Console.WriteLine(millisec);
  25. // (出力例:998)
  26.  
  27. return;
  28. }
  29. }
  30.  
| Programming::C# (WPF) | comments (0) |
コメント
コメントする








(左側の画像に表示されている文字を入力して下さい)
この記事のトラックバックURL
http://wish-star.sytes.net/~gaku/tb.php/147
トラックバック
<< >> 

  

  
PROFILE
GSX-R1000
  • Author : Gaku
  • Age : 22 [1987.03.10]
  • Bike : SUZUKI GSX-R1000 K1 [E-28:Canada]
  • Web!ke : MyGarage
COMMENTS
TRACBACK
SEARCH
CALENDAR
S M T W T F S
1 2 3 4 5 6 7
8 9 10 11 12 13 14
15 16 17 18 19 20 21
22 23 24 25 26 27 28
29 30      
<<   11 - 2009   >>
LINKS
OTHERS
POWERED BY
POWERED BY
ぶろぐん

SKIN BY
ゲットネット...¥

SERVER BY
wish-star.sytes.net