Что такое счетчики производительности? - PullRequest
3 голосов
/ 24 сентября 2010

Что такое счетчики производительности и как они работают?Они специфичны для Windows или являются концепцией уровня операционной системы и также доступны в Linux и т. Д.

Как я могу использовать их в своем приложении .NET для измерения времени выполнения различных частей моего приложения?

Я гуглил, но на удивление не нашел хороших ссылок.

Ответы [ 2 ]

2 голосов
/ 24 сентября 2010

Счетчики производительности, как концепция, представляют собой измеримые отчетные метрики, которые ядро ​​или приложение могут сообщать операционной системе.Примерами счетчиков производительности являются нагрузка на процессор, использование памяти, пропускная способность сети и т. Д.Это не только аппаратное обеспечение;веб-сервер может сообщать, сколько сеансов он обрабатывает, или сервер БД может сообщать о количестве соединений и запросов / сек.По крайней мере, в Windows вы можете создать свой собственный для вашего приложения;если у вас есть серверное приложение, которое обрабатывает входные файлы в базе данных, вы можете сделать так, чтобы оно сообщало о своей пропускной способности в файлах / сек или КБ / сек.Вы можете сообщать о времени безотказной работы сервера в течение нескольких часов или в процентах от времени, прошедшего с момента его установки.

Способ доступа или создания счетчиков производительности будет довольно сильно различаться в зависимости от среды разработки (язык, структура, библиотеки) и целевой ОС, но я не могу представить себе современное ядро, которое не может хотя бы сообщить о производительности оборудования.

1 голос
/ 24 сентября 2010

Счетчики производительности в .Net специфичны для Windows. Я не думаю, что использование счетчиков производительности для измерения времени выполнения - это хороший способ, это усложнит ситуацию, чем я подозреваю. Visual Studio содержит инструмент повышения производительности. Если перейти в меню «Вид» - «Другие окна» - «Обозреватель производительности», откроется окно «Обозреватель производительности», в котором можно нажать кнопку «Запустить мастер производительности». Еще одна возможность - использовать класс секундомера, который будет использовать таймер высокого разрешения, если он установлен на вашем компьютере:

        Int64 nanoSecPerTick = (1000L * 1000L * 1000L) / Stopwatch.Frequency;
        Stopwatch timer = Stopwatch.StartNew();
        // execute the code that you want to time
        timer.Stop();
        Int64 nanoSec = timer.ElapsedTicks / nanoSecPerTick;
        // or if you don't need such fine grained timing:
        Int64 milliSec = timer.ElapsedMilliseconds;
        Console.Write("Elapsed time: " + nanoSec + "ns");
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...