dotnet/runtime

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

Open

#31.273 aberto em 23 de out. de 2019

Ver no GitHub
 (16 comments) (1 reaction) (0 assignees)C# (5.445 forks)batch import
area-System.Globalizationhelp wantedos-linuxtenet-performance

Métricas do repositório

Stars
 (17.886 stars)
Métricas de merge de PR
 (Mesclagem média 12d 11h) (661 fundiu PRs em 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:

  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

Guia do colaborador