Description
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
git clone https://github.com/dotnet/performance.git
python3 ./performance/scripts/benchmarks_ci.py -f netcoreapp3.1 netcoreapp5.0 --architecture arm64 --filter 'System.Collections.Tests.DictionarySequentialKeys.ContainsKey*'
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
Method | 3.1 Mean | 5.0 Mean |
---|---|---|
ContainsKey_17_Int_32ByteValue | 20.41 ns | 25.94 ns |
ContainsKey_17_Int_32ByteRefsValue | 20.29 ns | 25.49 ns |
ContainsKey_3k_Int_32ByteValue | 20.11 ns | 26.42 ns |
ContainsKey_3k_Int_32ByteRefsValue | 20.23 ns | 25.49 ns |
/cc @JulieLeeMSFT
More data:
Legend
- Statistical Test threshold: 5%, the noise filter: 1 ns
- Result is conslusion: Slower|Faster|Same
- Base is median base execution time in nanoseconds
- Diff is median diff execution time in nanoseconds
- Ratio = Base/Diff (the higher the better)
- Alloc Delta = Allocated bytes diff - Allocated bytes base (the lower the better)
- Base V = Base Runtime Version
- Diff V = Diff Runtime Version
System.Collections.Tests.DictionarySequentialKeys.ContainsKey_3k_Int_32ByteRefsValue
Result | Base | Diff | Ratio | Alloc Delta | Modality | Operating System | Bit | Processor Name | Base V | Diff V |
---|---|---|---|---|---|---|---|---|---|---|
Same | 3.51 | 4.18 | 0.84 | +0 | Windows 10.0.19041.388 | X64 | AMD Ryzen 9 3900X | 3.1.6 | 5.0.20.41714 | |
Faster | 6.89 | 5.55 | 1.24 | +0 | Windows 10.0.18363.959 | X64 | Intel Xeon CPU E5-1650 v4 3.60GHz | 3.1.6 | 5.0.20.40203 | |
Same | 6.62 | 5.68 | 1.17 | +0 | Windows 10.0.18363.959 | X64 | Intel Xeon CPU E5-1650 v4 3.60GHz | 3.1.6 | 5.0.20.40416 | |
Same | 7.41 | 6.47 | 1.15 | +0 | Windows 10.0.19041.450 | X64 | Intel Core i7-5557U CPU 3.10GHz (Broadwell) | 3.1.6 | 5.0.20.40416 | |
Same | 5.69 | 5.67 | 1.00 | +0 | Windows 10.0.19041.450 | X64 | Intel Core i7-6700 CPU 3.40GHz (Skylake) | 3.1.6 | 5.0.20.40416 | |
Same | 5.07 | 4.49 | 1.13 | +0 | Windows 10.0.19042 | X64 | Intel Core i7-7700 CPU 3.60GHz (Kaby Lake) | 3.1.6 | 5.0.20.40416 | |
Same | 6.03 | 5.40 | 1.12 | +0 | Windows 10.0.19041.450 | X64 | Intel Core i7-8650U CPU 1.90GHz (Kaby Lake R) | 3.1.6 | 5.0.20.41714 | |
Same | 5.88 | 5.43 | 1.08 | +0 | ubuntu 18.04 | X64 | Intel Xeon CPU E5-1650 v4 3.60GHz | 3.1.6 | 5.0.20.40203 | |
Faster | 7.43 | 5.84 | 1.27 | +0 | manjaro | X64 | Intel Core i7-4771 CPU 3.50GHz (Haswell) | 3.1.6 | 5.0.20.41714 | |
Same | 6.41 | 6.04 | 1.06 | +0 | pop 20.04 | X64 | Intel Core i7-6600U CPU 2.60GHz (Skylake) | 3.1.6 | 5.0.20.41714 | |
Same | 4.94 | 4.48 | 1.10 | +0 | alpine 3.11 | X64 | Intel Core i7-7700 CPU 3.60GHz (Kaby Lake) | 3.1.6 | 5.0.20.41714 | |
Same | 4.92 | 4.37 | 1.13 | +0 | ubuntu 18.04 | X64 | Intel Core i7-7700 CPU 3.60GHz (Kaby Lake) | 3.1.6 | 5.0.20.40416 | |
Slower | 20.27 | 25.46 | 0.80 | +0 | ubuntu 16.04 | Arm64 | Unknown processor | 3.1.6 | 5.0.20.41714 | |
Slower | 20.15 | 25.47 | 0.79 | +0 | ubuntu 16.04 | Arm64 | Unknown processor | 3.1.7 | 5.0.20.41714 | |
Slower | 19.93 | 25.46 | 0.78 | +0 | ubuntu 16.04 | Arm64 | Unknown processor | 3.1.6 | 5.0.20.41714 | |
Same | 19.01 | 19.86 | 0.96 | +0 | ubuntu 18.04 | Arm64 | Unknown processor | 3.1.6 | 5.0.20.41714 | |
Same | 6.93 | 7.19 | 0.96 | +0 | Windows 10.0.18363.959 | X86 | Intel Xeon CPU E5-1650 v4 3.60GHz | 3.1.6 | 5.0.20.41714 | |
Same | 8.06 | 8.39 | 0.96 | +0 | Windows 10.0.19041.450 | X86 | Intel Core i7-5557U CPU 3.10GHz (Broadwell) | 3.1.6 | 5.0.20.40416 | |
Slower | 9.58 | 10.81 | 0.89 | +0 | Windows 10.0.18363.1016 | Arm | Microsoft SQ1 3.0 GHz | 3.1.6 | 5.0.20.40416 | |
Faster | 8.63 | 7.20 | 1.20 | +0 | macOS Catalina 10.15.6 | X64 | Intel Core i5-4278U CPU 2.60GHz (Haswell) | 3.1.6 | 5.0.20.41714 | |
Same | 7.08 | 6.14 | 1.15 | +0 | macOS Catalina 10.15.6 | X64 | Intel Core i7-4870HQ CPU 2.50GHz (Haswell) | 3.1.6 | 5.0.20.41714 | |
Same | 7.09 | 6.29 | 1.13 | +0 | macOS Mojave 10.14.5 | X64 | Intel Core i7-5557U CPU 3.10GHz (Broadwell) | 3.1.6 | 5.0.20.40203 |
System.Collections.Tests.DictionarySequentialKeys.ContainsKey_3k_Int_32ByteValue
Result | Base | Diff | Ratio | Alloc Delta | Modality | Operating System | Bit | Processor Name | Base V | Diff V |
---|---|---|---|---|---|---|---|---|---|---|
Same | 3.52 | 3.98 | 0.88 | +0 | Windows 10.0.19041.388 | X64 | AMD Ryzen 9 3900X | 3.1.6 | 5.0.20.41714 | |
Same | 6.63 | 5.53 | 1.20 | +0 | Windows 10.0.18363.959 | X64 | Intel Xeon CPU E5-1650 v4 3.60GHz | 3.1.6 | 5.0.20.40203 | |
Same | 6.62 | 5.59 | 1.18 | +0 | Windows 10.0.18363.959 | X64 | Intel Xeon CPU E5-1650 v4 3.60GHz | 3.1.6 | 5.0.20.40416 | |
Same | 7.40 | 6.42 | 1.15 | +0 | Windows 10.0.19041.450 | X64 | Intel Core i7-5557U CPU 3.10GHz (Broadwell) | 3.1.6 | 5.0.20.40416 | |
Same | 5.68 | 5.92 | 0.96 | +0 | Windows 10.0.19041.450 | X64 | Intel Core i7-6700 CPU 3.40GHz (Skylake) | 3.1.6 | 5.0.20.40416 | |
Same | 5.07 | 4.35 | 1.17 | +0 | Windows 10.0.19042 | X64 | Intel Core i7-7700 CPU 3.60GHz (Kaby Lake) | 3.1.6 | 5.0.20.40416 | |
Same | 6.06 | 6.80 | 0.89 | +0 | several? | Windows 10.0.19041.450 | X64 | Intel Core i7-8650U CPU 1.90GHz (Kaby Lake R) | 3.1.6 | 5.0.20.41714 |
Faster | 6.48 | 5.32 | 1.22 | +0 | ubuntu 18.04 | X64 | Intel Xeon CPU E5-1650 v4 3.60GHz | 3.1.6 | 5.0.20.40203 | |
Faster | 7.02 | 5.65 | 1.24 | +0 | manjaro | X64 | Intel Core i7-4771 CPU 3.50GHz (Haswell) | 3.1.6 | 5.0.20.41714 | |
Same | 6.56 | 6.63 | 0.99 | +0 | pop 20.04 | X64 | Intel Core i7-6600U CPU 2.60GHz (Skylake) | 3.1.6 | 5.0.20.41714 | |
Same | 4.93 | 4.31 | 1.14 | +0 | alpine 3.11 | X64 | Intel Core i7-7700 CPU 3.60GHz (Kaby Lake) | 3.1.6 | 5.0.20.41714 | |
Same | 4.99 | 4.30 | 1.16 | +0 | ubuntu 18.04 | X64 | Intel Core i7-7700 CPU 3.60GHz (Kaby Lake) | 3.1.6 | 5.0.20.40416 | |
Slower | 20.23 | 26.11 | 0.77 | +0 | ubuntu 16.04 | Arm64 | Unknown processor | 3.1.6 | 5.0.20.41714 | |
Slower | 19.95 | 26.10 | 0.76 | +0 | ubuntu 16.04 | Arm64 | Unknown processor | 3.1.7 | 5.0.20.41714 | |
Slower | 20.12 | 25.08 | 0.80 | +0 | ubuntu 16.04 | Arm64 | Unknown processor | 3.1.6 | 5.0.20.41714 | |
Same | 15.32 | 15.99 | 0.96 | +0 | ubuntu 18.04 | Arm64 | Unknown processor | 3.1.6 | 5.0.20.41714 | |
Same | 6.84 | 6.98 | 0.98 | +0 | Windows 10.0.18363.959 | X86 | Intel Xeon CPU E5-1650 v4 3.60GHz | 3.1.6 | 5.0.20.41714 | |
Same | 8.04 | 7.75 | 1.04 | +0 | Windows 10.0.19041.450 | X86 | Intel Core i7-5557U CPU 3.10GHz (Broadwell) | 3.1.6 | 5.0.20.40416 | |
Slower | 9.55 | 10.92 | 0.87 | +0 | Windows 10.0.18363.1016 | Arm | Microsoft SQ1 3.0 GHz | 3.1.6 | 5.0.20.40416 | |
Faster | 8.28 | 7.09 | 1.17 | +0 | macOS Catalina 10.15.6 | X64 | Intel Core i5-4278U CPU 2.60GHz (Haswell) | 3.1.6 | 5.0.20.41714 | |
Same | 6.81 | 6.09 | 1.12 | +0 | macOS Catalina 10.15.6 | X64 | Intel Core i7-4870HQ CPU 2.50GHz (Haswell) | 3.1.6 | 5.0.20.41714 | |
Same | 7.09 | 6.19 | 1.15 | +0 | macOS Mojave 10.14.5 | X64 | Intel Core i7-5557U CPU 3.10GHz (Broadwell) | 3.1.6 | 5.0.20.40203 |
System.Collections.Tests.DictionarySequentialKeys.ContainsKey_17_Int_32ByteValue
Result | Base | Diff | Ratio | Alloc Delta | Modality | Operating System | Bit | Processor Name | Base V | Diff V |
---|---|---|---|---|---|---|---|---|---|---|
Same | 3.64 | 3.88 | 0.94 | +0 | Windows 10.0.19041.388 | X64 | AMD Ryzen 9 3900X | 3.1.6 | 5.0.20.41714 | |
Same | 6.41 | 5.77 | 1.11 | +0 | Windows 10.0.18363.959 | X64 | Intel Xeon CPU E5-1650 v4 3.60GHz | 3.1.6 | 5.0.20.40203 | |
Same | 6.67 | 5.78 | 1.15 | +0 | Windows 10.0.18363.959 | X64 | Intel Xeon CPU E5-1650 v4 3.60GHz | 3.1.6 | 5.0.20.40416 | |
Faster | 7.46 | 6.40 | 1.16 | +0 | Windows 10.0.19041.450 | X64 | Intel Core i7-5557U CPU 3.10GHz (Broadwell) | 3.1.6 | 5.0.20.40416 | |
Same | 5.98 | 6.26 | 0.96 | +0 | Windows 10.0.19041.450 | X64 | Intel Core i7-6700 CPU 3.40GHz (Skylake) | 3.1.6 | 5.0.20.40416 | |
Faster | 6.40 | 5.31 | 1.21 | +0 | Windows 10.0.19042 | X64 | Intel Core i7-7700 CPU 3.60GHz (Kaby Lake) | 3.1.6 | 5.0.20.40416 | |
Same | 6.19 | 5.26 | 1.18 | +0 | bimodal | Windows 10.0.19041.450 | X64 | Intel Core i7-8650U CPU 1.90GHz (Kaby Lake R) | 3.1.6 | 5.0.20.41714 |
Same | 5.90 | 5.68 | 1.04 | +0 | ubuntu 18.04 | X64 | Intel Xeon CPU E5-1650 v4 3.60GHz | 3.1.6 | 5.0.20.40203 | |
Faster | 7.05 | 5.61 | 1.26 | +0 | manjaro | X64 | Intel Core i7-4771 CPU 3.50GHz (Haswell) | 3.1.6 | 5.0.20.41714 | |
Same | 6.40 | 6.56 | 0.98 | +0 | pop 20.04 | X64 | Intel Core i7-6600U CPU 2.60GHz (Skylake) | 3.1.6 | 5.0.20.41714 | |
Same | 5.11 | 4.51 | 1.13 | +0 | alpine 3.11 | X64 | Intel Core i7-7700 CPU 3.60GHz (Kaby Lake) | 3.1.6 | 5.0.20.41714 | |
Same | 5.12 | 4.66 | 1.10 | +0 | ubuntu 18.04 | X64 | Intel Core i7-7700 CPU 3.60GHz (Kaby Lake) | 3.1.6 | 5.0.20.40416 | |
Slower | 20.32 | 26.20 | 0.78 | +0 | ubuntu 16.04 | Arm64 | Unknown processor | 3.1.6 | 5.0.20.41714 | |
Slower | 20.31 | 25.90 | 0.78 | +0 | ubuntu 16.04 | Arm64 | Unknown processor | 3.1.7 | 5.0.20.41714 | |
Slower | 20.03 | 25.11 | 0.80 | +0 | ubuntu 16.04 | Arm64 | Unknown processor | 3.1.6 | 5.0.20.41714 | |
Same | 22.09 | 16.27 | 1.36 | +0 | bimodal | ubuntu 18.04 | Arm64 | Unknown processor | 3.1.6 | 5.0.20.41714 |
Same | 7.15 | 7.10 | 1.01 | +0 | Windows 10.0.18363.959 | X86 | Intel Xeon CPU E5-1650 v4 3.60GHz | 3.1.6 | 5.0.20.41714 | |
Same | 8.35 | 8.03 | 1.04 | +0 | Windows 10.0.19041.450 | X86 | Intel Core i7-5557U CPU 3.10GHz (Broadwell) | 3.1.6 | 5.0.20.40416 | |
Slower | 10.24 | 11.45 | 0.89 | +0 | Windows 10.0.18363.1016 | Arm | Microsoft SQ1 3.0 GHz | 3.1.6 | 5.0.20.40416 | |
Faster | 8.24 | 7.06 | 1.17 | +0 | macOS Catalina 10.15.6 | X64 | Intel Core i5-4278U CPU 2.60GHz (Haswell) | 3.1.6 | 5.0.20.41714 | |
Same | 6.83 | 5.94 | 1.15 | +0 | macOS Catalina 10.15.6 | X64 | Intel Core i7-4870HQ CPU 2.50GHz (Haswell) | 3.1.6 | 5.0.20.41714 | |
Same | 7.15 | 6.15 | 1.16 | +0 | macOS Mojave 10.14.5 | X64 | Intel Core i7-5557U CPU 3.10GHz (Broadwell) | 3.1.6 | 5.0.20.40203 |
System.Collections.Tests.DictionarySequentialKeys.ContainsKey_17_Int_32ByteRefsValue
Result | Base | Diff | Ratio | Alloc Delta | Modality | Operating System | Bit | Processor Name | Base V | Diff V |
---|---|---|---|---|---|---|---|---|---|---|
Same | 3.64 | 4.30 | 0.85 | +0 | Windows 10.0.19041.388 | X64 | AMD Ryzen 9 3900X | 3.1.6 | 5.0.20.41714 | |
Faster | 6.66 | 5.57 | 1.20 | +0 | Windows 10.0.18363.959 | X64 | Intel Xeon CPU E5-1650 v4 3.60GHz | 3.1.6 | 5.0.20.40203 | |
Faster | 6.68 | 5.60 | 1.19 | +0 | Windows 10.0.18363.959 | X64 | Intel Xeon CPU E5-1650 v4 3.60GHz | 3.1.6 | 5.0.20.40416 | |
Same | 7.47 | 6.49 | 1.15 | +0 | Windows 10.0.19041.450 | X64 | Intel Core i7-5557U CPU 3.10GHz (Broadwell) | 3.1.6 | 5.0.20.40416 | |
Same | 5.99 | 6.00 | 1.00 | +0 | Windows 10.0.19041.450 | X64 | Intel Core i7-6700 CPU 3.40GHz (Skylake) | 3.1.6 | 5.0.20.40416 | |
Same | 5.15 | 4.55 | 1.13 | +0 | Windows 10.0.19042 | X64 | Intel Core i7-7700 CPU 3.60GHz (Kaby Lake) | 3.1.6 | 5.0.20.40416 | |
Same | 6.12 | 5.42 | 1.13 | +0 | several? | Windows 10.0.19041.450 | X64 | Intel Core i7-8650U CPU 1.90GHz (Kaby Lake R) | 3.1.6 | 5.0.20.41714 |
Same | 5.95 | 5.34 | 1.11 | +0 | ubuntu 18.04 | X64 | Intel Xeon CPU E5-1650 v4 3.60GHz | 3.1.6 | 5.0.20.40203 | |
Same | 7.33 | 6.21 | 1.18 | +0 | several? | manjaro | X64 | Intel Core i7-4771 CPU 3.50GHz (Haswell) | 3.1.6 | 5.0.20.41714 |
Same | 6.38 | 5.96 | 1.07 | +0 | pop 20.04 | X64 | Intel Core i7-6600U CPU 2.60GHz (Skylake) | 3.1.6 | 5.0.20.41714 | |
Same | 5.12 | 4.73 | 1.08 | +0 | alpine 3.11 | X64 | Intel Core i7-7700 CPU 3.60GHz (Kaby Lake) | 3.1.6 | 5.0.20.41714 | |
Same | 5.11 | 4.66 | 1.10 | +0 | ubuntu 18.04 | X64 | Intel Core i7-7700 CPU 3.60GHz (Kaby Lake) | 3.1.6 | 5.0.20.40416 | |
Slower | 20.25 | 25.44 | 0.80 | +0 | ubuntu 16.04 | Arm64 | Unknown processor | 3.1.6 | 5.0.20.41714 | |
Slower | 19.99 | 25.56 | 0.78 | +0 | ubuntu 16.04 | Arm64 | Unknown processor | 3.1.7 | 5.0.20.41714 | |
Slower | 20.23 | 25.48 | 0.79 | +0 | ubuntu 16.04 | Arm64 | Unknown processor | 3.1.6 | 5.0.20.41714 | |
Same | 17.00 | 20.10 | 0.85 | +0 | bimodal | ubuntu 18.04 | Arm64 | Unknown processor | 3.1.6 | 5.0.20.41714 |
Same | 7.14 | 7.47 | 0.96 | +0 | several? | Windows 10.0.18363.959 | X86 | Intel Xeon CPU E5-1650 v4 3.60GHz | 3.1.6 | 5.0.20.41714 |
Same | 8.31 | 8.34 | 1.00 | +0 | Windows 10.0.19041.450 | X86 | Intel Core i7-5557U CPU 3.10GHz (Broadwell) | 3.1.6 | 5.0.20.40416 | |
Slower | 10.27 | 11.52 | 0.89 | +0 | Windows 10.0.18363.1016 | Arm | Microsoft SQ1 3.0 GHz | 3.1.6 | 5.0.20.40416 | |
Faster | 8.55 | 7.29 | 1.17 | +0 | macOS Catalina 10.15.6 | X64 | Intel Core i5-4278U CPU 2.60GHz (Haswell) | 3.1.6 | 5.0.20.41714 | |
Faster | 7.11 | 6.07 | 1.17 | +0 | macOS Catalina 10.15.6 | X64 | Intel Core i7-4870HQ CPU 2.50GHz (Haswell) | 3.1.6 | 5.0.20.41714 | |
Same | 7.17 | 6.24 | 1.15 | +0 | macOS Mojave 10.14.5 | X64 | Intel Core i7-5557U CPU 3.10GHz (Broadwell) | 3.1.6 | 5.0.20.40203 |