성능 분석

샘플링 방식 프로파일러의 특징으로 올바른 것은?

  1. A모든 함수의 진입과 종료를 한 번도 빠뜨리지 않고 기록한다
  2. B일정한 간격으로 프로그램을 인터럽트하여 그때 실행 중이던 위치를 기록하고, 많이 기록된 위치를 시간을 쓰는 곳으로 간주한다
  3. C프로그램의 소스 코드를 읽기만 하고 실행은 하지 않는다
정답과 해설 보기

정답: B. 일정한 간격으로 프로그램을 인터럽트하여 그때 실행 중이던 위치를 기록하고, 많이 기록된 위치를 시간을 쓰는 곳으로 간주한다

샘플링 방식에서는 타이머나 성능 카운터의 인터럽트로, 예를 들어 1초에 수천 번 실행 중인 명령어의 위치(와 호출의 연쇄)를 기록합니다. 시간을 많이 쓰는 곳일수록 기록되는 횟수가 많아지므로 통계적으로 어디가 무거운지 알 수 있습니다. 프로그램을 고치지 않으므로 측정에 의한 지연이 작아 실제에 가까운 상태에서 측정할 수 있지만, 아주 짧은 처리의 정확한 횟수 등은 알 수 없습니다.

  • A. 그것은 계측(인스트루멘테이션) 방식입니다.
  • B. 올바릅니다. 측정에 드는 부담이 작은 것이 장점입니다.
  • C. 실행하면서 측정합니다.
이 분야 연습하기 분야로 돌아가기

성능 분석의 다른 문제

  1. 함수의 입구와 출구에 시간을 재는 코드를 넣어 기록하는 계측(인스트루멘테이션) 방식 프로파일러에 대해 올바른 것은?
  2. 프로그램 성능 분석에서 말하는 핫스폿(hotspot)에 대한 설명으로 올바른 것은?
  3. 프로파일 결과를 나타내는 플레임 그래프(flame graph)를 읽는 방법으로 올바른 것은?
  4. CPU에 내장된 성능 카운터(PMU)로 셀 수 있는 것의 예로 올바른 것은?
  5. 성능 카운터로 측정했더니 어떤 프로그램의 IPC(1사이클당 명령어 수)가 0.3으로 매우 낮고, 마지막 단계 캐시의 미스가 많았다. 가장 가능성이 높은 상황과 대책의 조합은?