Вы можете использовать такой класс, он также включает запись в окно вывода 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
Используется условный символ ТАЙМЕРЫ, который можно добавить в вашу программу через свойства проекта Visual Studio или с помощью #define (уверен, что вам придется иметь дело со штрафами за время создания класса).
Вы можете прочитать больше об этом в моем блоге . Но это по-русски.