在Mac上安装"perf"

wlh*_*hee 31 macos profiling performancecounter perf osx-mavericks

我需要"perf"实用程序来监控我的Mac上的程序.我知道linux附带了它,但它可以在Mac上使用吗?

我正在研究OSX 10.9 Mavericks并尝试使用perf或linux工具进行"端口搜索",但我无法获得任何结果.

Man*_*lva 20

正如@Sami Laine在评论中所说,Linux perf工具依赖于Linux特定代码.它依赖于未标准化的perf_event_open系统调用.

注意:也许您可以搜索MacOSX用户如何使用最新的硬件性能计数器.

  • @thirty,MacOSX用户可以通过`Instruments`应用程序访问硬件性能计数器.有手册如何使用它们:http://stackoverflow.com/a/13075880/196561 (5认同)

Gab*_*iel 17

在 OSX 上,您可以samplefiltercalltree.

如果您在没有命令的情况下运行它们,两者都有有用的帮助文本,但是以 1 毫秒分辨率对默认 10 秒的进程 ID 1234 进行采样的调用示例如下:

sample 1234 -f output.prof
filtercalltree output.prof
Run Code Online (Sandbox Code Playgroud)

生成调用图后,FlameGraph是另一个用于可视化调用图的出色工具,并且它支持sample通过脚本生成调用图stackcollpase-sample.awk

  • 到底怎样才能做到这一点呢? (14认同)

nen*_*hev 13

在MacOS上,您可以使用"Instruments"应用程序来分析您的代码.我喜欢使用"Time Profiler",它会告诉你应用程序在执行过程中各个部分的时间.我自己没有使用过perf,但是从我看过的谈话/视频看来这似乎是最常用的.

要使用"Time Profiler":

  1. 运行Instruments,选择Time Profiler
  2. 在左上角,选择目标(可执行文件)
  3. 点击左上方的"录制"按钮,让它运行一段时间.
  4. 暂停或停止执行并在主窗口中深入查看您的呼叫.

希望这可以帮助.

  • 它可以分析除时间之外的任何硬件事件吗?例如缓存未命中或分支预测错误? (2认同)