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

[Perf -1,796%] System.Globalization.Tests.StringSearch (33) #495

Open
performanceautofiler bot opened this issue Jun 11, 2020 · 2 comments
Open

[Perf -1,796%] System.Globalization.Tests.StringSearch (33) #495

performanceautofiler bot opened this issue Jun 11, 2020 · 2 comments

Comments

@performanceautofiler
Copy link

Run Information

Architecture x64
OS Windows 10.0.18362
Changes diff

Regressions in System.Globalization.Tests.StringSearch

Benchmark Baseline Test Test/Base Modality Baseline Outlier
IsPrefix_FirstHalf 1.03 μs 4.07 μs 3.95 False
IsPrefix_DifferentFirstChar 108.31 ns 943.68 ns 8.71 False
IndexOf_Word_NotFound 10.67 μs 16.73 μs 1.57 False
IsPrefix_FirstHalf 2.88 μs 6.44 μs 2.24 False
IsPrefix_FirstHalf 1.06 μs 4.07 μs 3.84 False
IndexOf_Word_NotFound 3.77 μs 13.06 μs 3.47 False
IsSuffix_SecondHalf 2.77 μs 7.91 μs 2.85 False
IndexOf_Word_NotFound 4.48 μs 12.74 μs 2.84 False
IsSuffix_SecondHalf 2.71 μs 7.89 μs 2.91 False
IndexOf_Word_NotFound 4.43 μs 13.30 μs 3.00 False
LastIndexOf_Word_NotFound 722.67 ns 3.07 μs 4.25 False
IsPrefix_DifferentFirstChar 74.49 ns 33.91 μs 455.17 False
LastIndexOf_Word_NotFound 3.45 μs 18.97 μs 5.49 False
IsPrefix_FirstHalf 1.04 μs 19.76 μs 18.92 False
LastIndexOf_Word_NotFound 3.48 μs 19.26 μs 5.53 False
IndexOf_Word_NotFound 4.41 μs 13.13 μs 2.97 False
IsPrefix_DifferentFirstChar 7.42 ns 12.15 ns 1.64 False
IsPrefix_DifferentFirstChar 79.69 ns 947.48 ns 11.89 False
IsPrefix_DifferentFirstChar 79.79 ns 948.99 ns 11.89 False
IsPrefix_FirstHalf 1.04 μs 4.02 μs 3.88 False
IsPrefix_DifferentFirstChar 110.79 ns 954.87 ns 8.62 False
LastIndexOf_Word_NotFound 3.48 μs 19.51 μs 5.61 False
IsPrefix_DifferentFirstChar 80.42 ns 958.20 ns 11.91 False
LastIndexOf_Word_NotFound 3.78 μs 18.52 μs 4.91 False
IsSuffix_SecondHalf 3.51 μs 22.03 μs 6.27 False
IsSuffix_SecondHalf 2.72 μs 7.91 μs 2.90 False
IndexOf_Word_NotFound 777.31 ns 3.10 μs 3.98 False
IsPrefix_FirstHalf 1.02 μs 4.07 μs 3.97 False
LastIndexOf_Word_NotFound 3.49 μs 19.50 μs 5.60 False
LastIndexOf_Word_NotFound 10.07 μs 20.54 μs 2.04 False
IsSuffix_DifferentLastChar 5.63 μs 39.52 μs 7.02 False
IsSuffix_SecondHalf 2.73 μs 7.87 μs 2.89 False
IndexOf_Word_NotFound 4.46 μs 13.17 μs 2.95 False

graph
graph
graph
graph
graph
graph
graph
graph
graph
graph
graph
graph
graph
graph
graph
graph
graph
graph
graph
graph
graph
graph
graph
graph
graph
graph
graph
graph
graph
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.Globalization.Tests.StringSearch*';

Histogram

System.Globalization.Tests.StringSearch.IsPrefix_FirstHalf(Options: (en-US, None, True))

[ 532.994 ; 1506.890) | @@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
[1506.890 ; 2450.272) | 
[2450.272 ; 3630.447) | 
[3630.447 ; 4673.898) | @@@@@@@@@@@@@@@@@

