-
-
Notifications
You must be signed in to change notification settings - Fork 5.4k
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
Performance improvements for IdDict #51091
Open
Zentrik
wants to merge
16
commits into
JuliaLang:master
Choose a base branch
from
Zentrik:perf-iddict
base: master
Could not load branches
Branch not found: {{ refName }}
Could not load tags
Nothing to show
Are you sure you want to change the base?
Some commits from the old base branch may be removed from the timeline,
and old review comments may become outdated.
Open
Changes from all commits
Commits
Show all changes
16 commits
Select commit
Hold shift + click to select a range
717388b
Performance improvements for IdDict
Zentrik 27dcc24
Reduce loop iterations in tests
Zentrik a31404b
Move code for calculating key index into Julia
Zentrik d5fba6f
Decrease inlining cost of key indexing function
Zentrik d17b27b
Force inlining
Zentrik bb360d6
Revert "Force inlining"
Zentrik f377b7e
Revert "Decrease inlining cost of key indexing function"
Zentrik e34913a
Revert "Move code for calculating key index into Julia"
Zentrik 46daa2d
Add inbounds back in
Zentrik cd5f495
Revert changes to get! with callable and add test.
Zentrik ad5a02a
Add trailing new line
Zentrik c3047c1
Have consistent spacing for type parameters
Zentrik 3a428ad
Remove unused argument from `_setindex!` function
Zentrik 25e7410
Conform to dict API and deal with `convert` failing
Zentrik 6cbd3f0
Fix bug in writing to dict
Zentrik e864462
Don't delete key
Zentrik File filter
Filter by extension
Conversations
Failed to load comments.
Jump to
Jump to file
Failed to load files.
Diff view
Diff view
There are no files selected for viewing
This file contains 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
This file contains 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
This file contains 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
This file contains 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
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.
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.
There seems to be a discrepancy here in the state of the IdDict during this convert call or if this convert failed. The
ht_keyindex!
call has fully inserted the key, but not the value. ForDict
, neither has occurred yet, and all insertion and accounting happens at once in_setindex!
. But in IdDict here, it looks like half of the insertion occurs inht_keyindex!
(effectively inserting it in the deleted state) but then the final accounting update for it doesn't happen until after the_setindex!
call later in this method. Do we updatendel
over this call so the value is consistent?There also may need to be an
age
counter added to the IdDict, so it can detect concurrent modifications that happen in thisconvert
call (or move this convert call back to the top of the function)