Replies: 4 comments 13 replies
|
The current benchmark cannot isolate a .NET 10 runtime regression because Split them into comparable benchmarks: run [MemoryDiagnoser]
[DisassemblyDiagnoser]
public class HexBenchmarks { /* same API per runtime */ }That will separate allocation changes from decoder/codegen changes and show whether the long-input slowdown is in |
|
This revised benchmark is now comparable for One remaining correction: Convert.FromHexString(hexString, tmp, out _, out _);That separates the decoder regression from allocation and |
|
The regression comes from dotnet/runtime#117965, which changed the decoder's generic ASCII check from dotnet/runtime#130086 already resolved this for .NET 11 and could be considered for backport to .NET 10 CC. @JulieLeeMSFT for if that would meet the bar |
|
For the sake of completeness, I measured even .NET 11 and my results are:
This is to demonstrate that the regression for .NET 10 is non-trivial (50%+, and even 200%+). .NET 11 gives nice improvements. |
Uh oh!
There was an error while loading. Please reload this page.
Disclaimer: This is extracted from this PR: MetacoSA/NBitcoin#1333 (comment)
I basically measure this method execution times when executed using .NET 8 and .NET 10:
I created a small repro project
hex-project.zip
that can be benchmarked using:
I get this result on a Windows 11 machine:
You can notice that many
DecodeData*benchmarks are slower on .NET 10 than on .NET 8. However, notablyEncodeDatais faster on .NET 101I wonder if I did something wrong or if there is really a performance regression somewhere.
Thank you!
Footnotes
I use the latest released .NET 10 build. ↩
All reactions