성능 분석
성능 카운터로 분기 예측 미스가 매우 많다는 것을 알았다. 개선 방법에 해당하는 것은?
- A루프 안에 분기를 더 추가한다
- B데이터를 정렬하여 분기 결과를 예측하기 쉽게 하거나, 조건부 선택이나 계산으로 분기 자체를 없앤다
- C캐시 용량을 줄인다
정답과 해설 보기
정답: B. 데이터를 정렬하여 분기 결과를 예측하기 쉽게 하거나, 조건부 선택이나 계산으로 분기 자체를 없앤다
분기 예측이 틀리면 CPU는 투기적으로 진행한 명령어를 버리고 다시 시작하므로 1회당 십수 사이클 이상을 잃습니다. 데이터가 무작위이면 「값이 128 이상이면」과 같은 분기 결과는 예측할 수 없습니다. 데이터를 먼저 정렬해 두면 결과가 한쪽으로 모여 예측이 잘 맞고, 조건부 선택 명령어나 비트 연산으로 작성하면 분기 자체가 없어집니다. 컴파일러가 이러한 변환을 하도록 유도할 수도 있습니다.
- A. 예측 미스가 더 늘어날 우려가 있습니다.
- B. 올바릅니다. 예측하기 쉽게 하거나 분기를 없앱니다.
- C. 분기 예측과는 관계없이 성능이 떨어집니다.