-
Notifications
You must be signed in to change notification settings - Fork 4.8k
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
Potential regression: Dictionary of Value Types #13137
Comments
@adamsitnik thanks for the finding, will you be following up on this issue, to assign it to you? |
@safern @adamsitnik Does this need to be a 3.0 issue? |
@adamsitnik |
My take (I am interested in @billwert @safern @adamsitnik thoughts) is that we probably do not want to attempt to address this in 3.0 because the code here (whether in Dictionary or codegen) is subtle and easy to regress perf elsewhere. We have some great wins in many other common scenarios here and we can see whether we get feedback on this scenario. |
Doesn't sound like it meets any bar for 3.0 to me. Agree we should act based on feedback. |
Due to lack of recent activity, this issue has been marked as a candidate for backlog cleanup. It will be closed if no further activity occurs within 14 more days. Any new comment (by anyone, not necessarily the author) will undo this process. This process is part of the experimental issue cleanup initiative we are currently trialing in a limited number of areas. Please share any feedback you might have in the linked issue. |
This issue will now be closed since it had been marked |
It looks like
TryGetValueFalse
,IndexerSet
andContainsKeyFalse
benchmarks have regressed for Dictionaries of Value Types (at least for int).If you run the benchmarks from command prompt on Windows remember to escape the
<
and>
characters https://stackoverflow.com/questions/251557/escape-angle-brackets-in-a-windows-command-promptLegend
System.Collections.TryGetValueFalse<Int32, Int32>.Dictionary(Size: 512)
System.Collections.IndexerSet.Dictionary(Size: 512)
System.Collections.ContainsKeyFalse<Int32, Int32>.Dictionary(Size: 512)
System.Collections.TryGetValueTrue<Int32, Int32>.Dictionary(Size: 512)
System.Collections.CreateAddAndRemove.Dictionary(Size: 512)
System.Collections.IterateForEach.Dictionary(Size: 512)
System.Collections.IterateForEach.Dictionary(Size: 512)
System.Collections.CtorFromCollection.Dictionary(Size: 512)
System.Collections.ContainsKeyTrue<Int32, Int32>.Dictionary(Size: 512)
System.Collections.TryAddDefaultSize.Dictionary(Count: 512)
System.Collections.CreateAddAndClear.Dictionary(Size: 512)
System.Collections.AddGivenSize.Dictionary(Size: 512)
System.Collections.TryAddGiventSize.Dictionary(Count: 512)
System.Collections.Concurrent.IsEmpty.Dictionary(Size: 0)
System.Collections.CtorDefaultSize.Dictionary
System.Collections.CtorGivenSize.Dictionary(Size: 512)
System.Collections.CtorGivenSize.Dictionary(Size: 512)
System.Collections.TryAddDefaultSize.Dictionary(Count: 512)
System.Collections.CreateAddAndClear.Dictionary(Size: 512)
System.Collections.CreateAddAndRemove.Dictionary(Size: 512)
System.Collections.IndexerSet.Dictionary(Size: 512)
System.Collections.ContainsKeyTrue<String, String>.Dictionary(Size: 512)
System.Collections.CtorFromCollection.Dictionary(Size: 512)
System.Collections.TryGetValueFalse<String, String>.Dictionary(Size: 512)
System.Collections.TryAddGiventSize.Dictionary(Count: 512)
System.Collections.TryGetValueTrue<String, String>.Dictionary(Size: 512)
System.Collections.AddGivenSize.Dictionary(Size: 512)
System.Collections.CtorDefaultSize.Dictionary
System.Collections.ContainsKeyFalse<String, String>.Dictionary(Size: 512)
/cc @danmosemsft @AndyAyersMS @billwert @DrewScoggins
The text was updated successfully, but these errors were encountered: