我没有找到适用于我的 MacOS 解决方案gprof并且gcov对我不起作用,但是gperftools(Google 性能工具)确实有效。以下是在 MacOS 上安装它们的方法:
brew install google-perftools graphviz ghostscript gv
brew link --overwrite ghostscript
Run Code Online (Sandbox Code Playgroud)
接下来,在程序上运行探查器:
CPUPROFILE=program_name.prof DYLD_INSERT_LIBRARIES=/usr/local/Cellar/gperftools/2.6.3/lib/libprofiler.dylib ./program_name
pprof --pdf program_name program_name.prof > program_name.pdf
Run Code Online (Sandbox Code Playgroud)
您可以gperftools 在此处找到更多选项。最后,program_name.pdf在 PDF 查看器(如预览)中打开文件以享受精美的graphviz输出。
显然,使用 Bash 脚本可以很容易地在程序上运行分析器,因为只有一个program_name参数并且共享库位置是恒定的。这是一个名为的示例脚本profile.sh,它完全执行此操作,但包括编译并添加第二个变量,以便您可以编译.cpp具有不同名称的文件:
#!/bin/bash
g++-7 -fopenmp -O3 -o $1 $2.cpp
CPUPROFILE=$1.prof DYLD_INSERT_LIBRARIES=/usr/local/Cellar/gperftools/2.6.3/lib/libprofiler.dylib ./$1
pprof --pdf $1 $1.prof > $1.pdf
echo "Profiling results: $1.pdf"
Run Code Online (Sandbox Code Playgroud)
接下来,修改权限,使其可以从任何文件夹运行:
chmod +x profile.sh
Run Code Online (Sandbox Code Playgroud)
可以从命令行调用脚本,如下所示,自动化整个过程:
./profile.sh program_name cpp_name
Run Code Online (Sandbox Code Playgroud)
您可能希望将编译和分析步骤分开,这很容易通过删除g++-7shell 脚本中的行来完成。
| 归档时间: |
|
| 查看次数: |
10794 次 |
| 最近记录: |