在Xcode的工具中,有一个名为Counters的工具,该工具可公开CPU提供的低级计数器信息,例如执行的指令数或高速缓存未命中数:
这类似于Linux 2.6.32中引入的Linux syscall perf_event_open
。在Linux上,我可以使用perf_event_open
,然后在我感兴趣的代码部分周围进行启动/停止分析。我想在OS X上记录相同类型的统计信息:计算某条代码的指令(等)代码量,并以自动化方式获得结果。 (我不想使用Instruments GUI来分析数据。)
是否有任何API允许这样做(例如:使用dtrace或类似方法)?通过一些搜索,听起来好像私有(private)的AppleProfileFamily.framework可能具有必要的钩子(Hook),但是尚不清楚如何进行链接或使用它。
最佳答案
在GNU / Linux中,我使用Intel的PCM来监视CPU利用率。我不确定这在OSX上是否能正常工作,但是据我所知,源代码中包括MacMSRDriver目录。我没有任何OSX设备,无论如何都不要对其进行测试。
如果此源在您的设备上编译,请运行:pcm.x -r -- your_program your_program_parameter
或者,如果您想进行高级分析,请改用pcm-core.x
,或者您可以基于pcm-core.cpp
构建自己的代码
关于macos - 在没有仪器的情况下在OS X上记录性能监视器计数器(PM事件)的值,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/32536551/