我对mac上的Shark-profiling有疑问。
说我是否有一个C编程,编译时使用:
gcc -o mycprog mycprog.c -g -pg
我还有一个shell脚本:
for file in ($SomeDirectory)
do
mycprog $file
done
我需要分析$ SomeDirectory中所有文件的平均性能。
我应该在哪里放shark -i
命令?感谢。
答案 0 :(得分:0)
由于各种原因,这不是一个很好的方法 - 理想情况下,您应该修改程序的外部循环,以便它可以处理命令行上的所有文件,然后您可以在一次运行中完成所有操作:
$ 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