Reddit

How GCC and Clang performance changed over 10 years: my experiment

10년간 GCC와 Clang 성능은 어떻게 달라졌나

GCC 4~16과 Clang 3~23으로 50개 테스트를 담은 C 벤치마크를 빌드해 실행 시간과 컴파일 시간을 비교했습니다. GCC는 실행 시간이 5% 줄었지만 컴파일 시간은 66% 늘었고, Clang은 각각 8%, 4% 줄었습니다.

AI 요약

같은 C 코드의 성능이 컴파일러의 세대에 따라 어떻게 달라졌는지 살펴보는 실험입니다. 작성자는 합성 루프나 마이크로벤치마크보다 실제 작업에 가까운 결과를 낸다며 LangArena의 50개 테스트를 합친 index-c 벤치마크를 골랐습니다. GCC 4.9.4부터 16.2.0까지 13개 버전과 Clang 3.9.0부터 23.1.3까지 21개 버전을 Docker 이미지로 빌드해 비교했습니다.

측정 방법

컴파일러 주요 버전이 나온 해를 기준으로 결과를 묶고 평균을 냈습니다. 실행 시간은 각 컴파일러로 빌드한 index-c가 벤치마크를 수행하는 데 걸린 시간이며, 컴파일 시간도 같은 코드로 측정했습니다. Clang은 한 해에 여러 버전이 포함될 수 있지만 GCC는 연도별로 한 버전씩 비교했습니다. 최적화 수준 -O0은 버전별 차이가 거의 없어 그래프에서 제외했습니다.

컴파일러는 공식 GCC 이미지와 kunitoki/clang, silkeh/clang의 공개 Docker 빌드에서 가져왔습니다. 이미지마다 glibc 버전이 다를 수 있으며, 작성자는 이 차이를 측정에 반영하지 않았다고 밝혔습니다. 따라서 실행 시간 결과에 영향을 줬을 가능성이 있고, 작성자는 각자의 하드웨어와 작업 환경에서 직접 확인하라고 덧붙였습니다.

결과

GCC -O3의 12년간 변화를 비교하면 index-c 실행 시간은 62.22초에서 59.13초로 약 5% 줄었습니다. 반면 컴파일 시간은 2.89초에서 4.82초로 약 66% 늘었습니다. 작성자는 이 결과가 예상 밖이라며 측정 과정에 오류가 있었을 가능성도 열어 두었습니다.

Clang -O3은 10년 사이 실행 시간이 56.41초에서 52.15초로 약 8% 감소했습니다. 컴파일 시간도 2.29초에서 2.19초로 약 4% 줄었습니다. 재현 스크립트와 원자료는 index-c 저장소의 run.rb와 history.js에서 확인할 수 있습니다.

Reddit 반응

  • @u/Chipot — 2020년부터 ‘Make LLVM Fast Again’이 미친 영향이 흥미롭네요.
  • @u/obhytr — 로그인하지 않고는 Medium을 읽을 수 없네요.
    • @u/kostya27 — 결과는 여기 있습니다: https://github.com/kostya/index-c

원문: Medium / 번역·요약: Trawling