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

Regressions in System.Collections.Tests.Perf_PriorityQueue<Int32, Int32> #50052

Closed
DrewScoggins opened this issue Mar 22, 2021 · 4 comments
Closed
Assignees
Milestone

Comments

@DrewScoggins
Copy link
Member

Run Information

Architecture x64
OS Windows 10.0.18362
Baseline 5d6c8aa343bcd62cfb2f2a4b2364e39623ebf34d
Compare 04ff9bd1c1cdd0046af652c74821e73668207cac

Regressions in System.Collections.Tests.Perf_PriorityQueue<Int32, Int32>

Benchmark Baseline Test Test/Base Baseline IR Compare IR IR Ratio Baseline ETL Compare ETL
HeapSort 3.07 μs 3.22 μs 1.05

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.Collections.Tests.Perf_PriorityQueue&lt;Int32, Int32&gt;*'

.

Payloads

Baseline
Compare

Histogram

System.Collections.Tests.Perf_PriorityQueue<Int32, Int32>.HeapSort(Size: 100)

[3039.342 ; 3151.722) | @@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
[3151.722 ; 3249.705) | @@@@@
[3249.705 ; 3380.575) | 
[3380.575 ; 3558.514) | @@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
[3558.514 ; 3638.772) | @@@@@

Docs

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

@dotnet-issue-labeler dotnet-issue-labeler bot added area-System.Collections untriaged New issue has not been triaged by the area owner labels Mar 22, 2021
@ghost
Copy link

ghost commented Mar 22, 2021

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

Issue Details

Run Information

Architecture x64
OS Windows 10.0.18362
Baseline 5d6c8aa343bcd62cfb2f2a4b2364e39623ebf34d
Compare 04ff9bd1c1cdd0046af652c74821e73668207cac

Regressions in System.Collections.Tests.Perf_PriorityQueue<Int32, Int32>

Benchmark Baseline Test Test/Base Baseline IR Compare IR IR Ratio Baseline ETL Compare ETL
HeapSort 3.07 μs 3.22 μs 1.05

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.Collections.Tests.Perf_PriorityQueue&lt;Int32, Int32&gt;*'

.

Payloads

Baseline
Compare

Histogram

System.Collections.Tests.Perf_PriorityQueue<Int32, Int32>.HeapSort(Size: 100)

[3039.342 ; 3151.722) | @@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
[3151.722 ; 3249.705) | @@@@@
[3249.705 ; 3380.575) | 
[3380.575 ; 3558.514) | @@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
[3558.514 ; 3638.772) | @@@@@

Docs

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

Author: DrewScoggins
Assignees: -
Labels:

area-System.Collections, untriaged

Milestone: -

@DrewScoggins
Copy link
Member Author

Seems related to #48539

@DrewScoggins DrewScoggins added arch-x64 os-windows tenet-performance Performance related issue tenet-performance-benchmarks Issue from performance benchmark labels Mar 22, 2021
@eiriktsarpalis eiriktsarpalis self-assigned this Mar 22, 2021
@eiriktsarpalis
Copy link
Member

Interesting. I could not reproduce the regression locally, if anything the compare commit performed better on my machine:

baseline: 5d6c8aa

Method Size Mean Error StdDev Median Min Max Gen 0 Gen 1 Gen 2 Allocated
HeapSort 10 203.3 ns 11.25 ns 12.96 ns 204.0 ns 167.8 ns 227.5 ns 0.0096 - - 104 B
HeapSort 100 3,074.7 ns 279.93 ns 322.36 ns 3,128.8 ns 2,631.7 ns 3,611.9 ns 0.0805 - - 824 B
HeapSort 1000 87,159.9 ns 4,426.74 ns 5,097.84 ns 86,941.3 ns 80,013.2 ns 98,113.3 ns 0.5656 - - 8,024 B

compare: 04ff9bd

Method Size Mean Error StdDev Median Min Max Gen 0 Gen 1 Gen 2 Allocated
HeapSort 10 188.2 ns 6.49 ns 7.22 ns 185.6 ns 179.0 ns 202.8 ns 0.0101 - - 104 B
HeapSort 100 2,859.8 ns 73.87 ns 85.07 ns 2,894.7 ns 2,684.3 ns 3,000.9 ns 0.0780 - - 824 B
HeapSort 1000 78,737.3 ns 1,775.20 ns 2,044.32 ns 79,492.3 ns 74,640.1 ns 81,288.0 ns 0.5841 - - 8,024 B

That being said, when re-auditing #48539 I noticed a performance bug in the EnqueueRange method that predates that particular change. I'll follow up with a PR that addresses it.

@eiriktsarpalis eiriktsarpalis added this to the 6.0.0 milestone Mar 23, 2021
@eiriktsarpalis eiriktsarpalis removed the untriaged New issue has not been triaged by the area owner label Mar 28, 2021
@eiriktsarpalis
Copy link
Member

Regression should be addressed by #50065.

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

No branches or pull requests

2 participants