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

[Perf] Regressions in System.IO.Tests.Perf_FileStream #54570

Closed
DrewScoggins opened this issue Jun 22, 2021 · 3 comments
Closed

[Perf] Regressions in System.IO.Tests.Perf_FileStream #54570

DrewScoggins opened this issue Jun 22, 2021 · 3 comments
Labels

Comments

@DrewScoggins
Copy link
Member

Run Information

Architecture x64
OS Windows 10.0.18362
Baseline ec2712962d0117dfdca7738ae20f0ce3483eab67
Compare 3c4d419ffe074ab62ff25a75e4127dbe7c9ee2ab
Diff Diff

Regressions in System.IO.Tests.Perf_FileStream

Benchmark Baseline Test Test/Base Test Quality Baseline IR Compare IR IR Ratio Baseline ETL Compare ETL
SeekForward - Duration of single invocation 30.62 μs 32.28 μs 1.05 0.11
SeekBackward - Duration of single invocation 33.06 μs 37.85 μs 1.14 0.11

graph
graph
Historical Data in Reporting System

Repro

git clone https://github.com/dotnet/performance.git
py .\performance\scripts\benchmarks_ci.py -f netcoreapp5.0 --filter 'System.IO.Tests.Perf_FileStream*'

Payloads

Baseline
Compare

Histogram

System.IO.Tests.Perf_FileStream.SeekForward(fileSize: 1024, options: None)


System.IO.Tests.Perf_FileStream.SeekBackward(fileSize: 1024, options: None)


Docs

Profiling workflow for dotnet/runtime repository
Benchmarking workflow for dotnet/runtime repository

@DrewScoggins DrewScoggins added os-windows tenet-performance Performance related issue tenet-performance-benchmarks Issue from performance benchmark arch-x64 labels Jun 22, 2021
@dotnet-issue-labeler dotnet-issue-labeler bot added area-System.IO untriaged New issue has not been triaged by the area owner labels Jun 22, 2021
@ghost
Copy link

ghost commented Jun 22, 2021

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

Issue Details

Run Information

Architecture x64
OS Windows 10.0.18362
Baseline ec2712962d0117dfdca7738ae20f0ce3483eab67
Compare 3c4d419ffe074ab62ff25a75e4127dbe7c9ee2ab
Diff Diff

Regressions in System.IO.Tests.Perf_FileStream

Benchmark Baseline Test Test/Base Test Quality Baseline IR Compare IR IR Ratio Baseline ETL Compare ETL
SeekForward - Duration of single invocation 30.62 μs 32.28 μs 1.05 0.11
SeekBackward - Duration of single invocation 33.06 μs 37.85 μs 1.14 0.11

graph
graph
Historical Data in Reporting System

Repro

git clone https://github.com/dotnet/performance.git
py .\performance\scripts\benchmarks_ci.py -f netcoreapp5.0 --filter 'System.IO.Tests.Perf_FileStream*'

Payloads

Baseline
Compare

Histogram

System.IO.Tests.Perf_FileStream.SeekForward(fileSize: 1024, options: None)


System.IO.Tests.Perf_FileStream.SeekBackward(fileSize: 1024, options: None)


Docs

Profiling workflow for dotnet/runtime repository
Benchmarking workflow for dotnet/runtime repository

Author: DrewScoggins
Assignees: -
Labels:

arch-x64, area-System.IO, os-windows, tenet-performance, tenet-performance-benchmarks, untriaged

Milestone: -

@DrewScoggins
Copy link
Member Author

Seems likely related to #53669

@adamsitnik adamsitnik removed the untriaged New issue has not been triaged by the area owner label Jul 1, 2021
@adamsitnik
Copy link
Member

I've taken a look at the source code and the profiles and there is very little we can do about the current implementation (my current best idea would get rid of two virtual method invocations which is not a lot).

Since overall this benchmark is more than 20 times faster than .NET 5 and this method (FileStream.Seek) should never be on a hot path, I believe that it's OK to accept this regression.

image

@ghost ghost locked as resolved and limited conversation to collaborators Jul 31, 2021
Sign up for free to subscribe to this conversation on GitHub. Already have an account? Sign in.
Labels
Projects
None yet
Development

No branches or pull requests

2 participants