Skip to content

Performance regression: Utf8String.IsAscii (x86 only) #41388

@adamsitnik

Description

@adamsitnik

Repro

git clone https://github.com/dotnet/performance.git
py .\scripts\benchmarks_ci.py -f netcoreapp3.1 netcoreapp5.0 --filter System.Text.Perf_Utf8String.IsAscii --architecture x86

@eiriktsarpalis @GrabYourPitchforks @carlossanlop @pgovind I am setting 5.0 milestone to make sure that it gets triaged within the next few weeks.

There was a similar issue, but I've verified that #41198 is not fixing this problem.

@GrabYourPitchforks @eerhardt The benchmark throws for all other documents for 3.1.6 which might be a bug in .NET Standard implementation of Utf8String:

 System.Reflection.TargetInvocationException: Exception has been thrown by the target of an invocation.
  ---> System.ArgumentException: The input buffer contained ill-formed UTF-16 data. (Parameter 'value')
    at System.Utf8String.InitializeBuffer(ReadOnlySpan`1 value)
    at System.Utf8String..ctor(String value)
    at System.Text.Perf_Utf8String.Setup() in C:\Projects\performance\src\benchmarks\micro\libraries\System.Utf8String\Perf.Utf8String.cs:line 21[2020/08/26 12:11:48][INFO]

System.Text.Perf_Utf8String.IsAscii(Input: EnglishAllAscii)

Conclusion Base Diff Base/Diff Modality Operating System Bit Processor Name Base Runtime Diff Runtime
Same 21236.28 21117.76 1.01 Windows 10.0.18363.1016 Arm Microsoft SQ1 3.0 GHz .NET Core 3.1.6 5.0.100-rc.1.20418.3
Same 3660.66 3453.20 1.06 Windows 10.0.18363.959 X64 Intel Xeon CPU E5-1650 v4 3.60GHz .NET Core 3.1.6 5.0.100-rc.1.20418.3
Faster 3780.81 3095.66 1.22 Windows 10.0.19041.450 X64 Intel Core i7-6700 CPU 3.40GHz (Skylake) .NET Core 3.1.6 5.0.100-rc.1.20419.9
Slower 3548.77 7006.60 0.51 Windows 10.0.18363.959 X86 Intel Xeon CPU E5-1650 v4 3.60GHz .NET Core 3.1.6 5.0.100-rc.1.20420.14
Slower 4134.58 7835.15 0.53 Windows 10.0.19041.450 X86 Intel Core i7-5557U CPU 3.10GHz (Broadwell) .NET Core 3.1.6 5.0.100-rc.1.20419.5
Same 30655.72 42199.20 0.73 bimodal ubuntu 18.04 Arm64 Unknown processor .NET Core 3.1.6 6.0.100-alpha.1.20421.6

Docs

Profiling workflow for dotnet/runtime repository
Benchmarking workflow for dotnet/runtime repository

@DrewScoggins this regression did not get detected by the bot because benchmark was added just a few days ago, so everything is 👍

Metadata

Metadata

Type

No type

Projects

No projects

Relationships

None yet

Development

No branches or pull requests

Issue actions