2012-03-07 5 views
5

gprof 프로파일 러를 g++과 함께 사용했습니다.특정 코드 행에서`gprof '시간이 걸렸습니다

필자는 자신의 기능으로 나누기에 충분하지 않은 기본 기능과 관련이있는 동작의 여러 섹션을 캡슐화하는 코드가 있습니다.

각 코드 영역에서 얼마나 많은 시간을 소비했는지 알고 싶습니다.

A, B, C는 내가 관심이있는 코드의 특정 부분을 나타내는
function(){ 
    A 
    A 
    A 
    B 
    B 
    B 
    C 
    C 
    C 
} 

가 얼마나 말해 gprof을 얻을 수있는 방법이 같은

그래서, 당신이 상상할 경우 코드가 보인다 시간은 그 특정 섹션에서 일하는 데 소비됩니까?

+2

프로그램을 더 빠르게 실행하려면 * [gprof보다 잘 할 수 있습니다.] (http://stackoverflow.com/questions/1777556/alternatives-to-gprof/1779343#1779343)) * –

답변

2

다음은 유용한 리소스입니다. gprof line by line profiling.

이전 버전의 gcc 컴파일러에서는 gprof -l 인수가 라인별로 프로파일 링되도록 지정되었습니다.

그러나 gcc의 최신 버전에서는 gprof 대신 gcov 도구를 사용하여 줄 단위 프로파일 링 정보를 표시합니다. 당신이 리눅스를 사용하는 경우 여기에 설명 된대로

6

나는 그것이 오래된 질문이지만, 흥미로운 대답을 발견했다. Sam이 말하는 것처럼 -l 옵션은 오래된 gcc 컴파일러에만 사용됩니다. 그러나 나는 당신이 컴파일하고 -pg -fprofile-arcs -ftest-coverage과 링크하면 프로그램을 실행하면 gprof -l의 결과가 매우 흥미 롭다는 것을 알게되었습니다.

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) 

이것은 한 줄에 소요 된 시간입니다. 매우 흥미로운 결과입니다. 정확성이나 유효성을 알 수는 없지만 매우 흥미 롭습니다. 도움이 되었으면 좋겠다

관련 문제