Skip to content
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

.NET 7.0 Preview 2 Microbenchmarks Performance Study Report #66848

Closed
3 of 10 tasks
adamsitnik opened this issue Mar 18, 2022 · 27 comments
Closed
3 of 10 tasks

.NET 7.0 Preview 2 Microbenchmarks Performance Study Report #66848

adamsitnik opened this issue Mar 18, 2022 · 27 comments
Labels
area-Meta tenet-performance Performance related issue tracking This issue is tracking the completion of other related issues.
Milestone

Comments

@adamsitnik
Copy link
Member

adamsitnik commented Mar 18, 2022

Data

This time we have covered following configs:

  • architectures: x64, x86, arm64, arm
  • Unix: Ubuntu 18.04, Ubuntu 20.04, pop 20.04, Alpine 3.13, Debian 11, macOS 11.6.3, macOS 12.2.1
  • Windows: 10 & 11
Operating System Bit Processor Name
Windows 11 X64 AMD Ryzen Threadripper PRO 3945WX 12-Cores
Windows 11 X64 AMD Ryzen 9 5900X
Windows 11 X64 Intel Core i5-4300U CPU 1.90GHz (Haswell)
Windows 10 X64 Intel Core i7-7700 CPU 3.60GHz (Kaby Lake)
Windows 11 X64 Intel Core i9-9900T CPU 2.10GHz
Windows 11 X64 Unknown processor
ubuntu 18.04 X64 AMD Ryzen 9 5900X
ubuntu 20.04 X64 AMD Ryzen 9 5900X
ubuntu 18.04 X64 Intel Xeon CPU E5-1650 v4 3.60GHz
ubuntu 18.04 X64 Intel Core i7-2720QM CPU 2.20GHz (Sandy Bridge)
pop 20.04 X64 Intel Core i7-6600U CPU 2.60GHz (Skylake)
alpine 3.13 X64 Intel Core i7-7700 CPU 3.60GHz (Kaby Lake)
debian 11 X64 Intel Core i7-7700 CPU 3.60GHz (Kaby Lake)
macOS Monterey 12.2.1 Arm64 Apple M1 Max
Windows 10 Arm64 Microsoft SQ1 3.0 GHz
Windows 11 Arm64 Microsoft SQ1 3.0 GHz
Windows 11 X86 AMD Ryzen Threadripper PRO 3945WX 12-Cores
Windows 10 X86 Intel Xeon CPU E5-1650 v4 3.60GHz
Windows 10 X86 Intel Core i7-6700 CPU 3.40GHz (Skylake)
Windows 10 X86 Intel Core i7-7700 CPU 3.60GHz (Kaby Lake)
Windows 10 Arm Microsoft SQ1 3.0 GHz
macOS Big Sur 11.6.3 X64 Intel Core i5-4278U CPU 2.60GHz (Haswell)
macOS Monterey 12.2.1 X64 Intel Core i7-4870HQ CPU 2.50GHz (Haswell)
macOS Monterey 12.2.1 X64 Intel Core i7-5557U CPU 3.10GHz (Broadwell)

Most of the benchmarks were run on bare-metal machines, some were executed via WSL.

This would not be possible without the help from: @AndyAyersMS @carlossanlop @danmoseley @jeffhandley @sblom and @dakersnar who contributed their results and time.

The full report generated by the tool is available here. The full report contains also improvements, so if you read it from the end you can see the biggest perf improvements. There are plenty of them!

Again, the full historical data turned out to be extremely useful. For details about methodology please read #41871. Preview1 report can be found here.

Regressions

By design

Investigation in progress

Noise, flaky or multimodal

The following benchmarks showed up in the report generated by the tool, but were not actual regressions:

Big thanks to everyone involved!

@adamsitnik adamsitnik added area-Meta tenet-performance Performance related issue tracking This issue is tracking the completion of other related issues. labels Mar 18, 2022
@adamsitnik adamsitnik added this to the 7.0.0 milestone Mar 18, 2022
@ghost
Copy link

ghost commented Mar 18, 2022

Tagging subscribers to this area: @dotnet/area-meta
See info in area-owners.md if you want to be subscribed.

Issue Details

Data

This time we have covered following configs:

  • architectures: x64, x86, arm64, arm
  • Unix: Ubuntu 18.04, Ubuntu 20.04, pop 20.04, Alpine 3.13, Debian 11, macOS 11.6.3, macOS 12.2.1
  • Windows: 10 & 11
Operating System Bit Processor Name
Windows 11 X64 AMD Ryzen Threadripper PRO 3945WX 12-Cores
Windows 11 X64 AMD Ryzen 9 5900X
Windows 11 X64 Intel Core i5-4300U CPU 1.90GHz (Haswell)
Windows 10 X64 Intel Core i7-7700 CPU 3.60GHz (Kaby Lake)
Windows 11 X64 Intel Core i9-9900T CPU 2.10GHz
Windows 11 X64 Unknown processor
ubuntu 18.04 X64 AMD Ryzen 9 5900X
ubuntu 20.04 X64 AMD Ryzen 9 5900X
ubuntu 18.04 X64 Intel Xeon CPU E5-1650 v4 3.60GHz
ubuntu 18.04 X64 Intel Core i7-2720QM CPU 2.20GHz (Sandy Bridge)
pop 20.04 X64 Intel Core i7-6600U CPU 2.60GHz (Skylake)
alpine 3.13 X64 Intel Core i7-7700 CPU 3.60GHz (Kaby Lake)
debian 11 X64 Intel Core i7-7700 CPU 3.60GHz (Kaby Lake)
macOS Monterey 12.2.1 Arm64 Apple M1 Max
Windows 10 Arm64 Microsoft SQ1 3.0 GHz
Windows 11 Arm64 Microsoft SQ1 3.0 GHz
Windows 11 X86 AMD Ryzen Threadripper PRO 3945WX 12-Cores
Windows 10 X86 Intel Xeon CPU E5-1650 v4 3.60GHz
Windows 10 X86 Intel Core i7-6700 CPU 3.40GHz (Skylake)
Windows 10 X86 Intel Core i7-7700 CPU 3.60GHz (Kaby Lake)
Windows 10 Arm Microsoft SQ1 3.0 GHz
macOS Big Sur 11.6.3 X64 Intel Core i5-4278U CPU 2.60GHz (Haswell)
macOS Monterey 12.2.1 X64 Intel Core i7-4870HQ CPU 2.50GHz (Haswell)
macOS Monterey 12.2.1 X64 Intel Core i7-5557U CPU 3.10GHz (Broadwell)

Most of the benchmarks were run on bare-metal machines, some were executed via WSL.

This would not be possible without the help from: @AndyAyersMS @carlossanlop @danmoseley @jeffhandley @sblom and @dakersnar who contributed their results and time.

The full report generated by the tool is available here. The full report contains also improvements, so if you read it from the end you can see the biggest perf improvements. There are plenty of them!

Again, the full historical data turned out to be extremely useful. For details about methodology please read #41871. Preview1 report can be found here.

Regressions

By design

Investigation in progress

Noise, flaky or multimodal

The following benchmarks showed up in the report generated by the tool, but were not actual regressions:

Big thanks to everyone involved!

Author: adamsitnik
Assignees: -
Labels:

area-Meta, tenet-performance, tracking

Milestone: 7.0.0

@danmoseley
Copy link
Member

Nice work @adamsitnik (and thanks @jeffhandley for big script improvements)

From the table above, we could use more coverage on Windows 7/8, AMD hardware, Linux Arm64 and Arm32, and perhaps devices (?).

Do you think we are far from the point where it would be feasible to ask community members to submit results as well? The collection is pretty well scripted now, but perhaps the analysis side does not scale well yet?

@EgorBo
Copy link
Member

EgorBo commented Mar 18, 2022

" Faster " - 12395
" Same " - 78230
" Slower " - 3950

I love this one: 😄 (cc @stephentoub)
image

@EgorBo
Copy link
Member

EgorBo commented Mar 18, 2022

@adamsitnik the data looks super interesting!! I wish there were more arm64 devices, there is currently only one there. And while the table in your issue states there is M1 Max I don't see it in the reports 😞

@kant2002
Copy link
Contributor

I love these results. I notice that even on the same hardware results favor Windows. Any reason for that? Does Linux was more optimized and thus has less gains, or JIT for Linux works slightly worse?

@danmoseley
Copy link
Member

danmoseley commented Mar 18, 2022

I love these results. I notice that even on the same hardware results favor Windows. Any reason for that? Does Linux was more optimized and thus has less gains, or JIT for Linux works slightly worse?

@kant2002 are you looking at particular scenarios? Generally something that's CPU bound should be closely comparable. I know sometimes calling ABI differences favor one or the other (cc @AndyAyersMS ) and of course anything that uses syscalls like IO will differ.

@stephentoub
Copy link
Member

I love this one

Yeah, that's quite lovely. That's benefiting from us teaching regex how to spot positions in the pattern that are fixed and easily searchable. Previously we would have walked character by character looking for an 'a' through 'q'. Now we'll do an IndexOf('x') and then back off 14 characters.

@EgorBo
Copy link
Member

EgorBo commented Mar 18, 2022

I know sometimes calling convention differences favor one or the other (cc @AndyAyersMS )

Yes, there are lots of factors, for some microbenchmarks ABI does matter a lot, see #66529 (comment) (left - windows-x64, right - linux-x64)

@AndyAyersMS
Copy link
Member

AndyAyersMS commented Mar 18, 2022

table in your issue states there is M1 Max I don't see it in the reports

I was the one that ran those... here's the results I got

Net 6.0

BenchmarkDotNet=v0.13.1.1706-nightly, OS=macOS Monterey 12.2.1 (21D62) [Darwin 21.3.0]
Apple M1 Max 2.40GHz, 1 CPU, 10 logical and 10 physical cores
.NET SDK=6.0.104
[Host] : .NET 6.0.2 (6.0.222.6406), Arm64 RyuJIT
Job-BZGRYC : .NET 6.0.2 (6.0.222.6406), Arm64 RyuJIT

Method Pattern Options Mean Error StdDev Median Min Max Gen 0 Allocated
Count [a-q][^u-z]{13}x None 29,629,938.2 ns 78,819.11 ns 69,871.09 ns 29,660,453.1 ns 29,521,812.5 ns 29,732,947.8 ns - 29704 B
Count [a-q][^u-z]{13}x Compiled 5,332,489.5 ns 8,380.48 ns 6,542.93 ns 5,332,927.9 ns

Net 7.0

BenchmarkDotNet=v0.13.1.1706-nightly, OS=macOS Monterey 12.2.1 (21D62) [Darwin 21.3.0]
Apple M1 Max 2.40GHz, 1 CPU, 10 logical and 10 physical cores
.NET SDK=7.0.100-preview.2.22124.4
[Host] : .NET 7.0.0 (7.0.22.12204), Arm64 RyuJIT
Job-XRDINK : .NET 7.0.0 (7.0.22.12204), Arm64 RyuJI

Method Pattern Options Mean Error StdDev Median Min Max Gen 0 Allocated
Count [a-q][^u-z]{13}x None 81,116.02 ns 168.479 ns 149.352 ns 81,130.92 ns 80,918.20 ns 81,437.96 ns - -
Count [a-q][^u-z]{13}x Compiled 64,234.90 ns 85.659 ns 71.529 ns 64,221.25 ns 64,147.73 ns 64,371.23 ns - -
Count [a-q][^u-z]{13}x NonBacktracking 118,340.53 ns 114.977 ns 96.011 ns 118,318.61 ns 118,200.62 ns 118,558.37 ns - 1 B

So "none" is 365x faster; "compiled" 83x faster.

@kant2002
Copy link
Contributor

@danmoseley I was looking at the image which Egor share. I assume that since this is regex, this test was CPU bound, maybe I'm wrong here.

@TrayanZapryanov
Copy link
Contributor

Nice work @adamsitnik (and thanks @jeffhandley for big script improvements)

From the table above, we could use more coverage on Windows 7/8, AMD hardware, Linux Arm64 and Arm32, and perhaps devices (?).

Do you think we are far from the point where it would be feasible to ask community members to submit results as well? The collection is pretty well scripted now, but perhaps the analysis side does not scale well yet?

If you need more results, I can join and execute tests on my machine. Just small guide on this will be really helpful.

@huoyaoyuan
Copy link
Member

I'm interested of results on Alder Lake. Can we do something about the different cores, for example reporting our threads information to the OS? It should already be a thing for ARM big.LITTLE too.

@adamsitnik
Copy link
Member Author

Since many folks asked me offline for additional statistics, I've extended the tool to print them in total, per architecture, per namespace and per OS.

Legend

  • Statistical Test threshold: 10%, the noise filter: 2 ns
  • Result is conslusion: Slower|Faster|Same|Unknown

Statistics

Total: 102270
Same: 79.32 %
Slower: 5.51 %
Faster: 15.13 %
Unknown: 0.04 %

Statistics per Architecture

Architecture Same Slower Faster Unknown
Arm64 78.79 % 2.69 % 18.46 % 0.06 %
Arm 73.80 % 6.52 % 19.59 % 0.09 %
X64 78.28 % 6.11 % 15.57 % 0.04 %
X86 86.51 % 4.90 % 8.56 % 0.02 %

Statistics per Operating System

Operating System Same Slower Faster Unknown
macOS Monterey 12.2.1 70.47 % 14.40 % 15.07 % 0.06 %
Windows 10 83.98 % 4.45 % 11.52 % 0.04 %
Windows 11 75.82 % 4.19 % 19.97 % 0.02 %
ubuntu 18.04 77.32 % 4.07 % 18.53 % 0.07 %
ubuntu 20.04 84.53 % 3.47 % 11.96 % 0.05 %
macOS Big Sur 11.6.3 78.73 % 4.69 % 16.53 % 0.05 %
pop 20.04 84.84 % 6.02 % 9.15 % 0.00 %
alpine 3.13 87.22 % 2.75 % 9.96 % 0.07 %
debian 11 86.98 % 2.70 % 10.27 % 0.05 %

Statistics per Namespace

