O autor enfrentou builds de Rust muito lentos ao usar Docker, reconstruindo tudo do zero a cada mudança.
Ele utilizou cargo-chef para cache de dependências, mas os tempos ainda eram altos (~3 minutos).
Com profiling do rustc (-Zself-profile) e das passes do LLVM, identificou que LTO e LLVM_module_optimize consumiam a maior parte do tempo.
Desativar LTO e símbolos de debug, e usar opt-level=1 no binário reduziu o tempo de ~175s para ~50s.
Ajustar thresholds de inlining via -C llvm-args (inline-threshold) trouxe mais redução para ~40s.
Funções async muito grandes e monomorfizações de genéricos também geravam longos tempos de otimização.
Refatorar funções async, usar Pin<Box<dyn Future>> para obscurecer o código e diminuir genericidade reduziu partes de ~5s para ~2s.
Combinar ajustes locais e em dependências externas levou o tempo final para 32,3s.
Sugestões: heurísticas de compilador melhores, tratamento especial para drop_in_place e ferramentas de profiling mais amigáveis.
Get notified when new stories are published for "🇵🇹 Hacker News Português"