Use a more lightweight cache for erase_regions#59505
Use a more lightweight cache for erase_regions#59505Zoxc wants to merge 1 commit intorust-lang:masterfrom
Conversation
|
(rust_highfive has picked a reviewer for you, use r? to override) |
|
@bors try |
|
⌛ Trying commit 6b6cb87e9137e5d593e0f42b9af92a135e9e38f7 with merge 6400173020be5019c2bbcadabcabd413750de993... |
|
The job Click to expand the log.I'm a bot! I can only do what humans tell me to, so if this was not helpful or you have suggestions for improvements, please ping or otherwise contact |
|
💔 Test failed - checks-travis |
|
The job Click to expand the log.I'm a bot! I can only do what humans tell me to, so if this was not helpful or you have suggestions for improvements, please ping or otherwise contact |
|
@bors try |
|
⌛ Trying commit d633fd98da7acf14eee5e4339b8909e986580687 with merge 6284bc1b5909f6452af037b507190bbabb1a4d4d... |
|
The job Click to expand the log.I'm a bot! I can only do what humans tell me to, so if this was not helpful or you have suggestions for improvements, please ping or otherwise contact |
|
@rust-timer build 6284bc1b5909f6452af037b507190bbabb1a4d4d |
|
Success: Queued 6284bc1b5909f6452af037b507190bbabb1a4d4d with parent 237bf32, comparison URL. |
|
☀️ Try build successful - checks-travis |
|
Finished benchmarking try commit 6284bc1b5909f6452af037b507190bbabb1a4d4d |
|
The job Click to expand the log.I'm a bot! I can only do what humans tell me to, so if this was not helpful or you have suggestions for improvements, please ping or otherwise contact |
|
I'd like to enable caches for dependency-less functions like this one but I'm not sure a debug assertion is enough. Can we instead of make sure at compile time that a function cannot have dependencies? One way to do that would be to not give it access to the |
I don't see how, given that we allow access to |
Yeah, that's true It would still be good to turn this into a generic, sanctioned pattern with safe-guards against foot gunning ourselves. Maybe:
The cc @nikomatsakis, who (I think) mentioned wanting to support dependenciless functions in Salsa too. |
|
☔ The latest upstream changes (presumably #59517) made this pull request unmergeable. Please resolve the merge conflicts. |
|
This is also the only thing using anon queries, which I'd also like to remove since it doesn't make sense to me. |
|
As I said, I'm not against doing something like this in principle. But this isn't a pressing issue (i.e. the current solution works and performance improvement nice but not stellar), so I'd prefer if we supported this pattern in a general way (along the lines I described above) instead of doing a one-off solution. |
|
ping from triage @michaelwoerister any updates on this? |
|
re: triage: My suggestions on how to move forward here are still up-to-date. |
Use a more lightweight cache for `erase_regions` This changes `erase_regions` to use a global hashmap instead of a query to cache types with erased lifetimes. `erase_regions_ty` only depends on the input parameter so it doesn't need to be a query. This is a rebase of rust-lang#59505. <table><tr><td rowspan="2">Benchmark</td><td colspan="1"><b>Before</b></th><td colspan="2"><b>After</b></th><td colspan="1"><b>Before</b></th><td colspan="2"><b>After</b></th><td colspan="1"><b>Before</b></th><td colspan="2"><b>After</b></th></tr><tr><td align="right">Time</td><td align="right">Time</td><td align="right">%</th><td align="right">Physical Memory</td><td align="right">Physical Memory</td><td align="right">%</th><td align="right">Committed Memory</td><td align="right">Committed Memory</td><td align="right">%</th></tr><tr><td>🟣 <b>clap</b>:check</td><td align="right">1.3960s</td><td align="right">1.3883s</td><td align="right"> -0.55%</td><td align="right">147.66 MiB</td><td align="right">147.76 MiB</td><td align="right"> 0.07%</td><td align="right">199.83 MiB</td><td align="right">199.86 MiB</td><td align="right"> 0.01%</td></tr><tr><td>🟣 <b>hyper</b>:check</td><td align="right">0.2346s</td><td align="right">0.2337s</td><td align="right"> -0.38%</td><td align="right">80.35 MiB</td><td align="right">80.54 MiB</td><td align="right"> 0.24%</td><td align="right">129.99 MiB</td><td align="right">130.12 MiB</td><td align="right"> 0.10%</td></tr><tr><td>🟣 <b>regex</b>:check</td><td align="right">0.7811s</td><td align="right">0.7788s</td><td align="right"> -0.30%</td><td align="right">107.75 MiB</td><td align="right">108.07 MiB</td><td align="right"> 0.29%</td><td align="right">153.67 MiB</td><td align="right">153.99 MiB</td><td align="right"> 0.21%</td></tr><tr><td>🟣 <b>syn</b>:check</td><td align="right">1.2999s</td><td align="right">1.2978s</td><td align="right"> -0.17%</td><td align="right">140.24 MiB</td><td align="right">140.35 MiB</td><td align="right"> 0.08%</td><td align="right">188.59 MiB</td><td align="right">188.58 MiB</td><td align="right"> -0.01%</td></tr><tr><td>Total</td><td align="right">3.7117s</td><td align="right">3.6986s</td><td align="right"> -0.35%</td><td align="right">476.00 MiB</td><td align="right">476.72 MiB</td><td align="right"> 0.15%</td><td align="right">672.08 MiB</td><td align="right">672.55 MiB</td><td align="right"> 0.07%</td></tr><tr><td>Summary</td><td align="right">1.0000s</td><td align="right">0.9965s</td><td align="right"> -0.35%</td><td align="right">1 byte</td><td align="right">1.00 bytes</td><td align="right"> 0.17%</td><td align="right">1 byte</td><td align="right">1.00 bytes</td><td align="right"> 0.08%</td></tr></table>
Use a more lightweight cache for `erase_regions` This changes `erase_regions` to use a global hashmap instead of a query to cache types with erased lifetimes. `erase_regions_ty` only depends on the input parameter so it doesn't need to be a query. This is a rebase of rust-lang#59505. <table><tr><td rowspan="2">Benchmark</td><td colspan="1"><b>Before</b></th><td colspan="2"><b>After</b></th><td colspan="1"><b>Before</b></th><td colspan="2"><b>After</b></th><td colspan="1"><b>Before</b></th><td colspan="2"><b>After</b></th></tr><tr><td align="right">Time</td><td align="right">Time</td><td align="right">%</th><td align="right">Physical Memory</td><td align="right">Physical Memory</td><td align="right">%</th><td align="right">Committed Memory</td><td align="right">Committed Memory</td><td align="right">%</th></tr><tr><td>🟣 <b>clap</b>:check</td><td align="right">1.3960s</td><td align="right">1.3883s</td><td align="right"> -0.55%</td><td align="right">147.66 MiB</td><td align="right">147.76 MiB</td><td align="right"> 0.07%</td><td align="right">199.83 MiB</td><td align="right">199.86 MiB</td><td align="right"> 0.01%</td></tr><tr><td>🟣 <b>hyper</b>:check</td><td align="right">0.2346s</td><td align="right">0.2337s</td><td align="right"> -0.38%</td><td align="right">80.35 MiB</td><td align="right">80.54 MiB</td><td align="right"> 0.24%</td><td align="right">129.99 MiB</td><td align="right">130.12 MiB</td><td align="right"> 0.10%</td></tr><tr><td>🟣 <b>regex</b>:check</td><td align="right">0.7811s</td><td align="right">0.7788s</td><td align="right"> -0.30%</td><td align="right">107.75 MiB</td><td align="right">108.07 MiB</td><td align="right"> 0.29%</td><td align="right">153.67 MiB</td><td align="right">153.99 MiB</td><td align="right"> 0.21%</td></tr><tr><td>🟣 <b>syn</b>:check</td><td align="right">1.2999s</td><td align="right">1.2978s</td><td align="right"> -0.17%</td><td align="right">140.24 MiB</td><td align="right">140.35 MiB</td><td align="right"> 0.08%</td><td align="right">188.59 MiB</td><td align="right">188.58 MiB</td><td align="right"> -0.01%</td></tr><tr><td>Total</td><td align="right">3.7117s</td><td align="right">3.6986s</td><td align="right"> -0.35%</td><td align="right">476.00 MiB</td><td align="right">476.72 MiB</td><td align="right"> 0.15%</td><td align="right">672.08 MiB</td><td align="right">672.55 MiB</td><td align="right"> 0.07%</td></tr><tr><td>Summary</td><td align="right">1.0000s</td><td align="right">0.9965s</td><td align="right"> -0.35%</td><td align="right">1 byte</td><td align="right">1.00 bytes</td><td align="right"> 0.17%</td><td align="right">1 byte</td><td align="right">1.00 bytes</td><td align="right"> 0.08%</td></tr></table>
No description provided.