System.Globalization.Tests.StringSearch.IsPrefix_DifferentFirstChar(Options: (en-US, None, True))

[-57.647 ;  229.992) | @@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
[229.992 ;  499.302) | 
[499.302 ;  836.791) | 
[836.791 ; 1134.778) | @@@@@@@@@@@@@@@@@

System.Globalization.Tests.StringSearch.IndexOf_Word_NotFound(Options: (pl-PL, None, False))

[ 9953.392 ; 11828.365) | @@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
[11828.365 ; 13703.337) | 
[13703.337 ; 16027.879) | 
[16027.879 ; 17902.851) | @@@@@@@@@@@@@@@@@

System.Globalization.Tests.StringSearch.IsPrefix_FirstHalf(Options: (pl-PL, None, False))

[2703.046 ; 3792.142) | @@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
[3792.142 ; 4881.238) | 
[4881.238 ; 5924.287) | 
[5924.287 ; 7146.272) | @@@@@@@@@@@@@@@@@

System.Globalization.Tests.StringSearch.IsPrefix_FirstHalf(Options: (, IgnoreCase, True))

[ 525.539 ; 1514.034) | @@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
[1514.034 ; 2474.524) | 
[2474.524 ; 3435.015) | 
[3435.015 ; 3926.624) | 
[3926.624 ; 4887.115) | @@@@@@@@@@@@@@@@@

System.Globalization.Tests.StringSearch.IndexOf_Word_NotFound(Options: (en-US, IgnoreSymbols, False))

[ 2259.064 ;  5241.932) | @@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
[ 5241.932 ;  8148.459) | 
[ 8148.459 ; 11969.034) | 
[11969.034 ; 15330.536) | @@@@@@@@@@@@@@@@@

System.Globalization.Tests.StringSearch.IsSuffix_SecondHalf(Options: (en-US, IgnoreCase, True))

[1914.833 ; 3559.149) | @@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
[3559.149 ; 5151.682) | 
[5151.682 ; 7122.102) | 
[7122.102 ; 8784.868) | @@@@@@@@@@@@@@@@@

System.Globalization.Tests.StringSearch.IndexOf_Word_NotFound(Options: (, None, True))

[ 3087.120 ;  5824.857) | @@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
[ 5824.857 ;  8441.180) | 
[ 8441.180 ; 11057.502) | 
[11057.502 ; 12060.923) | 
[12060.923 ; 14677.246) | @@@@@@@@@@@@@@@@@

System.Globalization.Tests.StringSearch.IsSuffix_SecondHalf(Options: (, IgnoreCase, True))

[1905.658 ; 3557.110) | @@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
[3557.110 ; 5167.617) | 
[5167.617 ; 6778.125) | 
[6778.125 ; 7391.907) | 
[7391.907 ; 9002.415) | @@@@@@@@@@@@@@@@@

System.Globalization.Tests.StringSearch.IndexOf_Word_NotFound(Options: (en-US, None, True))

[ 3054.817 ;  5834.360) | @@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
[ 5834.360 ;  8524.330) | 
[ 8524.330 ; 11890.856) | 
[11890.856 ; 14954.605) | @@@@@@@@@@@@@@@@@

System.Globalization.Tests.StringSearch.LastIndexOf_Word_NotFound(Options: (en-US, OrdinalIgnoreCase, False))

[ 350.301 ; 1095.495) | @@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
[1095.495 ; 1837.360) | 
[1837.360 ; 2802.276) | 
[2802.276 ; 3675.831) | @@@@@@@@@@@@@@@@@

System.Globalization.Tests.StringSearch.IsPrefix_DifferentFirstChar(Options: (en-US, IgnoreSymbols, False))

[-5196.602 ;  5352.648) | @@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
[ 5352.648 ; 15892.823) | 
[15892.823 ; 29067.736) | 
[29067.736 ; 40313.138) | @@@@@@@@@@@@@@@@@

System.Globalization.Tests.StringSearch.LastIndexOf_Word_NotFound(Options: (, None, True))

[ 1046.538 ;  5927.685) | @@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
[ 5927.685 ; 10729.973) | 
[10729.973 ; 16829.170) | 
[16829.170 ; 22116.673) | @@@@@@@@@@@@@@@@@

System.Globalization.Tests.StringSearch.IsPrefix_FirstHalf(Options: (en-US, IgnoreSymbols, False))

[-1906.639 ;  3948.383) | @@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
[ 3948.383 ;  9758.511) | 
[ 9758.511 ; 17044.977) | 
[17044.977 ; 23293.181) | @@@@@@@@@@@@@@@@@

System.Globalization.Tests.StringSearch.LastIndexOf_Word_NotFound(Options: (en-US, None, True))

[ 1008.768 ;  5968.123) | @@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
[ 5968.123 ; 10842.435) | 
[10842.435 ; 17145.390) | 
[17145.390 ; 22474.383) | @@@@@@@@@@@@@@@@@

System.Globalization.Tests.StringSearch.IndexOf_Word_NotFound(Options: (en-US, IgnoreCase, True))

[ 3027.153 ;  5841.644) | @@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
[ 5841.644 ;  8579.493) | 
[ 8579.493 ; 12168.340) | 
[12168.340 ; 15328.514) | @@@@@@@@@@@@@@@@@

System.Globalization.Tests.StringSearch.IsPrefix_DifferentFirstChar(Options: (en-US, Ordinal, False))

[ 5.847 ;  6.880) | @@@@@@@@@@@
[ 6.880 ;  7.999) | @@@@@@@@@@@@@@@@@@@@@@@@@@@@
[ 7.999 ;  8.325) | @
[ 8.325 ;  9.386) | @@@@@
[ 9.386 ; 10.364) | @@@@@@@@@@@
[10.364 ; 11.180) | @@
[11.180 ; 11.659) | 
[11.659 ; 12.637) | @

System.Globalization.Tests.StringSearch.IsPrefix_DifferentFirstChar(Options: (, None, True))

[ -62.903 ;  228.875) | @@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
[ 228.875 ;  509.582) | 
[ 509.582 ;  814.970) | 
[ 814.970 ; 1095.676) | @@@@@@@@@@@@@@@@
[1095.676 ; 1298.573) | 
[1298.573 ; 1579.280) | @

System.Globalization.Tests.StringSearch.IsPrefix_DifferentFirstChar(Options: (en-US, IgnoreCase, True))

[-56.551 ;  216.686) | @@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
[216.686 ;  485.750) | 
[485.750 ;  814.196) | 
[814.196 ; 1103.723) | @@@@@@@@@@@@@@@@@

System.Globalization.Tests.StringSearch.IsPrefix_FirstHalf(Options: (en-US, IgnoreCase, True))

[ 535.674 ; 1502.918) | @@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
[1502.918 ; 2444.235) | 
[2444.235 ; 3542.375) | 
[3542.375 ; 4483.693) | @@@@@@@@@@@@@@@@@

System.Globalization.Tests.StringSearch.IsPrefix_DifferentFirstChar(Options: (pl-PL, None, False))

[-19.275 ;  242.262) | @@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
[242.262 ;  499.677) | 
[499.677 ;  818.526) | 
[818.526 ; 1098.653) | @@@@@@@@@@@@@@@@@

System.Globalization.Tests.StringSearch.LastIndexOf_Word_NotFound(Options: (, IgnoreCase, True))

[  945.637 ;  6038.158) | @@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
[ 6038.158 ; 11035.873) | 
[11035.873 ; 17371.911) | 
[17371.911 ; 22942.045) | @@@@@@@@@@@@@@@@@

System.Globalization.Tests.StringSearch.IsPrefix_DifferentFirstChar(Options: (, IgnoreCase, True))

[ -67.521 ;  225.544) | @@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
[ 225.544 ;  513.681) | 
[ 513.681 ;  823.953) | 
[ 823.953 ; 1112.089) | @@@@@@@@@@@@@@@@
[1112.089 ; 1439.797) | 
[1439.797 ; 1727.933) | @

