0
gprof를 사용하여 OpenGL 응용 프로그램을 프로파일 링하려고합니다. 메인 그리기 기능이 1 초에 수십 번 호출되기 때문에 파티클 기능에서 소비되는 시간이 적습니다. gprof의 출력은 "%의 .2f"로 포맷 된 시간을 포함하고 거의 모든 시간은 0.00 같다 :GPROF 출력의 시간 정밀도를 변경하십시오.
[4] 35.2 0.00 0.06 9414 AbstractLayer::render(IDrawContext&) [4]
0.00 0.02 1046/1046 SimpleTiledImageLayer::doRender(IDrawContext&) [9]
0.00 0.02 1046/1046 AtmosphereLayer::doRender(IDrawContext&) [10]
0.00 0.01 1046/1046 GeographicObjectLayer::doRender(IDrawContext&) [23]
0.00 0.01 1046/1046 POILayer::doRender(IDrawContext&) [27]
더 정확하게 시간을 인쇄 할 수있는 가능성이 있습니까?
"병목 현상"을 찾아 내서 속도를 높일 수 있기 때문에 프로파일 링하는 경우 중요도가 낮은 정밀도가 포함됩니다. [* Check. *] (http://stackoverflow.com/a/1779343/23771) 초 단위 또는 밀리 초가 아닌 고정밀도가 아니라 호출 횟수가 아닌 "자체"시간이 아닙니다. 그 이유는 고칠 수있는 "병목 현상"이 있다면, 그것은 * 코드에 있으며 전체 시간의 상당 부분을 차지합니다. 작은 분량을 소비하는 것은 속도를 높이면 작은 분수를 절약 할 수 있습니다. –
... (계속) 속도를 높일 수있는 유일한 것들이 작은 것, 즉 프로그램이 이미 최적 상태에 근접했다고 생각하면 * 어쩌면 * 당신이 맞을 수도 있고 거기에 큰 스피드 업 기회가있을 수도 있습니다. 프로파일 러가 당신에게 보여주지 않기 때문에 보이지 않습니다. 그건 잘못된 위법입니다. (http://scicomp.stackexchange.com/a/2719/1262). 거짓 네거티브는 큰 슬리퍼가 될 수 있습니다. –