성능 분석

대량의 데이터를 처리하는 프로그램에서 가장 큰 속도 향상을 얻을 가능성이 높은 개선은?

  1. A변수 이름을 짧게 한다
  2. B계산량이 n²인 알고리즘을 n log n인 알고리즘으로 바꾼다
  3. C주석을 삭제한다
정답과 해설 보기

정답: B. 계산량이 n²인 알고리즘을 n log n인 알고리즘으로 바꾼다

데이터 수 n이 100만이면 n²은 1조, n log n은 약 2000만으로 5만 배나 차이가 납니다. 명령어의 세세한 최적화나 하드웨어 개선으로 얻는 몇 배의 효과에 비해, 알고리즘 개선은 자릿수가 다른 효과를 낼 수 있습니다. 성능 개선에서는 먼저 계산량이 큰 알고리즘을 쓰고 있지 않은지 확인하고, 그 위에 캐시 사용 방식이나 병렬화 등의 개선을 더해 갑니다.

  • A. 변수 이름은 실행 속도에 영향을 주지 않습니다.
  • B. 올바릅니다. 데이터가 많을수록 차이는 자릿수 단위로 벌어집니다.
  • C. 주석은 실행 속도에 영향을 주지 않습니다.
이 분야 연습하기 분야로 돌아가기

성능 분석의 다른 문제

  1. 소프트웨어 개발에서 변경할 때마다 벤치마크를 자동으로 실행하고 결과를 기록해 두는 목적으로 올바른 것은?
  2. 노트북에서 벤치마크를 측정했더니 같은 프로그램인데도 결과가 매번 크게 흔들렸다. CPU 측 원인으로 생각되는 것과 그 대책의 조합으로 올바른 것은?
  3. 멀티코어나 NUMA 시스템에서 성능을 측정할 때 스레드를 특정 코어에 고정(어피니티 설정)하는 경우가 있는 이유로 올바른 것은?
  4. GPU를 사용하는 프로그램의 성능을 분석할 때 가장 먼저 확인해야 할 것으로 가장 적절한 것은?
  5. 데이터센터에서 서버를 고를 때 피크 성능 외에 고려해야 할 관점이 아닌 것은?