-
Notifications
You must be signed in to change notification settings - Fork 13.3k
Make associated item collection a query #68837
New issue
Have a question about this project? # for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “#”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? # to your account
Conversation
r? @estebank (rust_highfive has picked a reviewer for you, use r? to override) |
@bors try @rust-timer queue |
Awaiting bors try build completion |
Make associated item collection a query Before this change, every time associated items were iterated over (which rustc does *a lot* – this can probably be further optimized), there would be N+1 queries to fetch all assoc. items. Now there's just one after they've been computed once.
r=me after timer's done |
☀️ Try build successful - checks-azure |
Queued 694e0b9 with parent c9290dc, future comparison URL. |
Finished benchmarking try commit 694e0b9, comparison URL. |
Some pretty nice improvements in packed-simd, and no real regressions. Nice. @bors r=estebank |
📌 Commit 4fc4b95 has been approved by |
cc @eddyb I recall an issue you filed a while back about something like this |
@@ -310,6 +310,11 @@ rustc_queries! { | |||
/// Maps from a trait item to the trait item "descriptor". | |||
query associated_item(_: DefId) -> ty::AssocItem {} | |||
|
|||
/// Collects the associated items defined on a trait or impl. | |||
query associated_items(key: DefId) -> ty::AssocItemsIterator<'tcx> { |
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.
Could this be just the slice? You might need to replace this:
for x in tcx.associated_items(def_id)
with:
for &x in tcx.associated_items(def_id)
But for the most part it should be fine not to even do that.
@Mark-Simulacrum I don't recall, maybe it wasn't me. cc @nikomatsakis |
…, r=estebank Make associated item collection a query Before this change, every time associated items were iterated over (which rustc does *a lot* – this can probably be further optimized), there would be N+1 queries to fetch all assoc. items. Now there's just one after they've been computed once.
Rollup of 9 pull requests Successful merges: - #68691 (Remove `RefCell` usage from `ObligationForest`.) - #68751 (Implement `unused_parens` for `const` and `static` items) - #68788 (Towards unified `fn` grammar) - #68837 (Make associated item collection a query) - #68842 (or_patterns: add regression test for #68785) - #68844 (use def_path_str for missing_debug_impls message) - #68845 (stop using BytePos for computing spans in librustc_parse/parser/mod.rs) - #68869 (clean up E0271 explanation) - #68880 (Forbid using `0` as issue number) Failed merges: r? @ghost
Speed up the inherent impl overlap check This gives a ~7% improvement in compile times for the stm32f0(x2) crate. Also addresses @eddyb's comment in #68837 (comment).
…=petrochenkov Speed up the inherent impl overlap check This gives a ~7% improvement in compile times for the stm32f0(x2) crate. Also addresses @eddyb's comment in rust-lang#68837 (comment).
…=petrochenkov Speed up the inherent impl overlap check This gives a ~7% improvement in compile times for the stm32f0(x2) crate. Also addresses @eddyb's comment in rust-lang#68837 (comment).
…=petrochenkov Speed up the inherent impl overlap check This gives a ~7% improvement in compile times for the stm32f0(x2) crate. Also addresses @eddyb's comment in rust-lang#68837 (comment).
Before this change, every time associated items were iterated over (which rustc does a lot – this can probably be further optimized), there would be N+1 queries to fetch all assoc. items. Now there's just one after they've been computed once.