我google-perftools
用来分析我用 C++ 编写并用 g++4.5.2 编译的程序。pprof
告诉我getaliasbyname_r()
占用了56%的cpu时间!到底是做什么的getaliasbyname_r()
?为什么需要这么多cpu时间?有没有办法缓解这个问题?谢谢。编译标志是:-O3 -DNDEBUG -Wall -Wno-deprecated -Wno-sign-compare
. 系统:ubuntu 11.04。
很抱歉没有把问题说清楚。我没有在我的代码中直接使用 getaliasbyname_r() 。在分析工具“pprof”生成的调用图中,我可以看到树“ start--> _libc_start_main-->main-->...”占 cputime 的大约 44%。除了这棵大树,调用图中还有另一棵孤立的单节点树——getaliasbyname_r。如图所示,它没有调用,也没有被任何其他函数调用。我用谷歌搜索了这个功能并被引导到http://linux.die.net/man/3/getaliasbyname_r。但这并没有太大帮助。我仍然不知道如何调用 getaliasbyname_r() 以及为什么需要这么多 cputime。这个问题现在有意义吗?
回复阿德里安:谢谢您的回复。总运行时间约为 28 秒。分析器以 100/秒的速率采样。所以总共有大约2800个样本。getaliasbyname_r() 中掉了大约 1500 个,想出了一个我写的函数(捕获了大约 450 个样本)。