zoukankan      html  css  js  c++  java
  • 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就不理想。

  • 相关阅读:
    功能点方法
    学数答题160908-数论不等式
    学数答题160903-函数方程
    学数答题160906-不等式最值
    学数答题160905-函数方程
    学数答题160904-不等式
    学数答题160903-三角函数
    kitti-b站教程
    kitti数据集介绍
    SLAM:理论与实践
  • 原文地址:https://www.cnblogs.com/zhjh256/p/9470745.html
Copyright © 2011-2022 走看看