2026년 9월 Rust 컴파일러 속도를 높이는 방법

2 hours ago 2

두 달간 Rust 컴파일러 벤치마크의 평균 실제 경과 시간(wall-time)이 4.57% 감소함. 629개 측정 중 555개가 개선됐고, 여러 벤치마크에서 두 자릿수 비율의 시간 단축을 기록함 Clippy에 PGO를 적용해 대부분의 벤치마크에서 실행 시간이 줄었으며, 최대 개선 폭은 18%임. 컴파일러의 LLVM 23 업그레이드도 전체 벤치마크 평균 시간을 1.2% 줄임 Nightly에 도입한 Polonius Alpha 대여 검사기와 새 트레이트 해결기는 일부 경우 컴파일을 느리게 만들지만, 이를 줄이는 최적화가 진행 중임. 전체 성능에서는 다른 개선 효과가 이러한 회귀를 크게 상쇄함 특수화 그래프, 증분 컴파일 데이터 로딩, 메모리 할당을 최적화해 여러 벤치마크의 사이클 수와 명령어 수를 줄임. 특수화 그래프의 impl 처리 개선 하나로 전체 평균 사이클 수가 1.58% 감소함 데이터 흐름 분석의 CFG 순회 알고리듬을 바꿔 거대한 함수의 고정점 도달 비용을 크게 줄임. 이 변경으로 cranelift-codegen 크레이트의 check 빌드 시간이 약 30% 단축됨 두 달간의 전체 성능 변화 2026년 7월 29일~9월 28일 측정 결과, 평균 실제 경과 시간이 4.57% 감소함 총 629개 측정에서 555개가 개선, 74개가 악화됨 여러 벤치마크는 두 자릿수 비율의 시간 단축을 기록함 rustdoc, Clippy, LLVM 개선 rustdoc에서 큰 속도 개선을 이룬 Noah Lev가 구체적인 최적화 과정을 별도 글에 정리함 #159642: Jakub Beránek이 Clippy에 PGO를 활성화해 대부분의 Clippy 벤치마크에서 실제 경과 시간을 줄였으며, 최대 감소 폭은 18% 임 #158734: Nikita Popov가 컴파일러에서 사용하는 버전을 LLVM 23으로 올려 전체 벤치마크 평균 실제 경과 시간을 1.2% 단축함 Polonius Alpha 대여 검사기의 성능 회귀 완화 Polonius Alpha가 Nightly에서 활성화됨 기존 대여 검사기보다 정밀해, 기존에는 거부하던 일부 유효한 프로그램을 허용함 더 많은 작업을 수행하므로 serde를 포함한 소수의 경우에서 컴파일 시간 차이가 측정될 정도로 느려짐 Jack Huey가 지연 계산과 자료구조 조정으로 이 비용을 줄임 #161938: 일부 생존성(liveness) 계산을 지연해 serde의 명령어 수를 3~5%, 다른 일부 벤치마크에서는 ...

Read Entire Article