dotnet/runtime
GitHub で見るInitializing the "ja" culture takes 200ms when using ICU
Open
#31,273 opened on 2019年10月23日
area-System.Globalizationhelp wantedos-linuxtenet-performance
Repository metrics
- Stars
- (17,886 stars)
- PR merge metrics
- (平均マージ 12d 11h) (30d で 661 merged PRs)
説明
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