Domyślne budowanie aplikacji Rust w Docker trwa kilka minut, głównie przez ponowne kompilowanie całego kodu.
Narzędzie cargo-chef pozwala cache’ować zależności, ale ostateczna kompilacja binarki wciąż zajmuje ~3 minuty.
Profilowanie rustc (-Zself-profile) ujawniło, że LTO oraz kodowanie modułów LLVM pochłaniają największą część czasu.
Wyłączenie LTO i symboli debugowania skraca czas kompilacji finalnej binarki do ~50 s.
Zmniejszenie poziomu optymalizacji (opt-level=1 lub 0) drastycznie wpływa na czas: 15 s przy wyłączonych optymalizacjach.
Profilowanie LLVM pokazało, że główne spowolnienia to OptFunction (funkcyjna optymalizacja) i InlinerPass (wstawianie kodu).
Zmiana progów inlinowania w LLVM (--inline-threshold) przyspieszyła kompilację do ~40 s.
Refaktoryzacja dużych async-funkcji (dzielenie na mniejsze i ukrywanie Future przez Box::pin) zmniejszyła czas optymalizacji konkretnych funkcji z ~5 s do ~2 s.
Łączne zmiany w ustawieniach LLVM, własnym kodzie i zależnościach obniżyły cały czas kompilacji z ~175 s do ~32 s.
Get notified when new stories are published for "🇵🇱 Hacker News Polski"