System.Globalization.Tests.StringSearch.LastIndexOf_Word_NotFound(Options: (en-US, IgnoreSymbols, False))

[ 1434.261 ;  6120.375) | @@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
[ 6120.375 ; 10716.414) | 
[10716.414 ; 16639.187) | 
[16639.187 ; 21780.182) | @@@@@@@@@@@@@@@@@

System.Globalization.Tests.StringSearch.IsSuffix_SecondHalf(Options: (en-US, IgnoreSymbols, False))

[  626.284 ;  6475.305) | @@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
[ 6475.305 ; 12241.662) | 
[12241.662 ; 19598.627) | 
[19598.627 ; 25941.681) | @@@@@@@@@@@@@@@@@

System.Globalization.Tests.StringSearch.IsSuffix_SecondHalf(Options: (en-US, None, True))

[1925.366 ; 3556.616) | @@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
[3556.616 ; 5129.586) | 
[5129.586 ; 6895.171) | 
[6895.171 ; 8713.058) | @@@@@@@@@@@@@@@@@

System.Globalization.Tests.StringSearch.IndexOf_Word_NotFound(Options: (en-US, OrdinalIgnoreCase, False))

[ 411.510 ; 1197.222) | @@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
[1197.222 ; 1925.966) | 
[1925.966 ; 2654.709) | 
[2654.709 ; 3605.985) | @@@@@@@@@@@@@@@@@

System.Globalization.Tests.StringSearch.IsPrefix_FirstHalf(Options: (, None, True))

[ 535.447 ; 1520.669) | @@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
[1520.669 ; 2460.814) | 
[2460.814 ; 3552.320) | 
[3552.320 ; 4673.803) | @@@@@@@@@@@@@@@@@

System.Globalization.Tests.StringSearch.LastIndexOf_Word_NotFound(Options: (en-US, IgnoreCase, True))

[  934.801 ;  6050.886) | @@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
[ 6050.886 ; 11069.403) | 
[11069.403 ; 17387.864) | 
[17387.864 ; 23263.947) | @@@@@@@@@@@@@@@@@

System.Globalization.Tests.StringSearch.LastIndexOf_Word_NotFound(Options: (pl-PL, None, False))

[ 9691.776 ; 12986.817) | @@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
[12986.817 ; 16281.858) | 
[16281.858 ; 19201.050) | 
[19201.050 ; 22937.761) | @@@@@@@@@@@@@@@@@

System.Globalization.Tests.StringSearch.IsSuffix_DifferentLastChar(Options: (en-US, IgnoreSymbols, False))

[  343.478 ; 10975.753) | @@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
[10975.753 ; 21399.639) | 
[21399.639 ; 34353.782) | 
[34353.782 ; 45601.938) | @@@@@@@@@@@@@@@@@

System.Globalization.Tests.StringSearch.IsSuffix_SecondHalf(Options: (, None, True))

[1928.097 ; 3540.258) | @@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
[3540.258 ; 5111.590) | 
[5111.590 ; 6884.287) | 
[6884.287 ; 8712.708) | @@@@@@@@@@@@@@@@@

System.Globalization.Tests.StringSearch.IndexOf_Word_NotFound(Options: (, IgnoreCase, True))

[ 3048.322 ;  5833.785) | @@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
[ 5833.785 ;  8523.563) | 
[ 8523.563 ; 11844.636) | 
[11844.636 ; 14653.704) | @@@@@@@@@@@@@@@@@

Docs

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

@adamsitnik
Copy link
Collaborator

That's definitely a real regression, most probably caused by the switch to ICU by default on Windows (dotnet/runtime#826). @DrewScoggins could you please transfer it to https://github.com/dotnet/runtime (or give me the write access to this repo)?

@adamsitnik
Copy link
Collaborator

BTW The report itself is really great - it has all we need to take action

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Projects
None yet
Development

No branches or pull requests

2 participants