-
Notifications
You must be signed in to change notification settings - Fork 4.9k
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
[ARM64] Performance regression: DictionarySequentialKeys.ContainsKey #41743
Comments
Tagging subscribers to this area: @eiriktsarpalis |
Is strange
As they are inside a |
@DrewScoggins could you please help answer @adamsitnik question above? @adamsitnik could you help characterize which dictionary scenarios regressed and which did not? 25% is a lot for a mainstream case - but you didn't mention any of the other dictionary lookup benchmark we have. Is the common factor that the values are larger than ref-size (ie., structs)? That would make the Incidentally I found |
@DrewScoggins where do I find 3.1->5.0 comparisons for ARM64? |
I talked with Adam about this offline and got him access to the full test history for ARM64 runs that we have done in the lab. Here is the link for posterity, https://pvscmdupload.blob.core.windows.net/reports/allTestHistory/master_arm64_ubuntu%2018.04/AllTestindex.html. As for the comparison results, we were running into an issue where we were running the index report before all of the report generation jobs had completed. So we were showing the result as not existing. I have regenerated the index report and have a fix in mind that should remove this error going forward. You can just look at the new index report or follow this link, https://pvscmdupload.blob.core.windows.net/reports/09_15_2020/report_Daily_ca=ARM64_cb=master_co=Ubuntu1804ARM_cr=dotnetcoresdk_cc=CompliationMode=tiered-RunKind=micro_Baseline_bb=release-3.1.2xx_2020-09-15.html. |
I added this info to dotnet/BenchmarkDotNet#1513 |
@adamsitnik thoughts? shall we close? |
@adamsitnik I'm going to go ahead and close this based on the discussion above. Feel free to reopen if you think we should investigate further though. |
After running benchmarks for 3.1 vs 5.0 using "Ubuntu arm64 Qualcomm Machines" owned by the JIT Team, I've found few regressions related to
dictionary.ContainsKey
.Dictionary got "optimized" in 5.0 in dotnet/coreclr#27299 and #406 It's possible that these optimizations were a bad idea for ARM64 or they are simply unrelated to the regression.
@DrewScoggins is there any way to see the full historical data for ARM64?
cc @benaadams
Repro
BenchmarkDotNet=v0.12.1.1405-nightly, OS=ubuntu 16.04
Unknown processor
.NET Core SDK=6.0.100-alpha.1.20451.3
[Host] : .NET Core 3.1.8 (CoreCLR 4.700.20.41105, CoreFX 4.700.20.41903), Arm64 RyuJIT
Job-SUXCQE : .NET Core 3.1.8 (CoreCLR 4.700.20.41105, CoreFX 4.700.20.41903), Arm64 RyuJIT
Job-FEGRDD : .NET Core 5.0.0 (CoreCLR 5.0.20.41714, CoreFX 5.0.20.41714), Arm64 RyuJIT
/cc @JulieLeeMSFT
More data:
Legend
System.Collections.Tests.DictionarySequentialKeys.ContainsKey_3k_Int_32ByteRefsValue
System.Collections.Tests.DictionarySequentialKeys.ContainsKey_3k_Int_32ByteValue
System.Collections.Tests.DictionarySequentialKeys.ContainsKey_17_Int_32ByteValue
System.Collections.Tests.DictionarySequentialKeys.ContainsKey_17_Int_32ByteRefsValue
The text was updated successfully, but these errors were encountered: