2013-02-08 1 views
2

Oprofile은 샘플링 기반 이론에서 작동합니다.Oprofile을 통해 각 기능에서 소비되는 순환

 
samples %  image name    symbol name 
78149 15.0776 cvqa      comp_corr.clone.2 

내가 소비에서 소비되는 시간의 %의 나이를 알 수있는이 정보를 : Opreport -l 옵션은 우리에게 다음과 같은 방법으로 프로파일 링 보고서를 제공합니다. 내 코드에서 일부 optimizaion을 할 경우 내가 다시 같은 보고서를 얻을 것이다 : 나는 사이클의 많은 최적화가 완료되었는지를 받고 있지 않다이 보고서에서

 
samples %  image name    symbol name 
73179 15.0732 cvqa      comp_corr.clone.2 

을 내가 벤치 마크 할 수 있도록. 지금까지 최적화가 얼마나 완료 되었습니까?

사이클 최적화가 수행 된 횟수 또는 벤치마킹 할 수있는 다른 방법을 알 수있는 방법이 있습니까?

AMD64 비트 컴퓨터에서 작업하고 있습니다.

답변

0

실제 목표는 프로그램을 최적화하는 것이므로 생각해 볼 다른 방법을 제안하겠습니다.

측정해야 할 주요 사항은 다양한 루틴의주기 또는 시간이 아닌 전체 시간입니다.

이제 최적화를 수행하는 방법에 대해 설명합니다. 어떤 측정에 기초하지 마십시오. 오히려 프로그램의 상태에 대한 여러 샘플을 얻고 (핵심 포인트) 각 샘플을 자신의 눈과 두뇌로 면밀히 연구하고 프로그램이 그 상태에서 무엇을하는지 이해하고 그 이유를 충분히 이해합니다 하고있어. (통계치가 밝혀 낼 수있는 값이있는 것은 물론 알 수없는 것을 더하면 모든 차이가 있습니다.)

두 개 이상의 샘플, 제거 할 수있는 것, 을 고치면은 상당한 속도 향상을 제공합니다. Here is an explanation of why it works and how much speedup you can expect. 그런 다음 전체 시간 측정을 다시하고 저장 한 시간을 볼 수 있습니다.

그런 다음 중지하지 마십시오. 다시 할. 해결해야 할 다른 것을 발견하게 될 것입니다. 제거한 첫 번째 문제 때문에 더 큰 퍼센트가됩니다.

제 경험으로 볼 때 실제 소프트웨어를 사용하면 5 ~ 6 회 정도 수행 할 수 있습니다. 그 후 프로그램은 원래보다 훨씬 빠르게 진행될 수 있습니다. 그 이유는 각 최적화가 원래 실행 시간의 일부를 제거하고 이러한 분수가 거의 100 %까지 누적 될 수 있기 때문입니다. Oprofile 또는 다른 프로파일 러 도구로 얻은 결과는 알지 못합니다.

+0

의견을 보내 주셔서 감사합니다. 그러나 전체 코드 실행 시간 또는 전체 코드에서 소비 한 총 사이클을 파악하는 데 더 많은 관심이 있습니다. 내가 얻을 수있는 방법이 있니? gprof를 통한 방법이 있다고해도 나에게 제안 할 수 있습니다. –

관련 문제