我对 Mac 上的 Shark-profiling 有疑问。
假设我有一个 C 程序,编译为:
gcc -o mycprog mycprog.c -g -pg
而且我还有一个shell脚本,例如:
for file in ($SomeDirectory)
do
mycprog $file
done
我需要分析 $SomeDirectory 中所有文件的平均性能。
我应该把shark -i
命令放在哪里?谢谢。
由于各种原因,这不是一个好方法 - 理想情况下,您应该修改程序的外循环,以便它可以处理命令行上的所有文件,然后您可以在一次运行中完成所有操作:
$ shark -i
$ mycprog $SomeDirectory/*
如果你不能这样做,那么你需要为系统范围的分析设置你的 Shark 配置,并在你的 bash 循环之前开始分析,然后停止分析。当您随后在 Shark 中查看配置文件时,您将能够过滤掉您不感兴趣的进程。
首先打开 Shark(GUI 应用程序),设置您的配置并启用远程控制 ( Sampling
=> Programmatic
)。确保你有Time Profile
并Everything
选择了。
然后从命令行:
$ chudRemoteCtrl -s "mycprog"
$ sleep 1
$ for f in $SomeDirectory/*
$ do
$ mycprog $SomeDirectory/$f
$ done
$ chudRemoteCtrl -e