автоматическая регистрация и статистика (приложение C #) - PullRequest
3 голосов
/ 04 июля 2011

Я пытаюсь найти лучший способ ввести статистику и войти в свою программу.1. У кого-нибудь есть хорошая статья о статистике, которую можно реализовать в программе?
2. Могу ли я создать атрибут, который должен быть перед каким-либо методом, который вызывает таймер для измерения времени, необходимого для выполнения? Например,

class A
{
  [RunTimer]
  public void Foo()
  {
     // do stuff
  }
}

РЕДАКТИРОВАТЬ
хорошо, мы хотим иметь возможность контролировать статистику во время выполнения, а не только в режиме ob dev или QA.

Ответы [ 4 ]

5 голосов
/ 04 июля 2011

Один из вариантов - создать функцию более высокого порядка, которая будет синхронизировать целевую функцию и записывать результаты:

public static class TimingExtensions
{
    public static Func<R> Time<R>(this Func<R> target, Action<string> logger)
    {
        return delegate
        {
            System.Diagnostics.Stopwatch s = new System.Diagnostics.Stopwatch();

            s.Start();

            R value = target();

            s.Stop();

            logger("Function '" + target.Method.Name + "' elapsed ms: " + s.ElapsedMilliseconds); 

            return value;
        }; 
    }
}

Но если вам нужно провести серьезное тестирование производительности, то для этого также есть фреймворки.

4 голосов
/ 04 июля 2011
4 голосов
/ 04 июля 2011

Performance Counters ваши друзья. .NET Instrumentation Workshop - это замечательная статья, которая шаг за шагом проведет вас через весь процесс.

После того, как у вас есть свои алгоритмы, вы можете использовать для них все виды статистики.

Кроме того, счетчики можно контролировать во время выполнения двумя способами:

  • Изменить, обновляет ли ваше приложение счетчики перфектов с помощью переключателя файла конфигурации
  • Изменить, какие обновления вы отслеживаете через PerfMon

Таким образом, вы не привязаны просто к коду разработчика, но вы также можете использовать их в рабочем коде. Конечно, вы можете не захотеть, чтобы все они работали постоянно, поэтому использование переключателя конфигурационного файла пригодится.

2 голосов
/ 04 июля 2011

Если вы хотите использовать библиотеку PostSharp, вы можете использовать некоторые из их примеров счетчиков производительности на основе AOP.

...