2008-09-11 87 views
5

有誰知道使用普通非託管Visual C++創建自定義性能計數器的方法嗎?在Visual C++中創建自定義性能計數器

我知道這可以使用託管C++輕鬆完成,但我需要使用非託管Windows服務來完成。

我也知道您可以檢索性能計數器數據,但我需要創建一些自定義計數器並在應用程序運行時期間增加它們。

回答

1

我一直在尋找更容易實施的東西。我可能不得不使用這種方法。 PerformanceScribble Sample: Performance Monitoring in an MFC Application

這裏最大的缺點是,目前我的應用程序沒有按」:我也被同事(感謝PJ)表示,目前已被修改,以說明如何使用ATL類添加性能計數器塗鴉教程中所示不要使用MFC或ATL,我必須添加對它的支持。

2

請勿使用ATL性能監視器類。我知道他們很容易添加,他們有一個巫師和所有,但他們是絕望的竊聽。我將它們添加到我的一個開發應用程序中,然後在6個月後不得不通過並將代碼撕掉。總而言之,大約3個星期的工作失去了噪音。

4

添加C++性能計數器的支持在Vista及更高版本中進行了更改。在另一個答案中提出的性能DLL方法仍然有效,但描述的新技術here更易於使用。

在這種方法中,您編寫一個描述計數器的清單,運行CTRPP,一個從清單生成代碼的工具。編譯並鏈接此代碼與您的應用程序,並添加一個調用以初始化該進程(它啓動後臺線程),並添加代碼以根據需要更新計數器。發佈計數器的細節由運行生成代碼的後臺線程處理。

您還需要運行lodctr/m:[清單文件]來註冊您的計數器,然後才能使用它們。這必須以管理員身份運行。

BTW:另一個程序,unlodctr反轉lodctr的效果,必須使用,如果你對你的計數器做任何修改,因爲沒有「替換」操作,只刪除舊的,然後安裝新的。

<RANT>所有上述文件都很糟糕。例如,lodctr完全重寫了Vista,但MSDN中的文檔全部爲XP版本,不再適用。如果您訪問MSDN,請使用「此文檔無用」按鈕,也許Microsoft會收到該消息。 </RANT >

相關問題