代码之家  ›  专栏  ›  技术社区  ›  Anthony K

在VisualC++中创建自定义性能计数器

  •  5
  • Anthony K  · 技术社区  · 18 年前

    有人知道使用普通非托管Visual C++创建自定义性能计数器的方法吗?

    我还知道您可以检索性能计数器数据,但我需要创建一些自定义计数器,并在应用程序运行时增加它们。

    4 回复  |  直到 14 年前
        1
  •  7
  •   Dale Wilson    11 年前

    在Vista和Exchange中添加C++性能计数器的支持发生了变化。在另一个答案中建议的性能DLL方法仍然有效,但新技术描述了 here 更容易使用。

    在这种方法中,您编写一个描述计数器的清单,运行CTRPP,这是一个从清单生成代码的工具。编译此代码并将其与应用程序链接,添加一个初始化进程的调用(它启动一个后台线程),并根据需要添加代码以更新计数器。发布计数器的详细信息由运行生成代码的后台线程处理。

    您还需要运行lodctr/m:[清单文件]来注册计数器,然后才能使用它们。这必须作为管理员运行。

    顺便说一句:另一个程序,unlodctr反转lodctr的效果,如果您对计数器进行任何更改,因为没有“替换”操作,则必须使用该程序,只删除旧的,然后安装新的。

    <咆哮>上面所有内容的文档都非常糟糕。例如,lodctr完全为Vista重新编写,但MSDN中的文档仅适用于XP版本,不再适用。如果您访问MSDN,请随意使用“此文档没有帮助”按钮,Microsoft可能会收到此消息。</咆哮>

        2
  •  6
  •   Johannes Passing    18 年前

    http://msdn.microsoft.com/en-us/library/aa371925.aspx

    这不是很难,但有点乏味,因为API涉及到广泛使用自引用、可变长度结构,并且必须使用一些IPC机制来从被监视的进程获取数据。

        3
  •  3
  •   1800 INFORMATION    18 年前

        4
  •  1
  •   Anthony K    18 年前

    我在寻找更容易实现的东西。我可能不得不使用这种方法。我的一位同事(感谢PJ)也向我展示了一个Scribble教程,该教程经过修改,显示了如何使用ATL类添加性能计数器: PerformanceScribble Sample: Performance Monitoring in an MFC Application

    这里最大的缺点是,目前我的应用程序不使用MFC或ATL,我必须添加对它的支持。

    推荐文章