2012-08-27 3 views
0

이제 프로파일 링 할 프로젝트가 생겼지 만, 내가 통제 할 수없는 다른 라이브러리를 사용했습니다. 다음과 같은 함수가 있다고 가정 해 봅시다 :gprof에서 계산 된 시간에는 프로파일되지 않은 함수에 소비 된 시간이 포함됩니까?

library_function은 프로파일 링을 사용하여 컴파일되지 않은 다른 정적 라이브러리의 라이브러리라고 가정합시다. 이제 gprof가 function이 모든 하위 항목을 포함하여 10 초 동안 실행되었다고 알려주는 경우 library_function에 소요 된 시간이 포함됩니까?

답변

2

아니요, 방법은 gprof이므로 프로그램 카운터를 샘플링하고 프로그램 카운터가 어떤 기능을 실행하는지 계산하고 해당 기능의 자체 시간을 증가시킵니다. 또한

, 그것은 어떤 기능 A가 어떤 기능 B. 그런에서

를 호출 횟수를 계산, 그것은 다른 모든 것을 파악하려고합니다.

물론 이것은 알고있는 기능에서만 작동합니다.

매우 똑똑하지만 you can do better입니다.

ADDED :

Try this instead.
Here's an example of a 44x speedup.
Here's a 730x speedup.
Here's an explanation of the statistics.
Here's an answer to critiques.
Here's an 8-minute video demonstration. : 지혜의 누군가가 위의 게시물을 삭제하기로 결정하기 때문에, 여기 당신이 더 잘 할 수있는 방법에 대한 간략한 요약 한 것입니다

+0

설명해 주셔서 감사합니다. 하지만 불행히도 NDK 라이브러리를 개발 중입니다. 나는 아직 일자리를 찾지 못했다. – fefe

+0

@fefe : 코드를 실행할 수있는 디버거가 있습니까? Ctrl-C 등으로 방해 할 수 있다면 그게 전부입니다. –

+0

나는 그것을 시도했다, 그리고 나는 그것이 유용해야한다고 생각한다. 하지만 내 디버거는 지금 몇 가지 문제가 있고 (또는 중단 점 내부에서 중단) 원시 코드를 따라갈 수 없습니다. 그래서 제가 얻을 수있는 유일한 이유는 제 도서관이 많은 시간을 들여야한다는 것입니다. 그러나 이것은이 질문의 범위를 벗어납니다. – fefe

관련 문제