2010-09-24 3 views
3

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

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

Я googled, но на удивление не нашел отличных ссылок.

ответ

2

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

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

1

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

 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"); 
+0

Инструмент производительности вы упомянули только в изданиях премиум или Ultimate. – adrianbanks

Смежные вопросы