Namespace Same Slower Faster Unknown
BenchmarksGame 74.86 % 7.87 % 17.27 % 0.00 %
Benchstone.BenchF 75.21 % 1.46 % 23.33 % 0.00 %
Benchstone.BenchI 70.66 % 3.47 % 25.87 % 0.00 %
Benchstone.MDBenchF 89.17 % 0.83 % 10.00 % 0.00 %
Benchstone.MDBenchI 70.00 % 2.08 % 27.92 % 0.00 %
Devirtualization 95.83 % 0.00 % 4.17 % 0.00 %
Exceptions 88.66 % 4.40 % 6.94 % 0.00 %
FractalPerf 91.67 % 0.00 % 8.33 % 0.00 %
GuardedDevirtualization 95.83 % 0.00 % 4.17 % 0.00 %
Inlining 95.83 % 0.00 % 4.17 % 0.00 %
Interop 88.89 % 0.00 % 11.11 % 0.00 %
JetStream 50.00 % 0.00 % 50.00 % 0.00 %
Layout 87.50 % 4.17 % 8.33 % 0.00 %
Lowering 100.00 % 0.00 % 0.00 % 0.00 %
MicroBenchmarks.Serializers 79.23 % 7.90 % 12.87 % 0.00 %
Microsoft.AspNetCore.Server.Kestrel.Performance 69.57 % 9.78 % 20.65 % 0.00 %
Microsoft.Extensions.Caching.Memory.Tests 56.52 % 7.11 % 36.36 % 0.00 %
Microsoft.Extensions.Configuration.Xml 90.00 % 8.33 % 1.67 % 0.00 %
Microsoft.Extensions.DependencyInjection 63.53 % 24.96 % 11.50 % 0.00 %
Microsoft.Extensions.Logging 82.86 % 6.83 % 10.31 % 0.00 %
Microsoft.Extensions.Primitives.Performance 96.74 % 0.00 % 3.26 % 0.00 %
Microsoft.Extensions.Primitives 80.43 % 4.11 % 15.46 % 0.00 %
PerfLabTests 62.92 % 16.25 % 20.83 % 0.00 %
PerfLabTests.CastingPerf2 75.56 % 7.78 % 16.67 % 0.00 %
SciMark2 70.83 % 1.67 % 27.50 % 0.00 %
SIMD 89.81 % 0.00 % 10.19 % 0.00 %
Span 80.83 % 1.00 % 18.17 % 0.00 %
StoreBlock 95.69 % 0.28 % 4.03 % 0.00 %
System.Buffers.Binary.Tests 72.92 % 5.21 % 21.88 % 0.00 %
System.Buffers.Tests 67.54 % 4.54 % 27.92 % 0.00 %
System.Buffers.Text.Tests 84.30 % 1.55 % 14.15 % 0.00 %
System.Collections 77.09 % 8.49 % 14.42 % 0.00 %
System.Collections.Concurrent 90.53 % 4.97 % 4.50 % 0.00 %
System.Collections.Tests 74.76 % 5.06 % 20.19 % 0.00 %
System.ComponentModel.Tests 83.00 % 6.72 % 10.28 % 0.00 %
System.ConsoleTests 84.78 % 5.07 % 10.14 % 0.00 %
System.Diagnostics 76.09 % 8.91 % 15.00 % 0.00 %
System.Diagnostics.Tracing 75.00 % 15.00 % 10.00 % 0.00 %
System.Formats.Cbor.Tests 77.93 % 11.04 % 11.04 % 0.00 %
System.Globalization.Tests 87.16 % 2.04 % 10.80 % 0.00 %
System 80.38 % 4.78 % 14.83 % 0.00 %
System.IO.Compression 92.33 % 0.79 % 6.88 % 0.00 %
System.IO.MemoryMappedFiles.Tests 33.82 % 2.94 % 63.24 % 0.00 %
System.IO.Pipelines.Tests 91.30 % 3.26 % 5.43 % 0.00 %
System.IO.Pipes.Tests 76.09 % 7.25 % 16.67 % 0.00 %
System.IO.Tests 70.45 % 7.12 % 22.44 % 0.00 %
System.Linq.Tests 82.01 % 6.59 % 11.41 % 0.00 %
System.MathBenchmarks 89.38 % 1.41 % 9.21 % 0.00 %
System.Memory 87.61 % 3.36 % 9.03 % 0.00 %
System.Net.Http.Tests 64.86 % 13.41 % 21.74 % 0.00 %
System.Net.NetworkInformation.Tests 75.00 % 10.87 % 14.13 % 0.00 %
System.Net.Primitives.Tests 86.96 % 6.13 % 6.92 % 0.00 %
System.Net.Security.Tests 90.99 % 3.78 % 5.23 % 0.00 %
System.Net.Sockets.Tests 77.48 % 6.31 % 16.22 % 0.00 %
System.Net.Tests 81.16 % 10.87 % 7.97 % 0.00 %
System.Net.WebSockets.Tests 76.09 % 6.52 % 17.39 % 0.00 %
System.Numerics.Tests 91.21 % 2.58 % 6.21 % 0.00 %
System.Reflection 81.53 % 9.17 % 9.31 % 0.00 %
System.Runtime.InteropServices.Tests 93.48 % 2.17 % 4.35 % 0.00 %
System.Runtime.Serialization.Formatters.Tests 95.65 % 0.00 % 4.35 % 0.00 %
System.Security.Cryptography.Primitives.Tests.Performance 86.96 % 3.80 % 9.24 % 0.00 %
System.Security.Cryptography.Tests 76.81 % 20.29 % 2.90 % 0.00 %
System.Security.Cryptography.X509Certificates.Tests 76.47 % 16.18 % 7.35 % 0.00 %
System.Tests 78.73 % 6.09 % 15.19 % 0.00 %
System.Text.Encodings.Web.Tests 82.25 % 3.26 % 14.49 % 0.00 %
System.Text.Json.Document.Tests 87.30 % 2.17 % 10.52 % 0.00 %
System.Text.Json.Reader.Tests 72.83 % 15.22 % 11.96 % 0.00 %
System.Text.Json.Serialization.Tests 81.64 % 6.82 % 11.54 % 0.00 %
System.Text.Json.Tests 87.68 % 2.52 % 9.80 % 0.00 %
System.Text 91.39 % 4.17 % 4.44 % 0.00 %
System.Text.RegularExpressions.Tests 25.53 % 9.96 % 63.62 % 0.89 %
System.Text.Tests 79.26 % 8.17 % 12.56 % 0.00 %
System.Threading.Channels.Tests 76.81 % 6.16 % 17.03 % 0.00 %
System.Threading.Tasks.Tests 49.28 % 15.94 % 34.78 % 0.00 %
System.Threading.Tasks 87.58 % 6.52 % 5.90 % 0.00 %
System.Threading.Tests 87.56 % 4.94 % 7.50 % 0.00 %
System.Xml.Linq 74.14 % 8.01 % 17.85 % 0.00 %
System.Xml.Tests 77.33 % 13.33 % 9.33 % 0.00 %
V8.Crypto 100.00 % 0.00 % 0.00 % 0.00 %
V8.Richards 95.83 % 0.00 % 4.17 % 0.00 %
XmlDocumentTests.XmlDocumentTests 85.51 % 10.14 % 4.35 % 0.00 %
XmlDocumentTests.XmlNodeListTests 86.96 % 6.52 % 6.52 % 0.00 %
XmlDocumentTests.XmlNodeTests 100.00 % 0.00 % 0.00 % 0.00 %
System.Drawing.Tests 77.92 % 1.67 % 20.42 % 0.00 %
HardwareIntrinsics.RayTracer 85.00 % 10.00 % 5.00 % 0.00 %

@adamsitnik
Copy link
Member Author

Statistical Test threshold: 5%, the noise filter: 1 ns

Statistics

Total: 102270
Same: 66.88 %
Slower: 9.79 %
Faster: 23.28 %
Unknown: 0.04 %

Statistics per Architecture

Architecture Same Slower Faster Unknown
Arm64 65.35 % 5.39 % 29.20 % 0.06 %
Arm 58.87 % 13.18 % 27.86 % 0.09 %
X64 65.78 % 10.55 % 23.63 % 0.04 %
X86 76.12 % 9.12 % 14.73 % 0.02 %

Statistics per Operating System

Operating System Same Slower Faster Unknown
macOS Monterey 12.2.1 58.81 % 18.69 % 22.44 % 0.06 %
Windows 10 72.69 % 8.77 % 18.50 % 0.04 %
Windows 11 62.88 % 8.30 % 28.80 % 0.02 %
ubuntu 18.04 63.63 % 7.61 % 28.69 % 0.07 %
ubuntu 20.04 72.84 % 5.94 % 21.18 % 0.05 %
macOS Big Sur 11.6.3 61.62 % 10.16 % 28.17 % 0.05 %
pop 20.04 71.14 % 15.28 % 13.59 % 0.00 %
alpine 3.13 76.25 % 6.38 % 17.31 % 0.07 %
debian 11 75.87 % 6.17 % 17.91 % 0.05 %

Statistics per Namespace

