Skip to content

[perf] System.Memory.Span.** and System.Memory.ReadOnly.** performance regressions in Mono AOT x64 microbenchmarks from Preview 5 to Preview 7 #89247

@kotlarmilos

Description

@kotlarmilos

Description

The following performance regressions occurred between the Preview 4 snapshot (May 2nd, 2023) and Preview 7 snapshot (July 19th, 2023).

The configuration used for the benchmarks is Mono AOT with LLVM on x64 ubuntu 18.04.

Name Baseline Value Compare Value % Difference
System.Net.Tests.Perf_WebUtility.HtmlDecode_Entities 793.41 1068.41 34.66
System.Memory.Span<Int32>.LastIndexOfValue(Size: 4) 10.6 30.11 184.06
System.Memory.Span<Int32>.IndexOfValue(Size: 512) 186.47 610.48 227.39
System.Memory.Span<Int32>.IndexOfValue(Size: 4) 11.31 40.59 258.89
System.Memory.Span<Int32>.BinarySearch(Size: 4) 20.89 21.95 5.07
System.Memory.Span<Char>.SequenceEqual(Size: 4) 23.92 33.69 40.84
System.Memory.Span<Char>.Reverse(Size: 4) 11.19 14.47 29.31
System.Memory.Span<Char>.LastIndexOfValue(Size: 4) 10.6 12.61 18.96
System.Memory.Span<Char>.IndexOfValue(Size: 512) 186.48 340.74 82.72
System.Memory.Span<Char>.IndexOfValue(Size: 33) 20.49 65.79 221.08
System.Memory.Span<Char>.IndexOfAnyFourValues(Size: 4) 28.18 39.38 39.74
System.Memory.Span<Byte>.Reverse(Size: 4) 23.92 27.06 13.13
System.Memory.Span<Byte>.LastIndexOfAnyValues(Size: 4) 12.2 19.55 60.25
System.Memory.Span<Byte>.IndexOfAnyTwoValues(Size: 4) 13.28 20.79 56.55
System.Memory.Span<Byte>.IndexOfAnyFourValues(Size: 4) 29.86 38.39 28.57
System.Memory.ReadOnlySpan.IndexOfString(input: だだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだxだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだ, value: x, comparisonType: Ordinal) 359.55 615.97 71.32
System.Memory.ReadOnlySpan.IndexOfString(input: だだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだすだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだ, value: す, comparisonType: Ordinal) 46.6 112.47 141.35
System.Memory.ReadOnlySpan.IndexOfString(input: Hello Worldbbbbbbbbbbbbbbcbbbbbbbbbbbbbbbbbbba!, value: y, comparisonType: Ordinal) 44.77 81.37 81.75
System.Memory.ReadOnlySpan.IndexOfString(input: Hello WorldbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbareallyreallylongHello WorldbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbareallyreallylongHello Worldbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbareallyreallylong!xyz, value: ~, comparisonType: Ordinal) 143.47 237.72 65.69
System.Memory.ReadOnlySequence.Slice_Start(Segment: Single) 10.32 12.79 23.93

Metadata

Metadata

Assignees

No one assigned

    Type

    No type

    Projects

    No projects

    Milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions