2008-09-11 3 views
5

Кто-нибудь знает о методе создания настраиваемых счетчиков производительности с использованием обычного неуправляемого Visual C++?Создание пользовательских счетчиков производительности в Visual C++

Я знаю, что это можно сделать легко с помощью управляемого C++, но мне нужно сделать это с помощью неуправляемой службы Windows.

Я также знаю, что вы можете получить данные счетчика производительности, но мне нужно создать некоторые пользовательские счетчики и увеличить их во время выполнения приложений.

ответ

6

Смотрите здесь: http://msdn.microsoft.com/en-us/library/aa371925.aspx

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

1

Я искал что-то более легкое для реализации. Вероятно, мне придется использовать этот подход. Я также показал коллега (спасибо PJ), что есть Scribble учебник, который был изменен, чтобы показать, как добавить счетчик производительности с использованием ATL классов: PerformanceScribble Sample: Performance Monitoring in an MFC Application

Большим недостатком является то, что в настоящее время мое приложение Безразлично» t используйте MFC или ATL, и мне придется добавить поддержку для него.

2

Не используйте классы контроля производительности ATL. Я знаю, что их легко добавить, и у них есть мастер и все, но они безнадежно прослушиваются. Я добавил их в одно из моих приложений для разработки на работе, затем пришлось пройти через 6 месяцев и разорвать код. В целом за 3 недели работы потеряли этот шум.

4

Поддержка добавления счетчиков производительности C++ изменена в Vista и за ее пределами. В DLL-подход, предложенный в другом ответе, все еще работает, но новая методика, описанная here, проста в использовании.

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

Вам также необходимо запустить lodctr/m: [файл манифеста], чтобы зарегистрировать ваши счетчики, прежде чем они могут быть использованы. Это должно быть запущено как администратор.

BTW: Другая программа, разблокирующая эффект lodctr, должна быть использована, если вы внесете какие-либо изменения в свои счетчики, потому что нет операции «заменить», удалите только старое, а затем установите новое.

<RANT> Документация для всех вышеперечисленных просто ужасна. Например, lodctr был полностью переработан для Vista, но документ в MSDN предназначен для версии XP и больше не применяется. Если вы посещаете MSDN, пожалуйста, используйте кнопку «Эта документация не рекомендуется», и, возможно, Microsoft получит сообщение. </RANT >

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