상당한 시간이 걸리고 그 시간을 절약하기 위해 최적화 할 수있는 코드를 발견 할 필요가 있다고 가정합니다. 이는 타이밍 루틴과는 다른 목표입니다.
모든 것이 입력 데이터 조합에 의존하기 때문에 정적 분석기에 회의적입니다.
동적 계측은 자체 시간 및 총 시간, 절대, 평균 및 백분율과 같은 기능의 속성을 측정하려고합니다. 또한 콜 그래프에서 콜 카운트와 각 루틴의 역할.
동적 계측기 (aa gprof)는 수십 년 동안 사실상의 표준 이었지만 마지막 단어가되지 못했습니다. 우선, 그것이주는 통계의 대부분이 원래의 필요성에 대한 요점을 놓치고 있다는 것을 깨닫는 것이 중요합니다.
최근에는 (IMHO) 프로그램 카운터뿐만 아니라 호출 스택을 샘플링하는 샘플링 프로파일 러가 필요합니다. CPU 시간뿐만 아니라 벽시계 시간도 샘플링해야합니다. 샘플을 고주파수로 그릴 필요는 없습니다. 앱이 사용자 입력을 기다리고있을 때 샘플링을 억제해야합니다. 함수 수준뿐만 아니라 라인 또는 명령 수준에서 정보를 제공해야합니다. 코드 행에 대해 제공해야하는 가장 중요한 통계는 해당 행이 최적화 된 경우 저장할 수있는 시간을 가장 직접적으로 측정하기 때문에이를 포함하는 샘플의 백분율입니다.
몇 가지 프로파일 러가이를 수행 할 수 있습니다. 특히 Oprofile 및 RotateRight/Zoom in이 가능합니다.
이 답변은 주로 * profilers *에 대한 내용으로, 프로그램 시간에 대한 자세한 정보를 제공합니다. 프로파일 링은 프로그램을 계측하기위한 하나의 유스 케이스 *입니다. – Karmastan
@Karmastan : 감사합니다. 일반적으로 성능 및 메모리 문제를 찾는 것이 주요 관심사입니다. 대답은 성과가 문제가된다고 단언했다. 나는 정확성과 관련된 다른 종류의 질문에 답할 수있는 곳을 볼 수 있습니다. –