Namespace Same Slower Faster Unknown
BenchmarksGame 61.61 % 9.98 % 28.41 % 0.00 %
Benchstone.BenchF 66.46 % 2.71 % 30.83 % 0.00 %
Benchstone.BenchI 54.34 % 7.12 % 38.54 % 0.00 %
Benchstone.MDBenchF 82.50 % 2.50 % 15.00 % 0.00 %
Benchstone.MDBenchI 58.33 % 5.00 % 36.67 % 0.00 %
Devirtualization 87.50 % 3.33 % 9.17 % 0.00 %
Exceptions 74.54 % 9.14 % 16.32 % 0.00 %
FractalPerf 91.67 % 0.00 % 8.33 % 0.00 %
GuardedDevirtualization 93.25 % 0.30 % 6.45 % 0.00 %
Inlining 95.83 % 0.00 % 4.17 % 0.00 %
Interop 76.39 % 4.17 % 19.44 % 0.00 %
JetStream 35.42 % 4.17 % 60.42 % 0.00 %
Layout 83.33 % 4.17 % 12.50 % 0.00 %
Lowering 95.83 % 0.00 % 4.17 % 0.00 %
MicroBenchmarks.Serializers 61.72 % 12.12 % 26.16 % 0.00 %
Microsoft.AspNetCore.Server.Kestrel.Performance 58.15 % 11.41 % 30.43 % 0.00 %
Microsoft.Extensions.Caching.Memory.Tests 45.45 % 9.09 % 45.45 % 0.00 %
Microsoft.Extensions.Configuration.Xml 75.00 % 16.67 % 8.33 % 0.00 %
Microsoft.Extensions.DependencyInjection 45.02 % 32.68 % 22.30 % 0.00 %
Microsoft.Extensions.Logging 65.96 % 16.15 % 17.89 % 0.00 %
Microsoft.Extensions.Primitives.Performance 92.39 % 2.72 % 4.89 % 0.00 %
Microsoft.Extensions.Primitives 63.77 % 6.76 % 29.47 % 0.00 %
PerfLabTests 47.19 % 23.70 % 29.11 % 0.00 %
PerfLabTests.CastingPerf2 56.67 % 14.44 % 28.89 % 0.00 %
SciMark2 60.00 % 3.33 % 36.67 % 0.00 %
SIMD 87.50 % 1.39 % 11.11 % 0.00 %
Span 69.00 % 3.17 % 27.83 % 0.00 %
StoreBlock 90.56 % 0.42 % 9.03 % 0.00 %
System.Buffers.Binary.Tests 60.94 % 10.42 % 28.65 % 0.00 %
System.Buffers.Tests 54.72 % 9.11 % 36.17 % 0.00 %
System.Buffers.Text.Tests 73.77 % 4.59 % 21.64 % 0.00 %
System.Collections 59.23 % 13.73 % 27.04 % 0.00 %
System.Collections.Concurrent 81.64 % 7.85 % 10.51 % 0.00 %
System.Collections.Tests 60.05 % 8.93 % 31.02 % 0.00 %
System.ComponentModel.Tests 55.73 % 20.95 % 23.32 % 0.00 %
System.ConsoleTests 74.64 % 10.87 % 14.49 % 0.00 %
System.Diagnostics 59.35 % 15.65 % 25.00 % 0.00 %
System.Diagnostics.Tracing 65.00 % 15.00 % 20.00 % 0.00 %
System.Formats.Cbor.Tests 65.89 % 14.72 % 19.40 % 0.00 %
System.Globalization.Tests 77.89 % 4.63 % 17.48 % 0.00 %
System 69.62 % 6.22 % 24.16 % 0.00 %
System.IO.Compression 86.96 % 3.50 % 9.54 % 0.00 %
System.IO.MemoryMappedFiles.Tests 24.63 % 4.41 % 70.96 % 0.00 %
System.IO.Pipelines.Tests 82.61 % 7.61 % 9.78 % 0.00 %
System.IO.Pipes.Tests 61.59 % 16.67 % 21.74 % 0.00 %
System.IO.Tests 55.09 % 12.01 % 32.90 % 0.00 %
System.Linq.Tests 60.14 % 14.81 % 25.05 % 0.00 %
System.MathBenchmarks 84.88 % 4.44 % 10.69 % 0.00 %
System.Memory 79.36 % 5.90 % 14.74 % 0.00 %
System.Net.Http.Tests 52.17 % 19.75 % 28.08 % 0.00 %
System.Net.NetworkInformation.Tests 63.04 % 14.13 % 22.83 % 0.00 %
System.Net.Primitives.Tests 71.15 % 11.86 % 17.00 % 0.00 %
System.Net.Security.Tests 77.33 % 8.72 % 13.95 % 0.00 %
System.Net.Sockets.Tests 62.16 % 14.41 % 23.42 % 0.00 %
System.Net.Tests 67.39 % 15.22 % 17.39 % 0.00 %
System.Net.WebSockets.Tests 58.70 % 17.39 % 23.91 % 0.00 %
System.Numerics.Tests 86.21 % 4.81 % 8.98 % 0.00 %
System.Reflection 57.36 % 24.03 % 18.61 % 0.00 %
System.Runtime.InteropServices.Tests 82.61 % 4.35 % 13.04 % 0.00 %
System.Runtime.Serialization.Formatters.Tests 78.26 % 13.04 % 8.70 % 0.00 %
System.Security.Cryptography.Primitives.Tests.Performance 61.96 % 22.28 % 15.76 % 0.00 %
System.Security.Cryptography.Tests 68.60 % 27.05 % 4.35 % 0.00 %
System.Security.Cryptography.X509Certificates.Tests 61.76 % 26.47 % 11.76 % 0.00 %
System.Tests 63.90 % 11.94 % 24.16 % 0.00 %
System.Text.Encodings.Web.Tests 61.96 % 7.97 % 30.07 % 0.00 %
System.Text.Json.Document.Tests 72.78 % 8.09 % 19.13 % 0.00 %
System.Text.Json.Reader.Tests 51.09 % 21.74 % 27.17 % 0.00 %
System.Text.Json.Serialization.Tests 63.48 % 12.70 % 23.82 % 0.00 %
System.Text.Json.Tests 75.20 % 5.95 % 18.86 % 0.00 %
System.Text 83.89 % 7.50 % 8.61 % 0.00 %
System.Text.RegularExpressions.Tests 14.02 % 13.52 % 71.56 % 0.89 %
System.Text.Tests 60.27 % 13.38 % 26.35 % 0.00 %
System.Threading.Channels.Tests 61.23 % 11.59 % 27.17 % 0.00 %
System.Threading.Tasks.Tests 36.23 % 20.29 % 43.48 % 0.00 %
System.Threading.Tasks 69.57 % 17.08 % 13.35 % 0.00 %
System.Threading.Tests 74.11 % 7.69 % 18.21 % 0.00 %
System.Xml.Linq 47.83 % 18.99 % 33.18 % 0.00 %
System.Xml.Tests 56.00 % 13.33 % 30.67 % 0.00 %
V8.Crypto 79.17 % 8.33 % 12.50 % 0.00 %
V8.Richards 79.17 % 8.33 % 12.50 % 0.00 %
XmlDocumentTests.XmlDocumentTests 57.97 % 30.43 % 11.59 % 0.00 %
XmlDocumentTests.XmlNodeListTests 71.74 % 8.70 % 19.57 % 0.00 %
XmlDocumentTests.XmlNodeTests 97.83 % 2.17 % 0.00 % 0.00 %
System.Drawing.Tests 69.17 % 4.58 % 26.25 % 0.00 %
HardwareIntrinsics.RayTracer 70.00 % 15.00 % 15.00 % 0.00 %

@adamsitnik
Copy link
Member Author

Statistical Test threshold: 2%, the noise filter: 1 ns

Statistics

Total: 102270
Same: 54.15 %
Slower: 14.56 %
Faster: 31.25 %
Unknown: 0.04 %

Statistics per Architecture

Architecture Same Slower Faster Unknown
Arm64 53.10 % 9.24 % 37.60 % 0.06 %
Arm 43.85 % 19.86 % 36.20 % 0.09 %
X64 53.12 % 15.21 % 31.63 % 0.04 %
X86 63.31 % 14.64 % 22.02 % 0.02 %

Statistics per Operating System

