您可以使用这样的类,它还包括记录到 Visual Studio 的输出窗口:
public static class TimerCalls
{
private static Dictionary _Stopwatches = new Dictionary();
[ConditionalAttribute("TIMERS")]
public static void StartStopwatch(string key)
{
if (_Stopwatches.ContainsKey(key)) //Stopwatch already running
return;
_Stopwatches.Add(key, Stopwatch.StartNew());
}
[ConditionalAttribute("TIMERS")]
public static void StopStopwatch(string key)
{
if (!_Stopwatches.ContainsKey(key))//No such stopwatch currently
return;
var watch = _Stopwatches[key];
watch.Stop();
_Stopwatches.Remove(key);
Debug.WriteLine(String.Format("Timer: {0}, {1}ms ---- {2}", key,
watch.Elapsed.TotalMilliseconds, DateTime.Now));
}
}
和“如何使用”:
TimerCalls.StartStopwatch("Operations");
// many operations..
TimerCalls.StopStopwatch("Operations");// Timer: Operations, 508ms ---- 27.06.2012 11:41:06
它使用条件符号 TIMERS,可以通过 Visual Studio 项目属性或使用 #define 将其添加到您的程序中(确保您需要处理类创建时间惩罚)。您可以在我的博客文章中阅读更多关于此的内容。但它是俄语的。