-
Notifications
You must be signed in to change notification settings - Fork 4.7k
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 regression in string handling / culture ICU #58029
Comments
Tagging subscribers to this area: @GrabYourPitchforks, @dotnet/area-system-memory Issue DetailsRun Information
Regressions in System.Tests.Perf_String
Reprogit clone https://github.com/dotnet/performance.git
py .\performance\scripts\benchmarks_ci.py -f net6.0 --filter 'System.Tests.Perf_String*' PayloadsHistogramSystem.Tests.Perf_String.ToLowerInvariant(s: "This is a much longer piece of text that might benefit more from vectorization.")
System.Tests.Perf_String.ToUpperInvariant(s: "TeSt")
System.Tests.Perf_String.ToUpperInvariant(s: "test")
System.Tests.Perf_String.IndexerCheckPathLength
System.Tests.Perf_String.Replace_Char(text: "Hello", oldChar: 'a', newChar: 'b')
System.Tests.Perf_String.Remove_IntInt(s: "dzsdzsDDZSDZSDZSddsz", i1: 0, i2: 8)
DocsProfiling workflow for dotnet/runtime repository
Regressions in System.Formats.Cbor.Tests.Perf_CborReader
Reprogit clone https://github.com/dotnet/performance.git
py .\performance\scripts\benchmarks_ci.py -f net6.0 --filter 'System.Formats.Cbor.Tests.Perf_CborReader*' PayloadsHistogramSystem.Formats.Cbor.Tests.Perf_CborReader.SkipValue(encoding: (Text String, Strict))
System.Formats.Cbor.Tests.Perf_CborReader.SkipValue(encoding: (Byte String, Strict))
DocsProfiling workflow for dotnet/runtime repository Run Information
Regressions in System.Memory.ReadOnlySpan
Reprogit clone https://github.com/dotnet/performance.git
py .\performance\scripts\benchmarks_ci.py -f net6.0 --filter 'System.Memory.ReadOnlySpan*' PayloadsHistogramSystem.Memory.ReadOnlySpan.IndexOfString(input: "だ", value: "た", comparisonType: InvariantCulture)
System.Memory.ReadOnlySpan.IndexOfString(input: "More Test's", value: "Tests", comparisonType: OrdinalIgnoreCase)
System.Memory.ReadOnlySpan.Trim(input: " abcdefg ")
System.Memory.ReadOnlySpan.IndexOfString(input: "だだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだxだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだ", value: "x", comparisonType: Ordinal)
System.Memory.ReadOnlySpan.IndexOfString(input: "StrIng", value: "string", comparisonType: OrdinalIgnoreCase)
System.Memory.ReadOnlySpan.IndexOfString(input: "AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAXAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA", value: "X", comparisonType: Ordinal)
DocsProfiling workflow for dotnet/runtime repository Run Information
Regressions in System.Collections.ContainsFalse<String>
Reprogit clone https://github.com/dotnet/performance.git
py .\performance\scripts\benchmarks_ci.py -f net6.0 --filter 'System.Collections.ContainsFalse<String>*' PayloadsHistogramSystem.Collections.ContainsFalse<String>.ICollection(Size: 512)
DocsProfiling workflow for dotnet/runtime repository Run Information
Regressions in System.Tests.Perf_HashCode
Reprogit clone https://github.com/dotnet/performance.git
py .\performance\scripts\benchmarks_ci.py -f net6.0 --filter 'System.Tests.Perf_HashCode*' PayloadsHistogramSystem.Tests.Perf_HashCode.Add
DocsProfiling workflow for dotnet/runtime repository Run Information
Regressions in System.Collections.IterateForEachNonGeneric<Int32>
Reprogit clone https://github.com/dotnet/performance.git
py .\performance\scripts\benchmarks_ci.py -f net6.0 --filter 'System.Collections.IterateForEachNonGeneric<Int32>*' PayloadsHistogramSystem.Collections.IterateForEachNonGeneric<Int32>.ArrayList(Size: 512)
DocsProfiling workflow for dotnet/runtime repository
|
Tagging subscribers to this area: @tarekgh, @safern Issue DetailsRun Information
Regressions in System.Tests.Perf_String
Reprogit clone https://github.com/dotnet/performance.git
py .\performance\scripts\benchmarks_ci.py -f net6.0 --filter 'System.Tests.Perf_String*' PayloadsHistogramSystem.Tests.Perf_String.ToLowerInvariant(s: "This is a much longer piece of text that might benefit more from vectorization.")
System.Tests.Perf_String.ToUpperInvariant(s: "TeSt")
System.Tests.Perf_String.ToUpperInvariant(s: "test")
System.Tests.Perf_String.IndexerCheckPathLength
System.Tests.Perf_String.Replace_Char(text: "Hello", oldChar: 'a', newChar: 'b')
System.Tests.Perf_String.Remove_IntInt(s: "dzsdzsDDZSDZSDZSddsz", i1: 0, i2: 8)
DocsProfiling workflow for dotnet/runtime repository
Regressions in System.Formats.Cbor.Tests.Perf_CborReader
Reprogit clone https://github.com/dotnet/performance.git
py .\performance\scripts\benchmarks_ci.py -f net6.0 --filter 'System.Formats.Cbor.Tests.Perf_CborReader*' PayloadsHistogramSystem.Formats.Cbor.Tests.Perf_CborReader.SkipValue(encoding: (Text String, Strict))
System.Formats.Cbor.Tests.Perf_CborReader.SkipValue(encoding: (Byte String, Strict))
DocsProfiling workflow for dotnet/runtime repository Run Information
Regressions in System.Memory.ReadOnlySpan
Reprogit clone https://github.com/dotnet/performance.git
py .\performance\scripts\benchmarks_ci.py -f net6.0 --filter 'System.Memory.ReadOnlySpan*' PayloadsHistogramSystem.Memory.ReadOnlySpan.IndexOfString(input: "だ", value: "た", comparisonType: InvariantCulture)
System.Memory.ReadOnlySpan.IndexOfString(input: "More Test's", value: "Tests", comparisonType: OrdinalIgnoreCase)
System.Memory.ReadOnlySpan.Trim(input: " abcdefg ")
System.Memory.ReadOnlySpan.IndexOfString(input: "だだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだxだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだ", value: "x", comparisonType: Ordinal)
System.Memory.ReadOnlySpan.IndexOfString(input: "StrIng", value: "string", comparisonType: OrdinalIgnoreCase)
System.Memory.ReadOnlySpan.IndexOfString(input: "AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAXAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA", value: "X", comparisonType: Ordinal)
DocsProfiling workflow for dotnet/runtime repository Run Information
Regressions in System.Collections.ContainsFalse<String>
Reprogit clone https://github.com/dotnet/performance.git
py .\performance\scripts\benchmarks_ci.py -f net6.0 --filter 'System.Collections.ContainsFalse<String>*' PayloadsHistogramSystem.Collections.ContainsFalse<String>.ICollection(Size: 512)
DocsProfiling workflow for dotnet/runtime repository Run Information
Regressions in System.Tests.Perf_HashCode
Reprogit clone https://github.com/dotnet/performance.git
py .\performance\scripts\benchmarks_ci.py -f net6.0 --filter 'System.Tests.Perf_HashCode*' PayloadsHistogramSystem.Tests.Perf_HashCode.Add
DocsProfiling workflow for dotnet/runtime repository Run Information
Regressions in System.Collections.IterateForEachNonGeneric<Int32>
Reprogit clone https://github.com/dotnet/performance.git
py .\performance\scripts\benchmarks_ci.py -f net6.0 --filter 'System.Collections.IterateForEachNonGeneric<Int32>*' PayloadsHistogramSystem.Collections.IterateForEachNonGeneric<Int32>.ArrayList(Size: 512)
DocsProfiling workflow for dotnet/runtime repository
|
@adamsitnik - I agree that not all benchmarks listed here have regressed because of the changes, but there are some that clearly shows regression. I also realized few days back that we are not consistent in checking the test history on different xarch hardware: The spike on |
Pinging here to make sure that it doesn't get lost. |
Setting milestone just so it's on the radar in case there is something 6.0 here. Feel free to move if appropriate. |
@kunalspathak just to mention, Looking at 53cafdd...5d930bd I am not seeing any other change that can cause that. The only explanation is somehow such test include some culture creation path which add to the numbers here. @adamsitnik is it possible? |
Without #57754 Changes
With #57754 Changes
Diff
I am not seeing any significant regression caused by #57754. |
Looking at the recernt graph, it looks like we are back to the pre-regression value. I tried checking what might have caused the improvement and the changes 327b9c2...b1ae7b9 doesn't seem to have improved this benchmark. I am also surprise to see the 2 graphs of different benchmarks looking identical. At this point, I am not sure if this is a bimodal behavior, but I think it should be safe to close this issue. |
Oh we looked at the same thing together. Yes, I see nothing plausible in 327b9c2...b1ae7b9 I agree there is not clear evidence of a problem. Longer term we should investigate why it is bimodal -- isn't this just the kind of benchmark that can be alignment sensitive (code or data)? |
But why would it be consistent for a week, then consistently different for a week -- can you think of a reason? |
After looking at the benchmark code, this benchmark doesn't seem realistic at all. It has 16 back to back calls to
We do allocate long string to feed as input to the benchmark at https://github.com/dotnet/performance/blob/d7dac8a7ca12a28d099192f8a901cf8e30361384/src/benchmarks/micro/libraries/System.Memory/ReadOnlySpan.cs#L96. So data alignment could be one possibility, but I can't think of any other reason. Looking at the past history, that seems to be more obvious reason. |
Right, but how does data alignment stay consistent for a period of a week? Is it just new code being written, causing the GC to eg., start allocating a new block just before or just after (waving hands)? Just wasn't aware that could happen. @adamsitnik ? |
I don't believe it will be code alignment because if there was a sensitive loop, we would have aligned it already even though there was C# code change around that loop. Now, from the commit range, it doesn't look to be the case. For other cases, if there was a sensitive loop and we didn't align it because of heuristics, then that would be something to look at. |
Do we have sample code for allocating an aligned char[] ? Eg., something silly like keep allocating in a loop until it's aligned, newing up some tiny other thing in the loop? then we can try aligning it and see what happens https://github.com/dotnet/performance/blob/d7dac8a7ca12a28d099192f8a901cf8e30361384/src/benchmarks/micro/libraries/System.Memory/ReadOnlySpan.cs#L98 |
Not that I know of, but that's the whole point of memory randomization added in dotnet/BenchmarkDotNet#1587. It will allocate random memory that may or may not be aligned and we can then see how many buckets the measurements fall under to clearly tell if it is affected by data alignment. |
Is that randomization feature enabled in these runs? (should I see a hit on 'memoryRandomization' in the perf repo?) |
You should be able to run benchmark by passing |
Considering the latest shows, no regression, I am closing this issue. Feel free to continue the discussion and investigation. I spent some more time to synchronize to different commits but no luck at all. |
I've run these benchmarks with memory randomization enabled: git clone https://github.com/dotnet/performance.git performance
py .\performance\scripts\benchmarks_ci.py -f net6.0 --filter *IndexOfString --bdn-arguments "--memoryRandomization true --minIterationCount 100 --maxIterationCount 101 --outliers dontRemove" It seems that none of them has a flat distrubution. This is what I got on Windows x64 AMD machine: // * Detailed results *
ReadOnlySpan.IndexOfString: Job-NKYPYP(OutlierMode=DontRemove, PowerPlanMode=00000000-0000-0000-0000-000000000000, Arguments=/p:DebugType=portable,-bl:benchmarkdotnet.binlog, IterationTime=250.0000 ms, MaxIterationCount=101, MemoryRandomization=True, MinIterationCount=100, WarmupCount=1) [input=AAAAA5AAAA, value=5, comparisonType=InvariantCulture]
Runtime = .NET 6.0.0 (6.0.21.41701), X64 RyuJIT; GC = Concurrent Workstation
Mean = 35.055 ns, StdErr = 0.040 ns (0.11%), N = 100, StdDev = 0.401 ns
Min = 34.328 ns, Q1 = 34.885 ns, Median = 34.923 ns, Q3 = 35.190 ns, Max = 37.281 ns
IQR = 0.305 ns, LowerFence = 34.428 ns, UpperFence = 35.647 ns
ConfidenceInterval = [34.919 ns; 35.191 ns] (CI 99.9%), Margin = 0.136 ns (0.39% of Mean)
Skewness = 2.15, Kurtosis = 11.41, MValue = 2
-------------------- Histogram --------------------
[34.215 ns ; 35.330 ns) | @@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
[35.330 ns ; 36.275 ns) | @@@@@@@@@@@@@@@@@
[36.275 ns ; 37.395 ns) | @
---------------------------------------------------
ReadOnlySpan.IndexOfString: Job-NKYPYP(OutlierMode=DontRemove, PowerPlanMode=00000000-0000-0000-0000-000000000000, Arguments=/p:DebugType=portable,-bl:benchmarkdotnet.binlog, IterationTime=250.0000 ms, MaxIterationCount=101, MemoryRandomization=True, MinIterationCount=100, WarmupCount=1) [input=AAAAAAAAAAAA(...)AAAAAAAAAAAA [1000], value=X, comparisonType=Ordinal]
Runtime = .NET 6.0.0 (6.0.21.41701), X64 RyuJIT; GC = Concurrent Workstation
Mean = 23.627 ns, StdErr = 0.039 ns (0.16%), N = 100, StdDev = 0.387 ns
Min = 22.811 ns, Q1 = 23.375 ns, Median = 23.604 ns, Q3 = 23.813 ns, Max = 25.614 ns
IQR = 0.438 ns, LowerFence = 22.718 ns, UpperFence = 24.470 ns
ConfidenceInterval = [23.496 ns; 23.758 ns] (CI 99.9%), Margin = 0.131 ns (0.55% of Mean)
Skewness = 1.53, Kurtosis = 8.95, MValue = 2
-------------------- Histogram --------------------
[22.701 ns ; 23.191 ns) | @@@@@@@@@@
[23.191 ns ; 24.069 ns) | @@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
[24.069 ns ; 24.570 ns) | @@@@@
[24.570 ns ; 25.066 ns) | @
[25.066 ns ; 25.724 ns) | @
---------------------------------------------------
ReadOnlySpan.IndexOfString: Job-NKYPYP(OutlierMode=DontRemove, PowerPlanMode=00000000-0000-0000-0000-000000000000, Arguments=/p:DebugType=portable,-bl:benchmarkdotnet.binlog, IterationTime=250.0000 ms, MaxIterationCount=101, MemoryRandomization=True, MinIterationCount=100, WarmupCount=1) [input=AAAAAAAAAAAA(...)AAAAAAAAAAAA [100], value=x, comparisonType=InvariantCultureIgnoreCase]
Runtime = .NET 6.0.0 (6.0.21.41701), X64 RyuJIT; GC = Concurrent Workstation
Mean = 173.786 ns, StdErr = 0.610 ns (0.35%), N = 100, StdDev = 6.097 ns
Min = 168.731 ns, Q1 = 171.238 ns, Median = 172.594 ns, Q3 = 174.552 ns, Max = 215.606 ns
IQR = 3.314 ns, LowerFence = 166.268 ns, UpperFence = 179.522 ns
ConfidenceInterval = [171.718 ns; 175.854 ns] (CI 99.9%), Margin = 2.068 ns (1.19% of Mean)
Skewness = 4.78, Kurtosis = 29.71, MValue = 2
-------------------- Histogram --------------------
[167.006 ns ; 173.430 ns) | @@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
[173.430 ns ; 179.300 ns) | @@@@@@@@@@@@@@@@@@@@@@@@@@@@
[179.300 ns ; 185.330 ns) | @@
[185.330 ns ; 191.233 ns) | @
[191.233 ns ; 198.130 ns) |
[198.130 ns ; 203.073 ns) |
[203.073 ns ; 207.175 ns) | @
[207.175 ns ; 217.330 ns) | @
---------------------------------------------------
ReadOnlySpan.IndexOfString: Job-NKYPYP(OutlierMode=DontRemove, PowerPlanMode=00000000-0000-0000-0000-000000000000, Arguments=/p:DebugType=portable,-bl:benchmarkdotnet.binlog, IterationTime=250.0000 ms, MaxIterationCount=101, MemoryRandomization=True, MinIterationCount=100, WarmupCount=1) [input=AAAAAAAAAAAA(...)AAAAAAAAAAAA [100], value=x, comparisonType=OrdinalIgnoreCase]
Runtime = .NET 6.0.0 (6.0.21.41701), X64 RyuJIT; GC = Concurrent Workstation
Mean = 150.273 ns, StdErr = 0.243 ns (0.16%), N = 100, StdDev = 2.435 ns
Min = 146.616 ns, Q1 = 148.677 ns, Median = 150.080 ns, Q3 = 151.492 ns, Max = 162.180 ns
IQR = 2.816 ns, LowerFence = 144.454 ns, UpperFence = 155.716 ns
ConfidenceInterval = [149.447 ns; 151.098 ns] (CI 99.9%), Margin = 0.826 ns (0.55% of Mean)
Skewness = 1.34, Kurtosis = 7.24, MValue = 2
-------------------- Histogram --------------------
[145.928 ns ; 151.390 ns) | @@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
[151.390 ns ; 155.912 ns) | @@@@@@@@@@@@@@@@@@@@@@@@@@
[155.912 ns ; 162.869 ns) | @@
---------------------------------------------------
ReadOnlySpan.IndexOfString: Job-NKYPYP(OutlierMode=DontRemove, PowerPlanMode=00000000-0000-0000-0000-000000000000, Arguments=/p:DebugType=portable,-bl:benchmarkdotnet.binlog, IterationTime=250.0000 ms, MaxIterationCount=101, MemoryRandomization=True, MinIterationCount=100, WarmupCount=1) [input=ABCDE, value=c, comparisonType=InvariantCultureIgnoreCase]
Runtime = .NET 6.0.0 (6.0.21.41701), X64 RyuJIT; GC = Concurrent Workstation
Mean = 32.221 ns, StdErr = 0.056 ns (0.17%), N = 100, StdDev = 0.560 ns
Min = 31.250 ns, Q1 = 31.848 ns, Median = 32.156 ns, Q3 = 32.549 ns, Max = 35.375 ns
IQR = 0.701 ns, LowerFence = 30.796 ns, UpperFence = 33.601 ns
ConfidenceInterval = [32.031 ns; 32.411 ns] (CI 99.9%), Margin = 0.190 ns (0.59% of Mean)
Skewness = 1.92, Kurtosis = 11.39, MValue = 2
-------------------- Histogram --------------------
[31.092 ns ; 32.159 ns) | @@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
[32.159 ns ; 33.145 ns) | @@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
[33.145 ns ; 34.037 ns) | @@
[34.037 ns ; 35.533 ns) | @
---------------------------------------------------
ReadOnlySpan.IndexOfString: Job-NKYPYP(OutlierMode=DontRemove, PowerPlanMode=00000000-0000-0000-0000-000000000000, Arguments=/p:DebugType=portable,-bl:benchmarkdotnet.binlog, IterationTime=250.0000 ms, MaxIterationCount=101, MemoryRandomization=True, MinIterationCount=100, WarmupCount=1) [input=Hello Worldb(...)allylong!xyz [186], value=w, comparisonType=OrdinalIgnoreCase]
Runtime = .NET 6.0.0 (6.0.21.41701), X64 RyuJIT; GC = Concurrent Workstation
Mean = 20.566 ns, StdErr = 0.016 ns (0.08%), N = 100, StdDev = 0.157 ns
Min = 20.418 ns, Q1 = 20.497 ns, Median = 20.536 ns, Q3 = 20.572 ns, Max = 21.662 ns
IQR = 0.075 ns, LowerFence = 20.384 ns, UpperFence = 20.685 ns
ConfidenceInterval = [20.513 ns; 20.619 ns] (CI 99.9%), Margin = 0.053 ns (0.26% of Mean)
Skewness = 4.13, Kurtosis = 26.08, MValue = 2
-------------------- Histogram --------------------
[20.373 ns ; 21.207 ns) | @@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
[21.207 ns ; 21.707 ns) | @
---------------------------------------------------
ReadOnlySpan.IndexOfString: Job-NKYPYP(OutlierMode=DontRemove, PowerPlanMode=00000000-0000-0000-0000-000000000000, Arguments=/p:DebugType=portable,-bl:benchmarkdotnet.binlog, IterationTime=250.0000 ms, MaxIterationCount=101, MemoryRandomization=True, MinIterationCount=100, WarmupCount=1) [input=Hello Worldb(...)allylong!xyz [187], value=~, comparisonType=Ordinal]
Runtime = .NET 6.0.0 (6.0.21.41701), X64 RyuJIT; GC = Concurrent Workstation
Mean = 17.207 ns, StdErr = 0.049 ns (0.29%), N = 100, StdDev = 0.495 ns
Min = 16.688 ns, Q1 = 16.852 ns, Median = 17.014 ns, Q3 = 17.495 ns, Max = 19.593 ns
IQR = 0.643 ns, LowerFence = 15.888 ns, UpperFence = 18.459 ns
ConfidenceInterval = [17.039 ns; 17.374 ns] (CI 99.9%), Margin = 0.168 ns (0.98% of Mean)
Skewness = 1.68, Kurtosis = 7.13, MValue = 2.35
-------------------- Histogram --------------------
[16.672 ns ; 17.320 ns) | @@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
[17.320 ns ; 17.776 ns) | @@@@@@@@@@@@@@@@@@@@
[17.776 ns ; 18.449 ns) | @@@@@@@@@@
[18.449 ns ; 18.998 ns) | @
[18.998 ns ; 19.733 ns) | @
---------------------------------------------------
ReadOnlySpan.IndexOfString: Job-NKYPYP(OutlierMode=DontRemove, PowerPlanMode=00000000-0000-0000-0000-000000000000, Arguments=/p:DebugType=portable,-bl:benchmarkdotnet.binlog, IterationTime=250.0000 ms, MaxIterationCount=101, MemoryRandomization=True, MinIterationCount=100, WarmupCount=1) [input=Hello Worldbb(...)bbbbbbbbbbba! [47], value=y, comparisonType=Ordinal]
Runtime = .NET 6.0.0 (6.0.21.41701), X64 RyuJIT; GC = Concurrent Workstation
Mean = 12.711 ns, StdErr = 0.073 ns (0.57%), N = 100, StdDev = 0.725 ns
Min = 12.022 ns, Q1 = 12.437 ns, Median = 12.566 ns, Q3 = 12.807 ns, Max = 18.097 ns
IQR = 0.370 ns, LowerFence = 11.881 ns, UpperFence = 13.362 ns
ConfidenceInterval = [12.465 ns; 12.957 ns] (CI 99.9%), Margin = 0.246 ns (1.94% of Mean)
Skewness = 4.76, Kurtosis = 32.68, MValue = 2
-------------------- Histogram --------------------
[12.009 ns ; 12.423 ns) | @@@@@@@@@@@@@@@@@@@@@
[12.423 ns ; 12.833 ns) | @@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
[12.833 ns ; 13.401 ns) | @@@@@@@@@@@
[13.401 ns ; 13.811 ns) | @@@@@
[13.811 ns ; 14.285 ns) | @
[14.285 ns ; 14.695 ns) | @
[14.695 ns ; 15.109 ns) |
[15.109 ns ; 15.520 ns) | @
[15.520 ns ; 15.930 ns) |
[15.930 ns ; 16.340 ns) |
[16.340 ns ; 16.750 ns) |
[16.750 ns ; 17.160 ns) |
[17.160 ns ; 17.570 ns) |
[17.570 ns ; 17.892 ns) |
[17.892 ns ; 18.302 ns) | @
---------------------------------------------------
ReadOnlySpan.IndexOfString: Job-NKYPYP(OutlierMode=DontRemove, PowerPlanMode=00000000-0000-0000-0000-000000000000, Arguments=/p:DebugType=portable,-bl:benchmarkdotnet.binlog, IterationTime=250.0000 ms, MaxIterationCount=101, MemoryRandomization=True, MinIterationCount=100, WarmupCount=1) [input=More Test's, value=Tests, comparisonType=OrdinalIgnoreCase]
Runtime = .NET 6.0.0 (6.0.21.41701), X64 RyuJIT; GC = Concurrent Workstation
Mean = 25.799 ns, StdErr = 0.122 ns (0.47%), N = 100, StdDev = 1.215 ns
Min = 25.071 ns, Q1 = 25.262 ns, Median = 25.394 ns, Q3 = 25.778 ns, Max = 32.241 ns
IQR = 0.516 ns, LowerFence = 24.487 ns, UpperFence = 26.553 ns
ConfidenceInterval = [25.387 ns; 26.211 ns] (CI 99.9%), Margin = 0.412 ns (1.60% of Mean)
Skewness = 3.61, Kurtosis = 17.26, MValue = 2
-------------------- Histogram --------------------
[24.728 ns ; 25.816 ns) | @@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
[25.816 ns ; 26.536 ns) | @@@@@@@@@@@@
[26.536 ns ; 27.189 ns) | @
[27.189 ns ; 27.877 ns) | @@@
[27.877 ns ; 28.601 ns) |
[28.601 ns ; 29.288 ns) | @@
[29.288 ns ; 30.542 ns) | @
[30.542 ns ; 31.230 ns) |
[31.230 ns ; 31.844 ns) |
[31.844 ns ; 32.584 ns) | @@
---------------------------------------------------
ReadOnlySpan.IndexOfString: Job-NKYPYP(OutlierMode=DontRemove, PowerPlanMode=00000000-0000-0000-0000-000000000000, Arguments=/p:DebugType=portable,-bl:benchmarkdotnet.binlog, IterationTime=250.0000 ms, MaxIterationCount=101, MemoryRandomization=True, MinIterationCount=100, WarmupCount=1) [input=StrIng, value=string, comparisonType=OrdinalIgnoreCase]
Runtime = .NET 6.0.0 (6.0.21.41701), X64 RyuJIT; GC = Concurrent Workstation
Mean = 15.615 ns, StdErr = 0.050 ns (0.32%), N = 100, StdDev = 0.496 ns
Min = 15.401 ns, Q1 = 15.464 ns, Median = 15.491 ns, Q3 = 15.600 ns, Max = 20.030 ns
IQR = 0.135 ns, LowerFence = 15.261 ns, UpperFence = 15.803 ns
ConfidenceInterval = [15.446 ns; 15.783 ns] (CI 99.9%), Margin = 0.168 ns (1.08% of Mean)
Skewness = 7.31, Kurtosis = 63.32, MValue = 2
-------------------- Histogram --------------------
[15.376 ns ; 15.974 ns) | @@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
[15.974 ns ; 16.543 ns) | @@@
[16.543 ns ; 17.173 ns) | @
[17.173 ns ; 17.735 ns) |
[17.735 ns ; 18.296 ns) |
[18.296 ns ; 18.857 ns) |
[18.857 ns ; 19.419 ns) |
[19.419 ns ; 20.170 ns) | @
---------------------------------------------------
ReadOnlySpan.IndexOfString: Job-NKYPYP(OutlierMode=DontRemove, PowerPlanMode=00000000-0000-0000-0000-000000000000, Arguments=/p:DebugType=portable,-bl:benchmarkdotnet.binlog, IterationTime=250.0000 ms, MaxIterationCount=101, MemoryRandomization=True, MinIterationCount=100, WarmupCount=1) [input=foobardzsdzs, value=rddzs, comparisonType=InvariantCulture]
Runtime = .NET 6.0.0 (6.0.21.41701), X64 RyuJIT; GC = Concurrent Workstation
Mean = 41.283 ns, StdErr = 0.067 ns (0.16%), N = 100, StdDev = 0.675 ns
Min = 40.456 ns, Q1 = 40.959 ns, Median = 41.150 ns, Q3 = 41.431 ns, Max = 46.224 ns
IQR = 0.472 ns, LowerFence = 40.252 ns, UpperFence = 42.138 ns
ConfidenceInterval = [41.055 ns; 41.512 ns] (CI 99.9%), Margin = 0.229 ns (0.55% of Mean)
Skewness = 4.27, Kurtosis = 30, MValue = 2
-------------------- Histogram --------------------
[40.265 ns ; 41.452 ns) | @@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
[41.452 ns ; 42.704 ns) | @@@@@@@@@@@@@@@@@@@@@
[42.704 ns ; 43.736 ns) | @
[43.736 ns ; 44.882 ns) |
[44.882 ns ; 46.415 ns) | @
---------------------------------------------------
ReadOnlySpan.IndexOfString: Job-NKYPYP(OutlierMode=DontRemove, PowerPlanMode=00000000-0000-0000-0000-000000000000, Arguments=/p:DebugType=portable,-bl:benchmarkdotnet.binlog, IterationTime=250.0000 ms, MaxIterationCount=101, MemoryRandomization=True, MinIterationCount=100, WarmupCount=1) [input=string1, value=string2, comparisonType=InvariantCulture]
Runtime = .NET 6.0.0 (6.0.21.41701), X64 RyuJIT; GC = Concurrent Workstation
Mean = 35.777 ns, StdErr = 0.051 ns (0.14%), N = 100, StdDev = 0.506 ns
Min = 35.343 ns, Q1 = 35.432 ns, Median = 35.675 ns, Q3 = 35.919 ns, Max = 38.940 ns
IQR = 0.487 ns, LowerFence = 34.701 ns, UpperFence = 36.650 ns
ConfidenceInterval = [35.605 ns; 35.949 ns] (CI 99.9%), Margin = 0.172 ns (0.48% of Mean)
Skewness = 3.43, Kurtosis = 19.36, MValue = 2
-------------------- Histogram --------------------
[35.200 ns ; 36.335 ns) | @@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
[36.335 ns ; 37.534 ns) | @@@@
[37.534 ns ; 39.083 ns) | @@
---------------------------------------------------
ReadOnlySpan.IndexOfString: Job-NKYPYP(OutlierMode=DontRemove, PowerPlanMode=00000000-0000-0000-0000-000000000000, Arguments=/p:DebugType=portable,-bl:benchmarkdotnet.binlog, IterationTime=250.0000 ms, MaxIterationCount=101, MemoryRandomization=True, MinIterationCount=100, WarmupCount=1) [input=?, value=?, comparisonType=InvariantCulture]
Runtime = .NET 6.0.0 (6.0.21.41701), X64 RyuJIT; GC = Concurrent Workstation
Mean = 1.188 us, StdErr = 0.002 us (0.13%), N = 100, StdDev = 0.015 us
Min = 1.152 us, Q1 = 1.179 us, Median = 1.190 us, Q3 = 1.198 us, Max = 1.229 us
IQR = 0.019 us, LowerFence = 1.151 us, UpperFence = 1.227 us
ConfidenceInterval = [1.183 us; 1.193 us] (CI 99.9%), Margin = 0.005 us (0.43% of Mean)
Skewness = -0.14, Kurtosis = 3.05, MValue = 2
-------------------- Histogram --------------------
[1.148 us ; 1.176 us) | @@@@@@@@@@@@@@@@@@@
[1.176 us ; 1.234 us) | @@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
---------------------------------------------------
ReadOnlySpan.IndexOfString: Job-NKYPYP(OutlierMode=DontRemove, PowerPlanMode=00000000-0000-0000-0000-000000000000, Arguments=/p:DebugType=portable,-bl:benchmarkdotnet.binlog, IterationTime=250.0000 ms, MaxIterationCount=101, MemoryRandomization=True, MinIterationCount=100, WarmupCount=1) [input=????????????(...)???????????? [100], value=?, comparisonType=Ordinal]
Runtime = .NET 6.0.0 (6.0.21.41701), X64 RyuJIT; GC = Concurrent Workstation
Mean = 13.372 ns, StdErr = 0.014 ns (0.10%), N = 100, StdDev = 0.137 ns
Min = 13.154 ns, Q1 = 13.294 ns, Median = 13.328 ns, Q3 = 13.444 ns, Max = 14.211 ns
IQR = 0.149 ns, LowerFence = 13.071 ns, UpperFence = 13.668 ns
ConfidenceInterval = [13.326 ns; 13.419 ns] (CI 99.9%), Margin = 0.047 ns (0.35% of Mean)
Skewness = 2.54, Kurtosis = 15.07, MValue = 2
-------------------- Histogram --------------------
[13.115 ns ; 13.425 ns) | @@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
[13.425 ns ; 13.736 ns) | @@@@@@@@@@@@@@@@@@@@@@@@@@@@
[13.736 ns ; 14.250 ns) | @
---------------------------------------------------
ReadOnlySpan.IndexOfString: Job-NKYPYP(OutlierMode=DontRemove, PowerPlanMode=00000000-0000-0000-0000-000000000000, Arguments=/p:DebugType=portable,-bl:benchmarkdotnet.binlog, IterationTime=250.0000 ms, MaxIterationCount=101, MemoryRandomization=True, MinIterationCount=100, WarmupCount=1) [input=????????????(...)???????????? [1000], value=x, comparisonType=Ordinal]
Runtime = .NET 6.0.0 (6.0.21.41701), X64 RyuJIT; GC = Concurrent Workstation
Mean = 23.281 ns, StdErr = 0.070 ns (0.30%), N = 100, StdDev = 0.699 ns
Min = 22.640 ns, Q1 = 22.893 ns, Median = 23.171 ns, Q3 = 23.386 ns, Max = 27.660 ns
IQR = 0.493 ns, LowerFence = 22.153 ns, UpperFence = 24.126 ns
ConfidenceInterval = [23.044 ns; 23.518 ns] (CI 99.9%), Margin = 0.237 ns (1.02% of Mean)
Skewness = 3.56, Kurtosis = 19.7, MValue = 2
-------------------- Histogram --------------------
[22.442 ns ; 23.274 ns) | @@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
[23.274 ns ; 24.082 ns) | @@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
[24.082 ns ; 24.975 ns) | @@@
[24.975 ns ; 25.534 ns) | @
[25.534 ns ; 26.494 ns) | @
[26.494 ns ; 27.858 ns) | @
---------------------------------------------------
// * Summary *
BenchmarkDotNet=v0.13.1.1603-nightly, OS=Windows 10.0.19043.1165 (21H1/May2021Update)
AMD Ryzen Threadripper PRO 3945WX 12-Cores, 1 CPU, 24 logical and 12 physical cores
.NET SDK=6.0.100-rc.1.21417.19
[Host] : .NET 6.0.0 (6.0.21.41701), X64 RyuJIT
Job-NKYPYP : .NET 6.0.0 (6.0.21.41701), X64 RyuJIT
OutlierMode=DontRemove PowerPlanMode=00000000-0000-0000-0000-000000000000 Arguments=/p:DebugType=portable,-bl:benchmarkdotnet.binlog
IterationTime=250.0000 ms MaxIterationCount=101 MemoryRandomization=True
MinIterationCount=100 WarmupCount=1
|
Run Information
Regressions in System.Tests.Perf_String
Historical Data in Reporting System
Repro
Payloads
Baseline
Compare
Histogram
System.Tests.Perf_String.ToLowerInvariant(s: "This is a much longer piece of text that might benefit more from vectorization.")
System.Tests.Perf_String.ToUpperInvariant(s: "TeSt")
System.Tests.Perf_String.ToUpperInvariant(s: "test")
System.Tests.Perf_String.IndexerCheckPathLength
System.Tests.Perf_String.Replace_Char(text: "Hello", oldChar: 'a', newChar: 'b')
System.Tests.Perf_String.Remove_IntInt(s: "dzsdzsDDZSDZSDZSddsz", i1: 0, i2: 8)
Docs
Profiling workflow for dotnet/runtime repository
Benchmarking workflow for dotnet/runtime repository
Regressions in System.Formats.Cbor.Tests.Perf_CborReader
Historical Data in Reporting System
Repro
Payloads
Baseline
Compare
Histogram
System.Formats.Cbor.Tests.Perf_CborReader.SkipValue(encoding: (Text String, Strict))
System.Formats.Cbor.Tests.Perf_CborReader.SkipValue(encoding: (Byte String, Strict))
Docs
Profiling workflow for dotnet/runtime repository
Benchmarking workflow for dotnet/runtime repository
Run Information
Regressions in System.Memory.ReadOnlySpan
Historical Data in Reporting System
Repro
Payloads
Baseline
Compare
Histogram
System.Memory.ReadOnlySpan.IndexOfString(input: "だ", value: "た", comparisonType: InvariantCulture)
System.Memory.ReadOnlySpan.IndexOfString(input: "More Test's", value: "Tests", comparisonType: OrdinalIgnoreCase)
System.Memory.ReadOnlySpan.Trim(input: " abcdefg ")
System.Memory.ReadOnlySpan.IndexOfString(input: "だだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだxだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだ", value: "x", comparisonType: Ordinal)
System.Memory.ReadOnlySpan.IndexOfString(input: "StrIng", value: "string", comparisonType: OrdinalIgnoreCase)
System.Memory.ReadOnlySpan.IndexOfString(input: "AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAXAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA", value: "X", comparisonType: Ordinal)
Docs
Profiling workflow for dotnet/runtime repository
Benchmarking workflow for dotnet/runtime repository
Run Information
Regressions in System.Collections.ContainsFalse<String>
Historical Data in Reporting System
Repro
Payloads
Baseline
Compare
Histogram
System.Collections.ContainsFalse<String>.ICollection(Size: 512)
Docs
Profiling workflow for dotnet/runtime repository
Benchmarking workflow for dotnet/runtime repository
Run Information
Regressions in System.Tests.Perf_HashCode
Historical Data in Reporting System
Repro
Payloads
Baseline
Compare
Histogram
System.Tests.Perf_HashCode.Add
Docs
Profiling workflow for dotnet/runtime repository
Benchmarking workflow for dotnet/runtime repository
Run Information
Regressions in System.Collections.IterateForEachNonGeneric<Int32>
Historical Data in Reporting System
Repro
Payloads
Baseline
Compare
Histogram
System.Collections.IterateForEachNonGeneric<Int32>.ArrayList(Size: 512)
Docs
Profiling workflow for dotnet/runtime repository
Benchmarking workflow for dotnet/runtime repository
The text was updated successfully, but these errors were encountered: