Skip to content

[Perf -116%] System.Memory.ReadOnlySpan.IndexOfString (4) #37815

@DrewScoggins

Description

@DrewScoggins

Run Information

Architecture x64
OS Windows 10.0.18362
Changes diff

Regressions in System.Memory.ReadOnlySpan

Benchmark Baseline Test Test/Base Modality Baseline Outlier
IndexOfString 270.81 ns 851.49 ns 3.14 False
IndexOfString 41.60 ns 60.54 ns 1.46 True
IndexOfString 49.03 ns 105.97 ns 2.16 True
IndexOfString 58.53 ns 112.59 ns 1.92 True

graph
graph
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.Memory.ReadOnlySpan*';

Histogram

System.Memory.ReadOnlySpan.IndexOfString(input: "AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAXAAAAAAAAAAAAAAAAAAAAAAAAAAAAA", value: "x", comparisonType: OrdinalIgnoreCase)

[250.798 ; 321.811) | @@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
[321.811 ; 392.825) | 
[392.825 ; 463.838) | 
[463.838 ; 534.851) | 
[534.851 ; 605.865) | 
[605.865 ; 676.878) | 
[676.878 ; 747.891) | 
[747.891 ; 799.121) | 
[799.121 ; 870.134) | @@@@@@@@@@@@@@@@
[870.134 ; 894.531) | 
[894.531 ; 965.544) | @@@@

System.Memory.ReadOnlySpan.IndexOfString(input: "StrIng", value: "string", comparisonType: OrdinalIgnoreCase)

[31.924 ; 34.905) | @@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
[34.905 ; 37.599) | @
[37.599 ; 40.139) | 
[40.139 ; 41.715) | @@@@@@
[41.715 ; 44.409) | @@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
[44.409 ; 45.934) | @@@@@@
[45.934 ; 48.628) | 
[48.628 ; 51.322) | 
[51.322 ; 52.515) | 
[52.515 ; 55.958) | @
[55.958 ; 58.780) | @@@@
[58.780 ; 61.474) | @@@@@@@@@@@@@
[61.474 ; 63.528) | @@

System.Memory.ReadOnlySpan.IndexOfString(input: "Hello WorldbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbareallyreallylongHello WorldbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbareallyreallylongHello Worldbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbareallyreallylong!xyz", value: "w", comparisonType: OrdinalIgnoreCase)

[ 36.991 ;  43.673) | @@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
[ 43.673 ;  48.230) | 
[ 48.230 ;  54.912) | @@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
[ 54.912 ;  61.594) | 
[ 61.594 ;  68.276) | 
[ 68.276 ;  74.958) | 
[ 74.958 ;  81.640) | 
[ 81.640 ;  88.322) | 
[ 88.322 ;  94.924) | 
[ 94.924 ; 100.936) | @@
[100.936 ; 107.618) | @@@@@@@@@@@@@@@@@@

System.Memory.ReadOnlySpan.IndexOfString(input: "More Test's", value: "Tests", comparisonType: OrdinalIgnoreCase)

[ 47.992 ;  54.920) | @@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
[ 54.920 ;  57.783) | 
[ 57.783 ;  64.711) | @@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
[ 64.711 ;  71.639) | 
[ 71.639 ;  78.568) | 
[ 78.568 ;  85.496) | 
[ 85.496 ;  92.424) | 
[ 92.424 ;  99.352) | 
[ 99.352 ; 104.219) | 
[104.219 ; 111.937) | @@
[111.937 ; 118.865) | @@@@@@@@@@@@@@
[118.865 ; 127.125) | @@@@

Docs

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

Metadata

Metadata

Assignees

No one assigned

    Type

    No type

    Projects

    No projects

    Milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions