我是靠谱客的博主 隐形啤酒,这篇文章主要介绍pprof函数名未翻译、为函数地址0x00000232382788,现在分享给大家,希望可以做个参考。

这几天在分析一个性能未达预期的功能,使用gperftools cpu profiler生成后,使用pprof格式化的时候,发现pprof出的结果函数名未翻译、为函数地址,如下所示:

每个节点代表一个函数,节点数据格式: 
Class Name 
Method Name 
local (percentage) #不包含内部其他函数调用所消耗的CPU时间(内联函数除外) 
of cumulative (percentage) #整个函数消耗的CPU时间,包括函数内部其他函数调用所消耗的CPU时间,如果与local相同,则不打印

还有一种形式为0x00000232382788形式,经google以及推测实验,主要是因为相关的动态库没有使用-g编译,或者指定了编译选项-gstabs+所致。

带正确-g调试信息的pprof应该是如下格式:

 从其中可知,sprintf占了大约1/3的时间,由于这功能主要是就是导出符合要求的TXT文件,故确实大量使用了sprintf调用,实际上很多调用可以提前预处理好,同时在代码中处理的也是如此。同时因为是好计算的,实际上可能使用strcpy代替可能会更好。strcpy和sprintf的性能测试对比如下:

https://blog.csdn.net/tronteng/article/details/7225577

 怎么说呢,相比java的jprofiler,gperftools的分析结果不是特别直观。可能和开源有一定的关系吧,比如j2se自带的jvisualvm对真正性能profiler就不理想。

最后

以上就是隐形啤酒最近收集整理的关于pprof函数名未翻译、为函数地址0x00000232382788的全部内容,更多相关pprof函数名未翻译、为函数地址0x00000232382788内容请搜索靠谱客的其他文章。

本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
点赞(44)

评论列表共有 0 条评论

立即
投稿
返回
顶部