-
Notifications
You must be signed in to change notification settings - Fork 13.3k
Make process_obligations()
greedier.
#66408
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Conversation
@nikomatakis: I'm not 100% confident about the Some local instruction count measurements:
|
@bors try @rust-timer queue |
Awaiting bors try build completion |
Make `process_obligations()` greedier. `process_obligations()` adds new nodes, but it does not process these new nodes until the next time it is called. This commit changes it so that it does process these new nodes within the same call. This change reduces the number of calls to `process_obligations()` required to complete processing, sometimes giving significant speed-ups. The change required some changes to tests. - The output of `cycle-cache-err-60010.rs` is slightly different. - The unit tests required extra cases to handle the earlier processing of the added nodes. I mostly did these in the simplest possible way, by making the added nodes be ignored, thus giving outcomes the same as with the old behaviour. But I changed `success_in_grandchildren()` more extensively so that some obligations are completed earlier than they used to be. r? @nikomatsakis
☀️ Try build successful - checks-azure |
Queued f988482 with parent 5e380b7, future comparison URL. |
The perf improvements on CI are similar to what I saw locally. |
`process_obligations()` adds new nodes, but it does not process these new nodes until the next time it is called. This commit changes it so that it does process these new nodes within the same call. This change reduces the number of calls to `process_obligations()` required to complete processing, sometimes giving significant speed-ups. The change required some changes to tests. - The output of `cycle-cache-err-60010.rs` is slightly different. - The unit tests required extra cases to handle the earlier processing of the added nodes. I mostly did these in the simplest possible way, by making the added nodes be ignored, thus giving outcomes the same as with the old behaviour. But I changed `success_in_grandchildren()` more extensively so that some obligations are completed earlier than they used to be.
98a7454
to
05f13a8
Compare
Ping from triage |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
r=me modulo nit below -- @nnethercote if you hate it you can also ignore, but it seems like a slight improvement to me
@bors r=nmatsakis |
📌 Commit 05f13a8 has been approved by |
@bors rollup=never |
⌛ Testing commit 05f13a8 with merge 0ecfb9332bac36049d7e9a3acfc41df2deadc5dd... |
@bors retry yielding to r0llup |
…sakis Make `process_obligations()` greedier. `process_obligations()` adds new nodes, but it does not process these new nodes until the next time it is called. This commit changes it so that it does process these new nodes within the same call. This change reduces the number of calls to `process_obligations()` required to complete processing, sometimes giving significant speed-ups. The change required some changes to tests. - The output of `cycle-cache-err-60010.rs` is slightly different. - The unit tests required extra cases to handle the earlier processing of the added nodes. I mostly did these in the simplest possible way, by making the added nodes be ignored, thus giving outcomes the same as with the old behaviour. But I changed `success_in_grandchildren()` more extensively so that some obligations are completed earlier than they used to be. r? @nikomatsakis
☀️ Test successful - checks-azure |
process_obligations()
adds new nodes, but it does not process thesenew nodes until the next time it is called.
This commit changes it so that it does process these new nodes within
the same call. This change reduces the number of calls to
process_obligations()
required to complete processing, sometimesgiving significant speed-ups.
The change required some changes to tests.
cycle-cache-err-60010.rs
is slightly different.of the added nodes. I mostly did these in the simplest possible way,
by making the added nodes be ignored, thus giving outcomes the same as
with the old behaviour. But I changed
success_in_grandchildren()
more extensively so that some obligations are completed earlier than
they used to be.
r? @nikomatsakis