-
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 -1,796%] System.Globalization.Tests.StringSearch (33) #37819
Comments
From @adamsitnik That's definitely a real regression, most probably caused by the switch to ICU by default on Windows (#826). |
I am wondering, didn't we already have such differences before when we compared Windows against Linux runs? was it already tracked issues for that? |
I remember @adamsitnik doing some investigations on ICU on Linux earlier this year, he might recall if there is an issue for this API. |
The problem is that we have switched to use ICU by default on Windows but I am not sure whether performance regressions were considered. We need to either acknowledge the regressions, don't use ICU by default or somehow try to mitigate all the regressions. |
I think this is discussed in the issue #826
mostly agree. The issue is not about Windows only it is really for Linux too. The real complaint we are getting from people running on Linux and comparing the perf with Windows. I think the best we can do is try to help to optimize in most popular scenarios (e.g. when using ordinal ignore case). and possibly we can look at ICU and try to optimize it too if possible. |
We are also seeing these regressions on Ubuntu x64 |
Run Information
Regressions in System.Globalization.Tests.StringSearch
Related Issue on x64 Windows[Perf -1,855%] System.Globalization.Tests.StringSearch (32) Related Issue on x86 Windows[Perf -1,934%] System.Globalization.Tests.StringSearch (35)
Reprogit clone https://github.com/dotnet/performance.git
py .\performance\scripts\benchmarks_ci.py -f netcoreapp5.0 --filter 'System.Globalization.Tests.StringSearch*'; HistogramSystem.Globalization.Tests.StringSearch.IsSuffix_SecondHalf(Options: (en-US, IgnoreNonSpace, False))
System.Globalization.Tests.StringSearch.IsSuffix_SecondHalf(Options: (, IgnoreCase, False))
System.Globalization.Tests.StringSearch.IsPrefix_FirstHalf(Options: (en-US, None, False))
System.Globalization.Tests.StringSearch.IsPrefix_FirstHalf(Options: (en-US, IgnoreNonSpace, False))
System.Globalization.Tests.StringSearch.IndexOf_Word_NotFound(Options: (, None, False))
System.Globalization.Tests.StringSearch.IsPrefix_FirstHalf(Options: (, IgnoreCase, False))
System.Globalization.Tests.StringSearch.IsPrefix_FirstHalf(Options: (en-US, IgnoreCase, False))
System.Globalization.Tests.StringSearch.IsSuffix_SecondHalf(Options: (, None, False))
System.Globalization.Tests.StringSearch.IsPrefix_DifferentFirstChar(Options: (en-US, Ordinal, False))
System.Globalization.Tests.StringSearch.IsPrefix_FirstHalf(Options: (, None, False))
System.Globalization.Tests.StringSearch.IndexOf_Word_NotFound(Options: (en-US, IgnoreNonSpace, False))
System.Globalization.Tests.StringSearch.IsSuffix_SecondHalf(Options: (en-US, None, False))
System.Globalization.Tests.StringSearch.IndexOf_Word_NotFound(Options: (en-US, None, False))
System.Globalization.Tests.StringSearch.IsSuffix_SecondHalf(Options: (en-US, IgnoreCase, False))
DocsProfiling workflow for dotnet/runtime repository |
I've confirmed that this is an ICU-related issue. Closing and adding to #40942
|
Run Information
Regressions in System.Globalization.Tests.StringSearch
Historical Data in Reporting System
Repro
Histogram
System.Globalization.Tests.StringSearch.IsPrefix_FirstHalf(Options: (en-US, None, True))
System.Globalization.Tests.StringSearch.IsPrefix_DifferentFirstChar(Options: (en-US, None, True))
System.Globalization.Tests.StringSearch.IndexOf_Word_NotFound(Options: (pl-PL, None, False))
System.Globalization.Tests.StringSearch.IsPrefix_FirstHalf(Options: (pl-PL, None, False))
System.Globalization.Tests.StringSearch.IsPrefix_FirstHalf(Options: (, IgnoreCase, True))
System.Globalization.Tests.StringSearch.IndexOf_Word_NotFound(Options: (en-US, IgnoreSymbols, False))
System.Globalization.Tests.StringSearch.IsSuffix_SecondHalf(Options: (en-US, IgnoreCase, True))
System.Globalization.Tests.StringSearch.IndexOf_Word_NotFound(Options: (, None, True))
System.Globalization.Tests.StringSearch.IsSuffix_SecondHalf(Options: (, IgnoreCase, True))
System.Globalization.Tests.StringSearch.IndexOf_Word_NotFound(Options: (en-US, None, True))
System.Globalization.Tests.StringSearch.LastIndexOf_Word_NotFound(Options: (en-US, OrdinalIgnoreCase, False))
System.Globalization.Tests.StringSearch.IsPrefix_DifferentFirstChar(Options: (en-US, IgnoreSymbols, False))
System.Globalization.Tests.StringSearch.LastIndexOf_Word_NotFound(Options: (, None, True))
System.Globalization.Tests.StringSearch.IsPrefix_FirstHalf(Options: (en-US, IgnoreSymbols, False))
System.Globalization.Tests.StringSearch.LastIndexOf_Word_NotFound(Options: (en-US, None, True))
System.Globalization.Tests.StringSearch.IndexOf_Word_NotFound(Options: (en-US, IgnoreCase, True))
System.Globalization.Tests.StringSearch.IsPrefix_DifferentFirstChar(Options: (en-US, Ordinal, False))
System.Globalization.Tests.StringSearch.IsPrefix_DifferentFirstChar(Options: (, None, True))
System.Globalization.Tests.StringSearch.IsPrefix_DifferentFirstChar(Options: (en-US, IgnoreCase, True))
System.Globalization.Tests.StringSearch.IsPrefix_FirstHalf(Options: (en-US, IgnoreCase, True))
System.Globalization.Tests.StringSearch.IsPrefix_DifferentFirstChar(Options: (pl-PL, None, False))
System.Globalization.Tests.StringSearch.LastIndexOf_Word_NotFound(Options: (, IgnoreCase, True))
System.Globalization.Tests.StringSearch.IsPrefix_DifferentFirstChar(Options: (, IgnoreCase, True))
System.Globalization.Tests.StringSearch.LastIndexOf_Word_NotFound(Options: (en-US, IgnoreSymbols, False))
System.Globalization.Tests.StringSearch.IsSuffix_SecondHalf(Options: (en-US, IgnoreSymbols, False))
System.Globalization.Tests.StringSearch.IsSuffix_SecondHalf(Options: (en-US, None, True))
System.Globalization.Tests.StringSearch.IndexOf_Word_NotFound(Options: (en-US, OrdinalIgnoreCase, False))
System.Globalization.Tests.StringSearch.IsPrefix_FirstHalf(Options: (, None, True))
System.Globalization.Tests.StringSearch.LastIndexOf_Word_NotFound(Options: (en-US, IgnoreCase, True))
System.Globalization.Tests.StringSearch.LastIndexOf_Word_NotFound(Options: (pl-PL, None, False))
System.Globalization.Tests.StringSearch.IsSuffix_DifferentLastChar(Options: (en-US, IgnoreSymbols, False))
System.Globalization.Tests.StringSearch.IsSuffix_SecondHalf(Options: (, None, True))
System.Globalization.Tests.StringSearch.IndexOf_Word_NotFound(Options: (, IgnoreCase, True))
Docs
Profiling workflow for dotnet/runtime repository
Benchmarking workflow for dotnet/runtime repository
The text was updated successfully, but these errors were encountered: