-
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 -47%] PerfLabTests.BlockCopyPerf.CallBlockCopy #37808
Comments
I couldn't figure out the best area label to add to this issue. Please help me learn by adding exactly one area label. |
From @adamsitnik Looks like a very simple regression. I would expect the This needs an investigation. We should also consider removing this test case - I am not sure if testing |
Both |
|
We can start from Buffer.MemoryCopy(srcPtr, dstPtr, 8, 8); to *(long*)dstPtr = *(long*)strPtr
// or several (unrolled) lines |
I would focus on Span.CopyTo/TryCopyTo and tell everybody to use that if they want this sort of optimizations. |
Tagging subscribers to this area: @tannergooding |
I agree with this. It's useful as a unit test to make sure we don't error out, but as a perf test I don't think it's all that useful. I'd expect the vast majority use case to pass non-0 arguments to this method. And per Jan's earlier comment, we should really be encouraging use of strongly-typed APIs for optimal throughput. Closing as won't fix. If this ends up being a problem please reopen. |
Run Information
Regressions in PerfLabTests.BlockCopyPerf
Related Issue on x64 Windows[Perf -43%] PerfLabTests.BlockCopyPerf.CallBlockCopy Related Issue on x86 Windows[Perf -74%] PerfLabTests.BlockCopyPerf.CallBlockCopy
Reprogit clone https://github.com/dotnet/performance.git
py .\performance\scripts\benchmarks_ci.py -f netcoreapp5.0 --filter 'PerfLabTests.BlockCopyPerf*'; HistogramPerfLabTests.BlockCopyPerf.CallBlockCopy(numElements: 0)
PerfLabTests.BlockCopyPerf.CallBlockCopy(numElements: 1000)
DocsProfiling workflow for dotnet/runtime repository |
Reopening this because on Ubuntu x64 we are seeing regressions in the 1000 element case. |
I've sent a PR to remove the |
We know that BlockCopy is bimodal, but I currently don't have enough data to close the issue. I am going to update it later this week when I get reports from others PerfLabTests.BlockCopyPerf.CallBlockCopy(numElements: 1000)
PerfLabTests.BlockCopyPerf.CallBlockCopy(numElements: 100)
PerfLabTests.BlockCopyPerf.CallBlockCopy(numElements: 10)
|
Based on the full historical data we can assume that this benchmark is simply unstable: Closing. |
Run Information
Regressions in PerfLabTests.BlockCopyPerf
Historical Data in Reporting System
Repro
Histogram
PerfLabTests.BlockCopyPerf.CallBlockCopy(numElements: 0)
Docs
Profiling workflow for dotnet/runtime repository
Benchmarking workflow for dotnet/runtime repository
The text was updated successfully, but these errors were encountered: