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)