Хороший способ ведения журнала производительности (C #) - PullRequest
5 голосов
/ 07 января 2010

Я пытаюсь получить подробную информацию о производительности из приложения, которое разрабатывает моя компания. Примерами информации, которую я пытаюсь получить, может быть информация о том, сколько времени занимает сетевая транзакция, сколько ЦП / памяти использует приложение, сколько времени требуется для завершения данного метода и т. Д.

В прошлом у меня были некоторые неудачные попытки (например, попытка измерить небольшие периоды времени с использованием DateTime.Now). Кроме того, я мало что знаю о получении статистики процессора и памяти. Существуют ли какие-либо хорошие классы .Net, библиотеки или платформы, которые могли бы помочь мне собрать такую ​​информацию и / или записать ее в текстовый файл?

Ответы [ 4 ]

7 голосов
/ 07 января 2010
0 голосов
/ 05 июля 2018

для современной библиотеки с открытым исходным кодом для выполнения метрик производительности и мониторинга с учетом использования app-metrics.

GitHub: https://github.com/AppMetrics/AppMetrics веб-сайт https://www.app -metrics.io

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

Для процессора / памяти используйте счетчики производительности. Для получения более конкретной информации о конкретных методах (или строках кода) и конкретных объектах используйте профилировщик. Red-Gate делает отличный профилировщик.

http://www.red -gate.com / продукты / ants_performance_profiler

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

Счетчики производительности - это один из способов, и класс System.Diagnostics.Stopwatch - это хорошее место для поиска таких возможностей.

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

Класс секундомера - это оболочка для высокопроизводительного таймера, обеспечивающая разрешение в микросекундах или наносекундах в зависимости от процессора или платформы. Если вам не нужно такое высокое разрешение, вы можете использовать System.DateTime..Now.Ticks, чтобы получить текущий счетчик тактов для тактовой частоты процессора и выполнить дифференциальную математическую обработку с этим, давая вам точность в миллисекундах или выше для большинства операций.

При отслеживании статистики ЦП следует помнить, что несколько процессоров и несколько ядер усложнят любую точную статистику в некоторых случаях.

Еще одно предостережение относительно счетчиков производительности, имейте в виду, что не все счетчики производительности есть на всех машинах. Например, счетчики ASP.NET отсутствуют на компьютере, на котором не установлен IIS и т. Д.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...