dotnet/runtime
View on GitHubInitializing the "ja" culture takes 200ms when using ICU
Open
#31,273 opened on Oct 23, 2019
area-System.Globalizationhelp wantedos-linuxtenet-performance
Repository metrics
- Stars
- (17,886 stars)
- PR merge metrics
- (Avg merge 12d 11h) (661 merged PRs in 30d)
Description
DateTime.Parse for "ja" culture (ONLY) is 10x times slower on Linux compared to Windows
| Slower | diff/base | Windows Median (ns) | Linux Median (ns) |
|---|---|---|---|
| System.Globalization.Tests.Perf_DateTimeCultureInfo.Parse(culturestring: ja) | 8.87 | 454.24 | 4029.00 |
| System.Globalization.Tests.Perf_DateTimeCultureInfo.ToString(culturestring: da) | 1.08 | 236.39 | 254.59 |
| System.Globalization.Tests.Perf_DateTimeCultureInfo.ToString(culturestring: ) | 1.05 | 245.69 | 258.02 |
| System.Globalization.Tests.Perf_DateTimeCultureInfo.ToString(culturestring: ja) | 1.05 | 245.61 | 257.00 |
| System.Globalization.Tests.Perf_DateTimeCultureInfo.ToString(culturestring: fr) | 1.05 | 245.56 | 256.82 |
| Faster | Win/Lin | Windows Median (ns) | Linux Median (ns) |
|---|---|---|---|
| System.Globalization.Tests.Perf_DateTimeCultureInfo.Parse(culturestring: da) | 1.24 | 531.21 | 428.73 |
| System.Globalization.Tests.Perf_DateTimeCultureInfo.Parse(culturestring: fr) | 1.05 | 450.44 | 428.87 |
| System.Globalization.Tests.Perf_DateTimeCultureInfo.ToStringHebrewIsrael | 1.04 | 509.37 | 488.81 |
The contributor who wants to work on this issue should:
- Run this simple benchmark from dotnet/performance repository and confirm the problem
git clone https://github.com/dotnet/performance.git
python3 ./performance/scripts/benchmarks_ci.py -f netcoreapp5.0 --filter System.Globalization.Tests.Perf_DateTimeCultureInfo.Parse
- Build CoreCLR locally: https://github.com/dotnet/performance/blob/master/docs/profiling-workflow-corefx.md#Build
- Create a small repro app: https://github.com/dotnet/performance/blob/master/docs/profiling-workflow-corefx.md#repro
- Use PerfCollect to identify issue https://github.com/dotnet/performance/blob/master/docs/profiling-workflow-corefx.md#PerfCollect
- Solve the issue