Run Information
Regressions in System.IO.Tests.Perf_FileStream
Test Report
Repro
git clone https://github.com/dotnet/performance.git
python3 .\performance\scripts\benchmarks_ci.py -f net6.0 --filter 'System.IO.Tests.Perf_FileStream*'
Payloads
Baseline
Compare
Histogram
System.IO.Tests.Perf_FileStream.Write_NoBuffering_PreallocationSize(fileSize: 104857600, userBufferSize: 16384, options: None)
Docs
Profiling workflow for dotnet/runtime repository
Benchmarking workflow for dotnet/runtime repository
### Run Information
Regressions in System.Text.Json.Tests.Perf_Booleans
Test Report
Repro
git clone https://github.com/dotnet/performance.git
python3 .\performance\scripts\benchmarks_ci.py -f net6.0 --filter 'System.Text.Json.Tests.Perf_Booleans*'
Payloads
Baseline
Compare
Histogram
System.Text.Json.Tests.Perf_Booleans.WriteBooleans(Formatted: False, SkipValidation: True)
Docs
Profiling workflow for dotnet/runtime repository
Benchmarking workflow for dotnet/runtime repository
We had an offline discussion where we all agreed that currently the best thing we can do is to accept the regression as by design and keep the current implementation.
preallocationSize
is a hint, that does not modify EOF and is not a strong guarantee. Depending on the hardware, OS and File System, the gain of specifying it before writing to the file can be:With current design we don’t risk data loss. For users who want event better perf, they can additionally call
.SetLength
.We intend to update the docs and be very clear about it.
Thank you all for your input!
Thanks, Adam.