5 ms·
C++ is stuck in this trap where because it's slow to compile, the compiler maintainers increase the amount of optimizations the compiler does to make it faster.
by Gibbon1 7y ago
C++ is stuck in this trap where because it's slow to compile, the compiler maintainers increase the amount of optimizations the compiler does to make it faster. Which of course makes the compiler even slower. Which motivates them to increase the amount of optimizations. Which makes the compiler yet slower.
I feel part of the problem with rust is it doesn't have quick and dirty mode thats fast and a production ready mode that is slow but does all the checks. I do this with my C programs, using various formal analysis tools which are slow to vet the code before releasing it.
- steveklabnik 7y agoThe checks are not the most expensive part of compiling Rust.
- Gibbon1 7y agoWhat is it then?
- Ar-Curunir 7y agoThe codegen is. This is partially because the IR passed to LLVM is not the best, but it’s also not terrible.
- MaxBarraclough 7y agoDoes Rust allow for fast unoptimised builds then? Perhaps I'd missed that.
- steveklabnik 7y agoFaster, yes. Still lots to do.
- MaxBarraclough 7y agoYou're saying LLVM is slow even when generating code without optimisations?
- steveklabnik 7y agoYes. The thing that will massively speed up rustc is the current re-architecting of it. We’re at the point of “few percent here, few percent there” with the current design. These add up over time, of course, but batch compilers are inherently slower than the newer style ones (after an initial compile).
- Ar-Curunir 7y agoTo add to Steve’s point, Rust adds more checks during debug (non-release) more, which can makes the IR larger. So it’s not always the case that debug mode is faster to compile (though it generally is)
- MauranKilom 7y agoC++ debug builds (i.e. without optimizations) are not that much faster in my experience. So it's not optimizations that are the culprit.
- TsiCClawOfLight 7y agoChecks in rust are fast. In fact, you can 'cargo check' to run checks without actually compiling, and that will finish in less than half a second. Most editors did this on save before LSP came along. For logic, this is fast enough because the type system catches enough mistakes and I don't need to run tests all the time. For UI though, a faster iteration cycle would be nice...