Avoid the reverse lang-item lookup in sizedness_fast_path [-0.04% avg] - #105
Draft
xmakro wants to merge 1 commit into
Draft
Avoid the reverse lang-item lookup in sizedness_fast_path [-0.04% avg]#105xmakro wants to merge 1 commit into
xmakro wants to merge 1 commit into
Conversation
The fast path runs for roughly 60% of all predicates and paid a reverse-hashmap lookup (hashing the DefId) on each call just to distinguish Sized from MetaSized. Two direct array-indexed lang-item comparisons answer the same question.
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
The sizedness fast path runs for roughly 60% of all predicates and paid a reverse-hashmap lookup, which hashes the DefId, on each call just to distinguish Sized from MetaSized. Two direct array-indexed lang-item comparisons answer the same question.
Measured alone at head 969b803 (clean from-scratch ThinLTO plus jemalloc stage2 build per side, instructions:u, Check/Debug/Opt across Full/IncrFull/IncrUnchanged/IncrPatched, 551 cells): -0.04% mean, 4 cells improved by at least 0.25% (projection-caching full profiles at -0.26% to -0.28%), 1 cell at +0.31% that is almost certainly noise (issue-46449 opt incr-unchanged, a scenario this code barely runs in). The weakest slice of the old combined branch; it removes real work at zero cost but sits near the noise floor.