rustc: Preallocate when building the dep graph by alexcrichton · Pull Request #44586 · rust-lang/rust (original) (raw)

This commit alters the query function in the dep graph module to preallocate
memory using with_capacity instead of relying on automatic growth. Discovered
in #44576 it was found that for the syntex_syntax clean incremental benchmark
the peak memory usage was found when the dep graph was being saved, particularly
the DepGraphQuery data structure itself. PRs like #44142 which add more
queries end up just making this much larger!

I didn't see an immediately obvious way to reduce the size of the
DepGraphQuery object, but it turns out that with_capacity helps quite a bit!
Locally 831 MB was used before this commit, and 770 MB is in use at the peak
of the compiler [after] this commit. That's a nice 7.5% improvement! This won't
quite make up for the losses in #44142 but I figured it's a good start.