Skip to content

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

@adamsitnik

Description

@adamsitnik

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

Metadata

Metadata

Assignees

No one assigned

    Labels

    Type

    No type

    Projects

    No projects

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions