컴파일러

반복 횟수가 100회인 루프를 본체를 4번 분량 나열하는 루프 전개로 바꿔 쓰면, 횟수 판정과 분기는 몇 번이 되는가? (100은 4로 나누어떨어진다고 가정한다)

  1. A100번
  2. B25번
  3. C400번
정답과 해설 보기

정답: B. 25번

본체를 4번 분량 나열하면 한 번의 반복에서 원래 4번 분량의 처리를 하므로 반복 횟수는 100 ÷ 4 = 25번이 되고, 횟수 판정과 분기도 25번으로 줄어듭니다. 원래의 100번에 비해 분기 등의 비용이 4분의 1이 됩니다. 횟수가 4로 나누어떨어지지 않는 경우에는 남은 분량을 처리하는 짧은 루프를 뒤에 덧붙입니다. 100번은 전개하지 않은 경우의 횟수이고, 400번은 본체 처리의 수를 잘못 곱한 값입니다.

  • A. 100번은 전개하지 않은 경우의 횟수입니다.
  • B. 올바릅니다. 100 ÷ 4 = 25번입니다.
  • C. 400번은 잘못 곱셈한 값입니다.
이 분야 연습하기 분야로 돌아가기

컴파일러의 다른 문제

  1. C 언어 프로그램에서 실행 파일이 만들어지기까지의 일반적인 흐름으로 올바른 것은 무엇인가?
  2. 생성한 기계어의 짧은 나열을 작은 창으로 보면서, 불필요한 명령의 조합을 더 좋은 명령으로 대체하는 최적화를 무엇이라고 하는가?
  3. 위의 코드에서 sq를 인라인 전개한 뒤 이어서 효과를 내는 최적화와 그 결과로 올바른 것은 무엇인가?
  4. 소프트웨어 파이프라이닝에 대한 설명으로 올바른 것은 무엇인가?
  5. 컴파일러가 부동소수점 수의 덧셈 (a + b) + c를 엄격한 설정에서는 a + (b + c)로 마음대로 재배열하지 않는 이유로 올바른 것은 무엇인가?

이 분야의 비교