dotnet/runtime

Initializing the "ja" culture takes 200ms when using ICU

Open

#31,273 opened on 2019年10月23日

GitHub で見る
 (16 comments) (1 reaction) (0 assignees)C# (5,445 forks)batch import
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:

  1. 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
  1. Build CoreCLR locally: https://github.com/dotnet/performance/blob/master/docs/profiling-workflow-corefx.md#Build
  2. Create a small repro app: https://github.com/dotnet/performance/blob/master/docs/profiling-workflow-corefx.md#repro
  3. Use PerfCollect to identify issue https://github.com/dotnet/performance/blob/master/docs/profiling-workflow-corefx.md#PerfCollect
  4. Solve the issue

コントリビューターガイド