`gprof` time spent in particular lines of code

后端 未结 3 1692
鱼传尺愫
鱼传尺愫 2021-02-08 23:38

I\'ve been using the gprof profiler in conjunction with g++.

I have a function in my code which encapsulates several sections of behaviour whic

相关标签:
3条回答
  • 2021-02-08 23:47

    Here's a useful resource for you: gprof line by line profiling.

    With older versions of the gcc compiler, the gprof -l argument specified line by line profiling.

    However, newer versions of gcc use the gcov tool instead of gprof to display line by line profiling information.

    0 讨论(0)
  • 2021-02-08 23:58

    If you are using linux, then you can use linux perf instead of gprof, as described here:

    http://code.google.com/p/jrfonseca/wiki/Gprof2Dot#linux_perf

    Typing perf report and selecting a function will allow you to get line-by-line information about where the CPU time is spent inside the function.

    0 讨论(0)
  • 2021-02-09 00:07

    I know it's a old question, but I have found a interesting answer. As Sam say, the -l option is only for old gcc compiler. But I have found that if you compile and link with -pg -fprofile-arcs -ftest-coverage, run the program, the result of gprof -l is very interesting.

    Flat profile:
    
    Each sample counts as 0.01 seconds.
      %   cumulative   self              self     total           
     time   seconds   seconds    calls  Ts/call  Ts/call  name    
     13.86      0.26     0.26                             main (ComAnalyste.c:450 @ 804b315)
     10.87      0.46     0.20                             main (ComAnalyste.c:386 @ 804b151)
      7.07      0.59     0.13                             main (ComAnalyste.c:437 @ 804b211)
      6.25      0.70     0.12                             main (ComAnalyste.c:436 @ 804b425)
      4.89      0.79     0.09                             main (ComAnalyste.c:283 @ 804a3f4)
      4.89      0.88     0.09                             main (ComAnalyste.c:436 @ 804b1e9)
      4.08      0.96     0.08                             main (ComAnalyste.c:388 @ 804ad95)
      3.81      1.03     0.07                             main (ComAnalyste.c:293 @ 804a510)
      3.53      1.09     0.07                             main (ComAnalyste.c:401 @ 804af04)
      3.26      1.15     0.06                             main (ComAnalyste.c:293 @ 804a4bf)
      2.72      1.20     0.05                             main (ComAnalyste.c:278 @ 804a48d)
      2.72      1.25     0.05                             main (ComAnalyste.c:389 @ 804adae)
      2.72      1.30     0.05                             main (ComAnalyste.c:406 @ 804aecb)
      2.45      1.35     0.05                             main (ComAnalyste.c:386 @ 804ad6d)
      2.45      1.39     0.05                             main (ComAnalyste.c:443 @ 804b248)
      2.45      1.44     0.05                             main (ComAnalyste.c:446 @ 804b2f4)
      2.17      1.48     0.04                             main (ComAnalyste.c:294 @ 804a4e4)
      2.17      1.52     0.04                             main (ComAnalyste.c:459 @ 804b43b)
      1.63      1.55     0.03                             main (ComAnalyste.c:442 @ 804b22d)
      1.63      1.58     0.03                             main (ComAnalyste.c:304 @ 804a56d)
      1.09      1.60     0.02                             main (ComAnalyste.c:278 @ 804a3b3)
      1.09      1.62     0.02                             main (ComAnalyste.c:285 @ 804a450)
      1.09      1.64     0.02                             main (ComAnalyste.c:286 @ 804a470)
      1.09      1.66     0.02                             main (ComAnalyste.c:302 @ 804acdf)
      0.82      1.67     0.02                             main (ComAnalyste.c:435 @ 804b1d2)
      0.54      1.68     0.01                             main (ComAnalyste.c:282 @ 804a3db)
      0.54      1.69     0.01                             main (ComAnalyste.c:302 @ 804a545)
      0.54      1.70     0.01                             main (ComAnalyste.c:307 @ 804a586)
      0.54      1.71     0.01                             main (ComAnalyste.c:367 @ 804ac1a)
      0.54      1.72     0.01                             main (ComAnalyste.c:395 @ 804ade6)
      0.54      1.73     0.01                             main (ComAnalyste.c:411 @ 804aff8)
      0.54      1.74     0.01                             main (ComAnalyste.c:425 @ 804b12a)
      0.54      1.75     0.01                             main (ComAnalyste.c:429 @ 804b19f)
      0.54      1.76     0.01                             main (ComAnalyste.c:444 @ 804b26f)
      0.54      1.77     0.01                             main (ComAnalyste.c:464 @ 804b4a1)
      0.54      1.78     0.01                             main (ComAnalyste.c:469 @ 804b570)
      0.54      1.79     0.01                             main (ComAnalyste.c:472 @ 804b5b9)
      0.27      1.80     0.01                             main (ComAnalyste.c:308 @ 804a5a3)
      0.27      1.80     0.01                             main (ComAnalyste.c:309 @ 804a5a9)
      0.27      1.81     0.01                             main (ComAnalyste.c:349 @ 804a974)
      0.27      1.81     0.01                             main (ComAnalyste.c:350 @ 804a99c)
      0.27      1.82     0.01                             main (ComAnalyste.c:402 @ 804af1d)
      0.27      1.82     0.01                             main (ComAnalyste.c:416 @ 804b073)
      0.27      1.83     0.01                             main (ComAnalyste.c:417 @ 804b0a1)
      0.27      1.83     0.01                             main (ComAnalyste.c:454 @ 804b3ec)
      0.27      1.84     0.01                             main (ComAnalyste.c:461 @ 804b44a)
      0.27      1.84     0.01                             main (ComAnalyste.c:462 @ 804b458)
    

    It's say the time spent per line. It's very interesting result. I don't know the accuracy or the validity of that, but it's quite interesting. Hope it's help

    0 讨论(0)
提交回复
热议问题