Operating System Same Slower Faster Unknown
macOS Monterey 12.2.1 49.63 % 22.14 % 28.17 % 0.06 %
Windows 10 59.05 % 14.55 % 26.36 % 0.04 %
Windows 11 50.16 % 12.72 % 37.10 % 0.02 %
ubuntu 18.04 50.36 % 11.04 % 38.53 % 0.07 %
ubuntu 20.04 59.02 % 10.08 % 30.86 % 0.05 %
macOS Big Sur 11.6.3 47.86 % 15.42 % 36.67 % 0.05 %
pop 20.04 56.08 % 25.30 % 18.61 % 0.00 %
alpine 3.13 64.11 % 10.75 % 25.08 % 0.07 %
debian 11 63.25 % 10.03 % 26.68 % 0.05 %

Statistics per Namespace

Namespace Same Slower Faster Unknown
BenchmarksGame 44.34 % 13.44 % 42.23 % 0.00 %
Benchstone.BenchF 50.21 % 5.83 % 43.96 % 0.00 %
Benchstone.BenchI 36.11 % 13.02 % 50.87 % 0.00 %
Benchstone.MDBenchF 64.17 % 5.00 % 30.83 % 0.00 %
Benchstone.MDBenchI 45.00 % 10.00 % 45.00 % 0.00 %
Devirtualization 87.50 % 3.33 % 9.17 % 0.00 %
Exceptions 50.35 % 23.50 % 26.16 % 0.00 %
FractalPerf 75.00 % 4.17 % 20.83 % 0.00 %
GuardedDevirtualization 93.25 % 0.30 % 6.45 % 0.00 %
Inlining 95.83 % 0.00 % 4.17 % 0.00 %
Interop 45.83 % 9.72 % 44.44 % 0.00 %
JetStream 27.08 % 8.33 % 64.58 % 0.00 %
Layout 62.50 % 8.33 % 29.17 % 0.00 %
Lowering 95.83 % 0.00 % 4.17 % 0.00 %
MicroBenchmarks.Serializers 35.21 % 20.97 % 43.83 % 0.00 %
Microsoft.AspNetCore.Server.Kestrel.Performance 41.85 % 16.85 % 41.30 % 0.00 %
Microsoft.Extensions.Caching.Memory.Tests 27.27 % 14.62 % 58.10 % 0.00 %
Microsoft.Extensions.Configuration.Xml 40.00 % 46.67 % 13.33 % 0.00 %
Microsoft.Extensions.DependencyInjection 28.05 % 42.50 % 29.45 % 0.00 %
Microsoft.Extensions.Logging 50.68 % 23.35 % 25.96 % 0.00 %
Microsoft.Extensions.Primitives.Performance 92.39 % 2.72 % 4.89 % 0.00 %
Microsoft.Extensions.Primitives 63.77 % 6.76 % 29.47 % 0.00 %
PerfLabTests 36.51 % 27.92 % 35.57 % 0.00 %
PerfLabTests.CastingPerf2 41.39 % 18.61 % 40.00 % 0.00 %
SciMark2 42.50 % 5.00 % 52.50 % 0.00 %
SIMD 68.52 % 6.48 % 25.00 % 0.00 %
Span 57.50 % 5.67 % 36.83 % 0.00 %
StoreBlock 90.56 % 0.42 % 9.03 % 0.00 %
System.Buffers.Binary.Tests 58.85 % 10.94 % 30.21 % 0.00 %
System.Buffers.Tests 46.51 % 12.33 % 41.15 % 0.00 %
System.Buffers.Text.Tests 68.54 % 6.72 % 24.74 % 0.00 %
System.Collections 38.03 % 20.99 % 40.99 % 0.00 %
System.Collections.Concurrent 73.21 % 10.62 % 16.17 % 0.00 %
System.Collections.Tests 49.18 % 12.90 % 37.93 % 0.00 %
System.ComponentModel.Tests 25.69 % 41.50 % 32.81 % 0.00 %
System.ConsoleTests 57.25 % 20.29 % 22.46 % 0.00 %
System.Diagnostics 33.26 % 28.26 % 38.48 % 0.00 %
System.Diagnostics.Tracing 41.67 % 23.33 % 35.00 % 0.00 %
System.Formats.Cbor.Tests 40.13 % 22.74 % 37.12 % 0.00 %
System.Globalization.Tests 66.81 % 8.27 % 24.92 % 0.00 %
System 51.44 % 9.81 % 38.76 % 0.00 %
System.IO.Compression 74.15 % 7.49 % 18.36 % 0.00 %
System.IO.MemoryMappedFiles.Tests 14.71 % 6.25 % 79.04 % 0.00 %
System.IO.Pipelines.Tests 44.57 % 23.91 % 31.52 % 0.00 %
System.IO.Pipes.Tests 42.03 % 24.64 % 33.33 % 0.00 %
System.IO.Tests 39.95 % 18.31 % 41.75 % 0.00 %
System.Linq.Tests 36.42 % 24.92 % 38.66 % 0.00 %
System.MathBenchmarks 73.19 % 12.77 % 14.05 % 0.00 %
System.Memory 75.25 % 7.61 % 17.14 % 0.00 %
System.Net.Http.Tests 34.06 % 31.34 % 34.60 % 0.00 %
System.Net.NetworkInformation.Tests 46.74 % 15.22 % 38.04 % 0.00 %
System.Net.Primitives.Tests 56.92 % 16.60 % 26.48 % 0.00 %
System.Net.Security.Tests 61.05 % 16.57 % 22.38 % 0.00 %
System.Net.Sockets.Tests 45.05 % 24.32 % 30.63 % 0.00 %
System.Net.Tests 47.83 % 26.09 % 26.09 % 0.00 %
System.Net.WebSockets.Tests 32.61 % 34.78 % 32.61 % 0.00 %
System.Numerics.Tests 84.59 % 5.63 % 9.78 % 0.00 %
System.Reflection 32.64 % 38.61 % 28.75 % 0.00 %
System.Runtime.InteropServices.Tests 76.09 % 4.35 % 19.57 % 0.00 %
System.Runtime.Serialization.Formatters.Tests 60.87 % 26.09 % 13.04 % 0.00 %
System.Security.Cryptography.Primitives.Tests.Performance 46.74 % 29.89 % 23.37 % 0.00 %
System.Security.Cryptography.Tests 54.11 % 34.78 % 11.11 % 0.00 %
System.Security.Cryptography.X509Certificates.Tests 47.06 % 35.29 % 17.65 % 0.00 %
System.Tests 53.83 % 15.72 % 30.45 % 0.00 %
System.Text.Encodings.Web.Tests 42.39 % 12.14 % 45.47 % 0.00 %
System.Text.Json.Document.Tests 46.96 % 17.91 % 35.13 % 0.00 %
System.Text.Json.Reader.Tests 23.91 % 29.35 % 46.74 % 0.00 %
System.Text.Json.Serialization.Tests 36.48 % 22.23 % 41.29 % 0.00 %
System.Text.Json.Tests 47.58 % 14.42 % 38.00 % 0.00 %
System.Text 66.39 % 13.33 % 20.28 % 0.00 %
System.Text.RegularExpressions.Tests 7.74 % 15.56 % 75.81 % 0.89 %
System.Text.Tests 46.07 % 16.85 % 37.08 % 0.00 %
System.Threading.Channels.Tests 42.39 % 19.57 % 38.04 % 0.00 %
System.Threading.Tasks.Tests 30.43 % 24.64 % 44.93 % 0.00 %
System.Threading.Tasks 60.87 % 21.74 % 17.39 % 0.00 %
System.Threading.Tests 63.59 % 11.07 % 25.34 % 0.00 %
System.Xml.Linq 34.78 % 22.65 % 42.56 % 0.00 %
System.Xml.Tests 24.00 % 13.33 % 62.67 % 0.00 %
V8.Crypto 58.33 % 16.67 % 25.00 % 0.00 %
V8.Richards 62.50 % 16.67 % 20.83 % 0.00 %
XmlDocumentTests.XmlDocumentTests 47.83 % 40.58 % 11.59 % 0.00 %
XmlDocumentTests.XmlNodeListTests 58.70 % 17.39 % 23.91 % 0.00 %
XmlDocumentTests.XmlNodeTests 97.83 % 2.17 % 0.00 % 0.00 %
System.Drawing.Tests 50.83 % 13.33 % 35.83 % 0.00 %
HardwareIntrinsics.RayTracer 30.00 % 40.00 % 30.00 % 0.00 %

@EgorBo
Copy link
Member

EgorBo commented Mar 21, 2022

@adamsitnik is it too late to ask for a report with a bigger noise filter? say, 10ns or even 100ns ?

@adamsitnik
Copy link
Member Author

is it too late to ask

It's not too late, I am not going to remove this data :D

say, 10ns or even 100ns ?

what threshold?

@EgorBo
Copy link
Member

EgorBo commented Mar 21, 2022

what threshold?

the noise filter one

@adamsitnik
Copy link
Member Author

Statistical Test threshold: 5%, the noise filter: 10 ns

Statistics

Total: 102270
Same: 73.97 %
Slower: 7.45 %
Faster: 18.53 %
Unknown: 0.04 %

Statistics per Architecture

Architecture Same Slower Faster Unknown
Arm64 74.22 % 3.95 % 21.76 % 0.06 %
Arm 68.02 % 9.38 % 22.51 % 0.09 %
X64 72.65 % 8.09 % 19.22 % 0.04 %
X86 82.00 % 7.00 % 10.98 % 0.02 %

Statistics per Operating System

Operating System Same Slower Faster Unknown
macOS Monterey 12.2.1 65.74 % 16.84 % 17.36 % 0.06 %
Windows 10 79.36 % 6.41 % 14.19 % 0.04 %
Windows 11 70.29 % 6.02 % 23.66 % 0.02 %
ubuntu 18.04 71.99 % 5.18 % 22.76 % 0.07 %
ubuntu 20.04 78.93 % 3.72 % 17.31 % 0.05 %
macOS Big Sur 11.6.3 69.83 % 7.35 % 22.77 % 0.05 %
pop 20.04 78.19 % 10.73 % 11.09 % 0.00 %
alpine 3.13 81.95 % 4.53 % 13.45 % 0.07 %
debian 11 81.64 % 4.39 % 13.93 % 0.05 %

Statistics per Namespace

Namespace Same Slower Faster Unknown
BenchmarksGame 61.61 % 9.98 % 28.41 % 0.00 %
Benchstone.BenchF 66.46 % 2.71 % 30.83 % 0.00 %
Benchstone.BenchI 54.34 % 7.12 % 38.54 % 0.00 %
Benchstone.MDBenchF 82.50 % 2.50 % 15.00 % 0.00 %
Benchstone.MDBenchI 58.33 % 5.00 % 36.67 % 0.00 %
Devirtualization 96.67 % 0.00 % 3.33 % 0.00 %
Exceptions 74.54 % 9.14 % 16.32 % 0.00 %
FractalPerf 91.67 % 0.00 % 8.33 % 0.00 %
GuardedDevirtualization 97.02 % 0.00 % 2.98 % 0.00 %
Inlining 100.00 % 0.00 % 0.00 % 0.00 %
Interop 76.39 % 4.17 % 19.44 % 0.00 %
JetStream 35.42 % 4.17 % 60.42 % 0.00 %
Layout 91.67 % 4.17 % 4.17 % 0.00 %
Lowering 100.00 % 0.00 % 0.00 % 0.00 %
MicroBenchmarks.Serializers 61.95 % 12.05 % 26.00 % 0.00 %
Microsoft.AspNetCore.Server.Kestrel.Performance 58.15 % 11.41 % 30.43 % 0.00 %
Microsoft.Extensions.Caching.Memory.Tests 48.62 % 9.09 % 42.29 % 0.00 %
Microsoft.Extensions.Configuration.Xml 75.00 % 16.67 % 8.33 % 0.00 %
Microsoft.Extensions.DependencyInjection 62.97 % 24.12 % 12.90 % 0.00 %
Microsoft.Extensions.Logging 80.00 % 9.81 % 10.19 % 0.00 %
Microsoft.Extensions.Primitives.Performance 98.91 % 0.00 % 1.09 % 0.00 %
Microsoft.Extensions.Primitives 94.93 % 0.97 % 4.11 % 0.00 %
PerfLabTests 52.86 % 21.41 % 25.73 % 0.00 %
PerfLabTests.CastingPerf2 56.67 % 14.44 % 28.89 % 0.00 %
SciMark2 60.00 % 3.33 % 36.67 % 0.00 %
SIMD 87.50 % 1.39 % 11.11 % 0.00 %
Span 69.00 % 3.17 % 27.83 % 0.00 %
StoreBlock 99.31 % 0.00 % 0.69 % 0.00 %
System.Buffers.Binary.Tests 80.21 % 3.12 % 16.67 % 0.00 %
System.Buffers.Tests 64.77 % 4.54 % 30.70 % 0.00 %
System.Buffers.Text.Tests 88.44 % 0.71 % 10.85 % 0.00 %
System.Collections 60.76 % 13.12 % 26.12 % 0.00 %
System.Collections.Concurrent 89.26 % 4.62 % 6.12 % 0.00 %
System.Collections.Tests 72.99 % 5.60 % 21.41 % 0.00 %
System.ComponentModel.Tests 64.03 % 15.42 % 20.55 % 0.00 %
System.ConsoleTests 78.99 % 10.87 % 10.14 % 0.00 %
System.Diagnostics 65.22 % 13.04 % 21.74 % 0.00 %
System.Diagnostics.Tracing 76.67 % 15.00 % 8.33 % 0.00 %
System.Formats.Cbor.Tests 70.23 % 13.71 % 16.05 % 0.00 %
System.Globalization.Tests 83.23 % 3.00 % 13.77 % 0.00 %
System 77.27 % 3.59 % 19.14 % 0.00 %
System.IO.Compression 86.96 % 3.50 % 9.54 % 0.00 %
System.IO.MemoryMappedFiles.Tests 24.63 % 4.41 % 70.96 % 0.00 %
System.IO.Pipelines.Tests 82.61 % 7.61 % 9.78 % 0.00 %
System.IO.Pipes.Tests 61.59 % 16.67 % 21.74 % 0.00 %
System.IO.Tests 57.05 % 11.32 % 31.63 % 0.00 %
System.Linq.Tests 62.25 % 14.03 % 23.72 % 0.00 %
System.MathBenchmarks 85.42 % 4.30 % 10.28 % 0.00 %
System.Memory 93.81 % 1.51 % 4.69 % 0.00 %
System.Net.Http.Tests 52.17 % 19.75 % 28.08 % 0.00 %
System.Net.NetworkInformation.Tests 70.65 % 11.96 % 17.39 % 0.00 %
System.Net.Primitives.Tests 87.75 % 6.52 % 5.73 % 0.00 %
System.Net.Security.Tests 77.33 % 8.72 % 13.95 % 0.00 %
System.Net.Sockets.Tests 62.16 % 14.41 % 23.42 % 0.00 %
System.Net.Tests 75.36 % 11.59 % 13.04 % 0.00 %
System.Net.WebSockets.Tests 58.70 % 17.39 % 23.91 % 0.00 %
System.Numerics.Tests 93.11 % 1.78 % 5.11 % 0.00 %
System.Reflection 61.11 % 21.53 % 17.36 % 0.00 %
System.Runtime.InteropServices.Tests 95.65 % 0.00 % 4.35 % 0.00 %
System.Runtime.Serialization.Formatters.Tests 78.26 % 13.04 % 8.70 % 0.00 %
System.Security.Cryptography.Primitives.Tests.Performance 69.57 % 15.76 % 14.67 % 0.00 %
System.Security.Cryptography.Tests 68.60 % 27.05 % 4.35 % 0.00 %
System.Security.Cryptography.X509Certificates.Tests 75.00 % 20.59 % 4.41 % 0.00 %
System.Tests 84.51 % 5.84 % 9.65 % 0.00 %
System.Text.Encodings.Web.Tests 87.32 % 2.54 % 10.14 % 0.00 %
System.Text.Json.Document.Tests 72.87 % 8.09 % 19.04 % 0.00 %
System.Text.Json.Reader.Tests 60.87 % 18.48 % 20.65 % 0.00 %
System.Text.Json.Serialization.Tests 63.90 % 12.63 % 23.47 % 0.00 %
System.Text.Json.Tests 77.86 % 5.70 % 16.45 % 0.00 %
System.Text 83.89 % 7.50 % 8.61 % 0.00 %
System.Text.RegularExpressions.Tests 17.62 % 12.90 % 68.59 % 0.89 %
System.Text.Tests 72.32 % 10.11 % 17.57 % 0.00 %
System.Threading.Channels.Tests 73.19 % 6.16 % 20.65 % 0.00 %
System.Threading.Tasks.Tests 46.38 % 18.84 % 34.78 % 0.00 %
System.Threading.Tasks 90.06 % 3.11 % 6.83 % 0.00 %
System.Threading.Tests 86.55 % 5.76 % 7.69 % 0.00 %
System.Xml.Linq 83.52 % 4.58 % 11.90 % 0.00 %
System.Xml.Tests 73.33 % 13.33 % 13.33 % 0.00 %
V8.Crypto 79.17 % 8.33 % 12.50 % 0.00 %
V8.Richards 79.17 % 8.33 % 12.50 % 0.00 %
XmlDocumentTests.XmlDocumentTests 71.01 % 18.84 % 10.14 % 0.00 %
XmlDocumentTests.XmlNodeListTests 78.26 % 6.52 % 15.22 % 0.00 %
XmlDocumentTests.XmlNodeTests 100.00 % 0.00 % 0.00 % 0.00 %
System.Drawing.Tests 77.08 % 4.58 % 18.33 % 0.00 %
HardwareIntrinsics.RayTracer 70.00 % 15.00 % 15.00 % 0.00 %

Statistical Test threshold: 10%, the noise filter: 100 ns

Statistics

Total: 102270
Same: 86.34 %
Slower: 3.41 %
Faster: 10.21 %
Unknown: 0.04 %

Statistics per Architecture

Architecture Same Slower Faster Unknown
Arm64 87.15 % 1.78 % 11.01 % 0.06 %
Arm 88.19 % 2.99 % 8.72 % 0.09 %
X64 85.15 % 3.74 % 11.07 % 0.04 %
X86 90.78 % 3.48 % 5.71 % 0.02 %

Statistics per Operating System

Operating System Same Slower Faster Unknown
macOS Monterey 12.2.1 81.13 % 9.24 % 9.57 % 0.06 %
Windows 10 90.20 % 2.75 % 7.01 % 0.04 %
Windows 11 83.35 % 2.56 % 14.07 % 0.02 %
ubuntu 18.04 84.99 % 2.37 % 12.58 % 0.07 %
ubuntu 20.04 89.31 % 2.08 % 8.56 % 0.05 %
macOS Big Sur 11.6.3 85.57 % 2.59 % 11.79 % 0.05 %
pop 20.04 89.48 % 3.58 % 6.94 % 0.00 %
alpine 3.13 91.08 % 1.92 % 6.94 % 0.07 %
debian 11 90.85 % 1.80 % 7.30 % 0.05 %

Statistics per Namespace

Namespace Same Slower Faster Unknown
BenchmarksGame 74.86 % 7.87 % 17.27 % 0.00 %
Benchstone.BenchF 75.42 % 1.46 % 23.13 % 0.00 %
Benchstone.BenchI 70.66 % 3.47 % 25.87 % 0.00 %
Benchstone.MDBenchF 89.17 % 0.83 % 10.00 % 0.00 %
Benchstone.MDBenchI 70.00 % 2.08 % 27.92 % 0.00 %
Devirtualization 100.00 % 0.00 % 0.00 % 0.00 %
Exceptions 88.66 % 4.40 % 6.94 % 0.00 %
FractalPerf 91.67 % 0.00 % 8.33 % 0.00 %
GuardedDevirtualization 100.00 % 0.00 % 0.00 % 0.00 %
Inlining 100.00 % 0.00 % 0.00 % 0.00 %
Interop 88.89 % 0.00 % 11.11 % 0.00 %
JetStream 50.00 % 0.00 % 50.00 % 0.00 %
Layout 95.83 % 0.00 % 4.17 % 0.00 %
Lowering 100.00 % 0.00 % 0.00 % 0.00 %
MicroBenchmarks.Serializers 81.19 % 7.38 % 11.43 % 0.00 %
Microsoft.AspNetCore.Server.Kestrel.Performance 79.35 % 7.07 % 13.59 % 0.00 %
Microsoft.Extensions.Caching.Memory.Tests 69.17 % 5.93 % 24.90 % 0.00 %
Microsoft.Extensions.Configuration.Xml 90.00 % 8.33 % 1.67 % 0.00 %
Microsoft.Extensions.DependencyInjection 77.14 % 18.23 % 4.63 % 0.00 %
Microsoft.Extensions.Logging 94.16 % 0.99 % 4.84 % 0.00 %
Microsoft.Extensions.Primitives.Performance 100.00 % 0.00 % 0.00 % 0.00 %
Microsoft.Extensions.Primitives 100.00 % 0.00 % 0.00 % 0.00 %
PerfLabTests 67.60 % 14.58 % 17.81 % 0.00 %
PerfLabTests.CastingPerf2 75.56 % 7.78 % 16.67 % 0.00 %
SciMark2 70.83 % 1.67 % 27.50 % 0.00 %
SIMD 89.81 % 0.00 % 10.19 % 0.00 %
Span 83.50 % 0.67 % 15.83 % 0.00 %
StoreBlock 100.00 % 0.00 % 0.00 % 0.00 %
System.Buffers.Binary.Tests 87.50 % 0.52 % 11.98 % 0.00 %
System.Buffers.Tests 73.69 % 2.77 % 23.54 % 0.00 %
System.Buffers.Text.Tests 95.03 % 0.06 % 4.91 % 0.00 %
System.Collections 80.76 % 7.13 % 12.11 % 0.00 %
System.Collections.Concurrent 94.57 % 2.66 % 2.77 % 0.00 %
System.Collections.Tests 88.62 % 1.64 % 9.73 % 0.00 %
System.ComponentModel.Tests 95.65 % 0.00 % 4.35 % 0.00 %
System.ConsoleTests 89.13 % 4.35 % 6.52 % 0.00 %
System.Diagnostics 82.17 % 5.00 % 12.83 % 0.00 %
System.Diagnostics.Tracing 96.67 % 3.33 % 0.00 % 0.00 %
System.Formats.Cbor.Tests 84.28 % 8.36 % 7.36 % 0.00 %
System.Globalization.Tests 94.47 % 0.54 % 4.98 % 0.00 %
System 90.67 % 1.44 % 7.89 % 0.00 %
System.IO.Compression 92.33 % 0.79 % 6.88 % 0.00 %
System.IO.MemoryMappedFiles.Tests 33.82 % 2.94 % 63.24 % 0.00 %
System.IO.Pipelines.Tests 91.30 % 3.26 % 5.43 % 0.00 %
System.IO.Pipes.Tests 76.09 % 7.25 % 16.67 % 0.00 %
System.IO.Tests 72.68 % 6.44 % 20.87 % 0.00 %
System.Linq.Tests 89.80 % 3.66 % 6.54 % 0.00 %
System.MathBenchmarks 89.65 % 1.28 % 9.07 % 0.00 %
System.Memory 98.61 % 0.39 % 1.01 % 0.00 %
System.Net.Http.Tests 64.86 % 13.41 % 21.74 % 0.00 %
System.Net.NetworkInformation.Tests 84.78 % 6.52 % 8.70 % 0.00 %
System.Net.Primitives.Tests 98.81 % 0.59 % 0.59 % 0.00 %
System.Net.Security.Tests 90.99 % 3.78 % 5.23 % 0.00 %
System.Net.Sockets.Tests 77.48 % 6.31 % 16.22 % 0.00 %
System.Net.Tests 89.13 % 5.07 % 5.80 % 0.00 %
System.Net.WebSockets.Tests 76.09 % 6.52 % 17.39 % 0.00 %
System.Numerics.Tests 97.00 % 0.46 % 2.54 % 0.00 %
System.Reflection 88.33 % 4.31 % 7.36 % 0.00 %
System.Runtime.InteropServices.Tests 100.00 % 0.00 % 0.00 % 0.00 %
System.Runtime.Serialization.Formatters.Tests 95.65 % 0.00 % 4.35 % 0.00 %
System.Security.Cryptography.Primitives.Tests.Performance 99.46 % 0.00 % 0.54 % 0.00 %
System.Security.Cryptography.Tests 82.13 % 14.98 % 2.90 % 0.00 %
System.Security.Cryptography.X509Certificates.Tests 88.24 % 8.82 % 2.94 % 0.00 %
System.Tests 96.55 % 1.24 % 2.21 % 0.00 %
System.Text.Encodings.Web.Tests 100.00 % 0.00 % 0.00 % 0.00 %
System.Text.Json.Document.Tests 88.09 % 1.83 % 10.09 % 0.00 %
System.Text.Json.Reader.Tests 92.39 % 4.35 % 3.26 % 0.00 %
System.Text.Json.Serialization.Tests 85.52 % 5.31 % 9.18 % 0.00 %
System.Text.Json.Tests 90.67 % 1.46 % 7.86 % 0.00 %
System.Text 91.39 % 4.17 % 4.44 % 0.00 %
System.Text.RegularExpressions.Tests 36.88 % 8.47 % 53.75 % 0.89 %
System.Text.Tests 92.03 % 3.98 % 3.98 % 0.00 %
System.Threading.Channels.Tests 84.06 % 3.99 % 11.96 % 0.00 %
System.Threading.Tasks.Tests 57.97 % 10.14 % 31.88 % 0.00 %
System.Threading.Tasks 96.58 % 0.31 % 3.11 % 0.00 %
System.Threading.Tests 96.52 % 1.92 % 1.56 % 0.00 %
System.Xml.Linq 98.63 % 0.46 % 0.92 % 0.00 %
System.Xml.Tests 89.33 % 10.67 % 0.00 % 0.00 %
V8.Crypto 100.00 % 0.00 % 0.00 % 0.00 %
V8.Richards 95.83 % 0.00 % 4.17 % 0.00 %
XmlDocumentTests.XmlDocumentTests 88.41 % 8.70 % 2.90 % 0.00 %
XmlDocumentTests.XmlNodeListTests 97.83 % 2.17 % 0.00 % 0.00 %
XmlDocumentTests.XmlNodeTests 100.00 % 0.00 % 0.00 % 0.00 %
System.Drawing.Tests 84.58 % 1.67 % 13.75 % 0.00 %
HardwareIntrinsics.RayTracer 85.00 % 10.00 % 5.00 % 0.00 %

@danmoseley
Copy link
Member

@adamsitnik is it possible to identify areas where Arm64 is disproportionately slower than x64? Eg. ,taking x64 machine A and Arm64 machine B, 95% of the benchmarks are no more than 30% slower on B, but 1% are grossly slower.

Not suggesting you launch some time consuming analysis, just thinking aloud whether there's some way to detect any Arm64 perf traps that we aren't aware of, so we could take a look at improving them.

@EgorBo
Copy link
Member

EgorBo commented Mar 21, 2022

Thanks, Adam!

@adamsitnik is it possible to identify areas where Arm64 is disproportionately slower than x64? Eg. ,taking x64 machine A and Arm64 machine B, 95% of the benchmarks are no more than 30% slower on B, but 1% are grossly slower.

Not suggesting you launch some time consuming analysis, just thinking aloud whether there's some way to detect any Arm64 perf traps that we aren't aware of, so we could take a look at improving them.

That is a good idea! However, we need to find a comparable hw first I'd guess. A possible solution is to run benchmarks on M1 Native (arm64) vs M1 Rosetta (x86) and compare. I did a quick run myself in the past and was surprised to see quite a few cases where x86 emulation was faster than the native (most of them were GC-intensive): #60616 (comment) but I didn't run the full suite

@danmoseley
Copy link
Member

something like

| Slower                                                                           | diff/base | Base Median (ns) | Diff Median (ns) | Modality|
| -------------------------------------------------------------------------------- | ---------:| ----------------:| ----------------:| -------- |
| System.Globalization.Tests.Perf_DateTimeCultureInfo.Parse(culturestring: ja)     |      6.59 |           300.53 |          1979.50 |      

is the kind of thing I'm looking for.

wrt comparable hardware, I was wondering whether just using a naive ratio with x64 might at least show something. You're probably right that Rosetta is a better way. I'm still waiting on my M1 hardware ...

@adamsitnik
Copy link
Member Author

Nice work @adamsitnik (and thanks @jeffhandley for big script improvements)

thanks!

From the table above, we could use more coverage on Windows 7/8

I have Win 7 and 8 machines, but they are 10+ years old and the results are noisy. Unless someone can provide stable Win 7 & 8 results, I think it's OK to not include them in the Preview runs and just run them for RTM sign off.

AMD hardware

Definitely! In the Preview 3 email we are going to make it more obvious that it's a call for action and hopefully get more AMD results. (cc @jeffhandley)

Linux Arm64 and Arm32

Linux Arm64 should be our top priority.

and perhaps devices (?).

I know that it's possible to run benchmarks on Android and iOS, but I don't know who owns machines that could be used. We should discuss this offline.

Do you think we are far from the point where it would be feasible to ask community members to submit results as well? The collection is pretty well scripted now, but perhaps the analysis side does not scale well yet?

The only problem right now is data privacy. The results contain benchmark results, OS version and CPU information. No user name, no machine name etc. We could either do the paper work and get it approved or... ask the users to run the results, don't upload them and use ResultsComparer to analyze the results and report the regressions they discover as bugs. @danmoseley thoughts?

@adamsitnik
Copy link
Member Author

And while the table in your issue states there is M1 Max I don't see it in the reports

@EgorBo please excuse me, I have provided a link to the Preview1 report. Updated link: https://github.com/adamsitnik/performance/blob/compareRuntimes/src/tools/ResultsComparer/net60_vs_net70p2_10p_2ns.md

@EgorBo
Copy link
Member

EgorBo commented Mar 21, 2022

And while the table in your issue states there is M1 Max I don't see it in the reports

@EgorBo please excuse me, I have provided a link to the Preview1 report. Updated link: https://github.com/adamsitnik/performance/blob/compareRuntimes/src/tools/ResultsComparer/net60_vs_net70p2_10p_2ns.md

Ah, now I see Apple M1, nice! Looks like it benefited a lot from #64576

@danmoseley
Copy link
Member

The only problem right now is data privacy. The results contain benchmark results, OS version and CPU information. No user name, no machine name etc. We could either do the paper work and get it approved or... ask the users to run the results, don't upload them and use ResultsComparer to analyze the results and report the regressions they discover as bugs. @danmoseley thoughts?

If there's no PII it should be fine to accept results, of course we would check. But perhaps if we do expand this it would be best to start with just as you suggest providing the script and results comparer instructions? Might be clearest to have a single issue where people post them. That way we can track what configurations were covered that didn't have regressions, also, and see patterns.

@EgorBo
Copy link
Member

EgorBo commented Mar 26, 2022

image

wonder if we can do anything with it, I've reproduced that locally and confirmed that it's just a slow libc getcwd.

Sign up for free to subscribe to this conversation on GitHub. Already have an account? Sign in.
Labels
area-Meta tenet-performance Performance related issue tracking This issue is tracking the completion of other related issues.
Projects
None yet
Development

No branches or pull requests

8 participants