-
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
[Perf] Regression in Perf_FileStream #49156
Comments
I couldn't figure out the best area label to add to this issue. If you have write-permissions please help me learn by adding exactly one area label. |
Probably related to #47128 |
cc: @adamsitnik |
We are also seeing some wins from this change in BinaryWriter. Run Information
Improvemnts in System.IO.Tests.BinaryWriterTests
Reprogit clone https://github.com/dotnet/performance.git
python3 .\performance\scripts\benchmarks_ci.py -f netcoreapp5.0 --filter 'System.IO.Tests.BinaryWriterTests*' . PayloadsHistogramSystem.IO.Tests.BinaryWriterTests.WriteUInt32
System.IO.Tests.BinaryWriterTests.WriteUInt16
System.IO.Tests.BinaryWriterTests.WriteSingle
System.IO.Tests.BinaryWriterTests.WriteNonAsciiChar
System.IO.Tests.BinaryWriterTests.WriteUInt64
System.IO.Tests.BinaryWriterTests.WriteAsciiChar
System.IO.Tests.BinaryWriterTests.WriteDouble
DocsProfiling workflow for dotnet/runtime repository |
|
The virtual call sequence is the same on both. There might be some other sources of call overhead. For instance if you are just forwarding struct args, there might be some extra shuffling about on Linux as the jit may not smoothly handle the way the Linux ABI requires structs to be passed in registers. Would be good to look at some of the actual codegen. |
Overall we were able to solve most of the regressions and even turn most of them into improvements.
|
Run Information
Regressions in System.IO.Tests.Perf_FileStream
Historical Data in Reporting System
Repro
.
Payloads
Baseline
Compare
Histogram
System.IO.Tests.Perf_FileStream.ReadByte(fileSize: 1024, options: None)
System.IO.Tests.Perf_FileStream.ReadAsync(fileSize: 1024, userBufferSize: 512, options: None)
System.IO.Tests.Perf_FileStream.OpenClose(fileSize: 1024, options: None)
System.IO.Tests.Perf_FileStream.Read(fileSize: 1024, userBufferSize: 512, options: None)
System.IO.Tests.Perf_FileStream.ReadAsync(fileSize: 1024, userBufferSize: 4096, options: None)
System.IO.Tests.Perf_FileStream.ReadAsync(fileSize: 1024, userBufferSize: 512, options: Asynchronous)
System.IO.Tests.Perf_FileStream.ReadByte(fileSize: 1024, options: Asynchronous)
Docs
Profiling workflow for dotnet/runtime repository
Benchmarking workflow for dotnet/runtime repository
The text was updated successfully, but these errors were encountered: