Таймер выполнения C # 2.0 - PullRequest
       21

Таймер выполнения C # 2.0

5 голосов
/ 06 января 2010

Я бы хотел рассчитать количество времени, которое требуется для выполнения ряда функций. Я думал об использовании некоторого типа класса секундомера. Я могу вызывать start / stop до и после каждого вызова функции, однако мне это кажется ужасно уродливым. Есть ли способ сделать это без класса секундомера? Может ли что-то в классе Reflections помочь с этим?

Заранее спасибо за ваш вклад.

Ответы [ 5 ]

3 голосов
/ 06 января 2010

Я думаю, вы должны попробовать способ PostSharp http://www.postsharp.org/

Изменение кода в образце для этого:

public class ProfileMethodsAttribute : OnMethodBoundaryAspect 
{ 
  public override void OnEntry( MethodExecutionEventArgs eventArgs) 
  { eventArgs.MethodExecutionTag = Stopwatch.StartNew();  } 

  public override void OnExit( MethodExecutionEventArgs eventArgs) 
  { 
     // Here u can get the time
     Console.WriteLine(((Stopwatch)eventArgs.MethodExecutionTag).ElapsedMilliseconds);
  } 
}

Вы можете получить свободное время любым способом

2 голосов
/ 06 января 2010

Я рекомендую спонсора тега производительности ... Красные Врата Муравьев . Вы можете получить демонстрацию, которая запустит ваше приложение и предоставит вам информацию о производительности для каждой строки и каждого метода, к которому обращается ваше приложение во время его профилирования.

1 голос
/ 06 января 2010

вы можете поместить класс секундомера в атрибут, используемый для украшения ваших методов, то есть стиль AOP проверить это

1 голос
/ 06 января 2010

я думаю, вам следует подумать об использовании профилирования кода ... Использовать внешнее приложение, такое как Ants Profiler , для профилирования вашего кода? Антс из Red Gate и не бесплатный, но я думаю, что есть также несколько бесплатных приложений с открытым исходным кодом.

Некоторые бесплатные / открытые профилировщики здесь ...

Это нормально, что секундомер тут и там нормально, но попытка сделать это для каждого метода в вашем решении быстро станет громоздкой.

0 голосов
/ 06 января 2010

Существуют различные таймеры. System.Timers.Timer будет одним из таких. Но, как показывает предыдущий ответ, вы уверены, что это правильное решение проблемы, которую вы фактически пытаетесь решить?

...