Hacker Newsnew | past | comments | ask | show | jobs | submitlogin

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.



Checks 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...


C++ debug builds (i.e. without optimizations) are not that much faster in my experience. So it's not optimizations that are the culprit.


The checks are not the most expensive part of compiling Rust.


What is it then?


The codegen is. This is partially because the IR passed to LLVM is not the best, but it’s also not terrible.


Does Rust allow for fast unoptimised builds then? Perhaps I'd missed that.


Faster, yes. Still lots to do.


You're saying LLVM is slow even when generating code without optimisations?


Yes.

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).


To 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)




Guidelines | FAQ | Lists | API | Security | Legal | Apply to YC | Contact

Search: