Move query code outside macros and store query jobs separately from query results by Zoxc · Pull Request #50102 · rust-lang/rust (original) (raw)
I did some microbenchmarks here too:
Before:
time: 0.827; rss: 36MB hot query (usize)
time: 0.942; rss: 170MB cold query (usize)
time: 0.911; rss: 170MB hot query (dummy DefId)
time: 0.972; rss: 304MB cold query (dummy DefId)
time: 0.960; rss: 304MB hot query (DefId)
time: 0.953; rss: 438MB cold query (DefId)
After:
time: 0.367; rss: 36MB hot query (usize)
time: 0.717; rss: 136MB cold query (usize)
time: 0.498; rss: 136MB hot query (DefId)
time: 0.795; rss: 237MB cold query (DefId)
time: 0.379; rss: 237MB hot query (dummy DefId)
time: 0.706; rss: 338MB cold query (dummy DefId)
Before (with incremental compilation):
time: 0.958; rss: 40MB hot query (usize)
time: 3.165; rss: 638MB cold query (usize)
time: 1.080; rss: 638MB hot query (dummy DefId)
time: 3.286; rss: 1237MB cold query (dummy DefId)
time: 1.088; rss: 1237MB hot query (DefId)
After (with incremental compilation):
time: 0.511; rss: 40MB hot query (usize)
time: 2.584; rss: 605MB cold query (usize)
time: 0.680; rss: 605MB hot query (DefId)
time: 0.478; rss: 605MB hot query (dummy DefId)
time: 2.796; rss: 1170MB cold query (dummy DefId)