-
Notifications
You must be signed in to change notification settings - Fork 5.3k
Description
Description
This report provides an overview of the major performance improvements and regressions Mono AOT from Preview 5 to Preview 7. The purpose of this analysis is to identify any performance improvements and regressions between the two snapshots and mitigate the impact within the .NET 8 release. The regression in the performance of occurred on May 11th, 2023. To evaluate the extent of this regression, we will compare the Preview 4 snapshot from May 2nd, 2023, with the Preview 7 snapshot from July 19th, 2023.
The configuration used for the benchmarks is Mono AOT with LLVM on x64 ubuntu 18.04.
Regressions
A total of 156 microbenchmarks regressed more than 5% during the between May 2nd and July 19th, 2023. Some of them may be noise in measurements, so the analysis should be taken dubiously and readers are encouraged to examine benchmark reports for thorough analysis.
| Name | Baseline Value | Compare Value | % Difference |
|---|---|---|---|
| System.Perf_Convert.ToBase64CharArray(binaryDataSize: 1024, formattingOptions: None) | 1836.06 | 7554.54 | 311.45 |
| System.Memory.Span<Int32>.IndexOfValue(Size: 4) | 11.31 | 40.59 | 258.89 |
| System.Tests.Perf_Enum.HasFlag | 0.08 | 0.28 | 250 |
| System.Memory.Span<Int32>.IndexOfValue(Size: 512) | 186.47 | 610.48 | 227.39 |
| Microsoft.Extensions.Primitives.StringSegmentBenchmark.LastIndexOf | 14.61 | 47.51 | 225.19 |
| System.Memory.Span<Char>.IndexOfValue(Size: 33) | 20.49 | 65.79 | 221.08 |
| System.Collections.ContainsTrue<Int32>.ICollection(Size: 512) | 102156.81 | 309156.44 | 202.63 |
| System.Collections.ContainsFalse<Int32>.ICollection(Size: 512) | 194446.04 | 577782.73 | 197.14 |
| System.Collections.ContainsTrue<Int32>.ImmutableArray(Size: 512) | 106299.93 | 313108.63 | 194.55 |
| System.Memory.Span<Int32>.LastIndexOfValue(Size: 4) | 10.6 | 30.11 | 184.06 |
| System.Collections.Tests.Perf_BitArray.BitArrayNot(Size: 512) | 156.05 | 387.13 | 148.08 |
| System.Memory.ReadOnlySpan.IndexOfString(input: だだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだすだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだ, value: す, comparisonType: Ordinal) | 46.6 | 112.47 | 141.35 |
| System.Globalization.Tests.StringSearch.LastIndexOf_Word_NotFound(Options: (en-US, Ordinal, False)) | 232.74 | 522.51 | 124.5 |
| System.Text.Json.Tests.Utf8JsonReaderCommentsTests.Utf8JsonReaderCommentParsing(CommentHandling: Allow, SegmentSize: 100, TestCase: LongMultiLine) | 41771.44 | 83590.36 | 100.11 |
| System.Text.RegularExpressions.Tests.Perf_Regex_Common.OneNodeBacktracking(Options: IgnoreCase, Compiled) | 303.51 | 556.79 | 83.45 |
| System.Memory.Span<Char>.IndexOfValue(Size: 512) | 186.48 | 340.74 | 82.72 |
| System.Memory.ReadOnlySpan.IndexOfString(input: Hello Worldbbbbbbbbbbbbbbcbbbbbbbbbbbbbbbbbbba!, value: y, comparisonType: Ordinal) | 44.77 | 81.37 | 81.75 |
| System.IO.Tests.Perf_Path.GetFileNameWithoutExtension | 72.17 | 130.12 | 80.3 |
| System.Memory.ReadOnlySpan.IndexOfString(input: だだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだxだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだだ, value: x, comparisonType: Ordinal) | 359.55 | 615.97 | 71.32 |
| System.Tests.Perf_Boolean.ToString(value: True) | 0.21 | 0.35 | 66.67 |
| System.Memory.ReadOnlySpan.IndexOfString(input: Hello WorldbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbareallyreallylongHello WorldbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbareallyreallylongHello Worldbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbareallyreallylong!xyz, value: ~, comparisonType: Ordinal) | 143.47 | 237.72 | 65.69 |
| System.Tests.Perf_String.Replace_Char(text: This is a very nice sentence, oldChar: 'z', newChar: 'y') | 28.82 | 47.39 | 64.43 |
| System.Memory.Span<Byte>.LastIndexOfAnyValues(Size: 4) | 12.2 | 19.55 | 60.25 |
| System.Text.RegularExpressions.Tests.Perf_Regex_Common.MatchWord(Options: IgnoreCase, Compiled) | 528.17 | 833.11 | 57.74 |
| System.Tests.Perf_Single.Parse(value: 12345) | 112.2 | 175.82 | 56.7 |
| System.Memory.Span<Byte>.IndexOfAnyTwoValues(Size: 4) | 13.28 | 20.79 | 56.55 |
| System.Text.RegularExpressions.Tests.Perf_Regex_Common.ReplaceWords(Options: Compiled) | 12433.17 | 19087.83 | 53.52 |
| System.Tests.Perf_String.Replace_String(text: This is a very nice sentence. This is another very nice sentence., oldValue: a, newValue: ) | 208.84 | 315.4 | 51.02 |
| System.Collections.IterateFor<String>.ReadOnlySpan(Size: 512) | 461.08 | 683.44 | 48.23 |
| Microsoft.Extensions.DependencyInjection.TimeToFirstService.Singleton(Mode: Dynamic) | 7861.42 | 11568.24 | 47.15 |
| System.Text.RegularExpressions.Tests.Perf_Regex_Common.IP_IsNotMatch(Options: Compiled) | 346.94 | 510 | 47 |
| System.IO.Tests.StringReaderReadLineTests.ReadLine(LineLengthRange: [ 9, 32]) | 59315.82 | 85012.82 | 43.32 |
| Microsoft.Extensions.DependencyInjection.TimeToFirstService.Transient(Mode: Runtime) | 7850.04 | 11234.83 | 43.12 |
| System.Text.Json.Tests.Perf_Get.GetString | 27491.32 | 39333.15 | 43.07 |
| Microsoft.Extensions.DependencyInjection.TimeToFirstService.Transient(Mode: Dynamic) | 7739.43 | 11039.51 | 42.64 |
| System.Numerics.Tests.Perf_VectorOf<UInt16>.EqualsBenchmark | 0.92 | 1.31 | 42.39 |
| System.Memory.Span<Char>.SequenceEqual(Size: 4) | 23.92 | 33.69 | 40.84 |
| System.Memory.Span<Char>.IndexOfAnyFourValues(Size: 4) | 28.18 | 39.38 | 39.74 |
| System.Buffers.Text.Tests.Utf8ParserTests.TryParseUInt64(value: 18446744073709551615) | 41.01 | 57.29 | 39.7 |
| System.Tests.Perf_Environment.SetEnvironmentVariable | 149.69 | 204.17 | 36.4 |
| System.Net.Tests.Perf_WebUtility.HtmlDecode_Entities | 793.41 | 1068.41 | 34.66 |
| System.Tests.Perf_String.Split(s: A B C D E F G H I J K L M N O P Q R S T U V W X Y Z, arr: [' '], options: None) | 771.45 | 1034.74 | 34.13 |
| System.Collections.IterateFor<String>.Array(Size: 512) | 347.92 | 460.09 | 32.24 |
| System.Text.RegularExpressions.Tests.Perf_Regex_Common.Uri_IsNotMatch(Options: IgnoreCase, Compiled) | 367.94 | 481.19 | 30.78 |
| System.IO.Tests.StreamReaderReadToEndTests.ReadToEnd(LineLengthRange: [ 1, 8]) | 302363619.79 | 393413008.92 | 30.11 |
| System.Numerics.Tests.Perf_VectorOf<Byte>.EqualsStaticBenchmark | 31.84 | 41.26 | 29.59 |
| System.Memory.Span<Char>.Reverse(Size: 4) | 11.19 | 14.47 | 29.31 |
| System.Memory.Span<Byte>.IndexOfAnyFourValues(Size: 4) | 29.86 | 38.39 | 28.57 |
| System.Linq.Tests.Perf_Enumerable.Sum(input: IEnumerable) | 563.21 | 722.65 | 28.31 |
| System.Text.Tests.Perf_Encoding.GetChars(size: 16, encName: utf-8) | 134.63 | 172.69 | 28.27 |
| System.Tests.Perf_Double.Parse(value: -1.7976931348623157e+308) | 224.55 | 283.09 | 26.07 |
| System.Numerics.Tests.Perf_VectorOf<SByte>.LessThanOrEqualAllBenchmark | 24.49 | 30.85 | 25.97 |
| System.IO.Tests.Perf_File.ReadAllLines | 49709.46 | 61925.36 | 24.57 |
| System.Tests.Perf_Double.Parse(value: 1.7976931348623157e+308) | 221.62 | 274.76 | 23.98 |
| System.Numerics.Tests.Perf_VectorOf<Int16>.BitwiseOrBenchmark | 2.88 | 3.57 | 23.96 |
| System.Memory.ReadOnlySequence.Slice_Start(Segment: Single) | 10.32 | 12.79 | 23.93 |
| System.IO.Tests.StreamReaderReadLineTests.ReadLine(LineLengthRange: [ 33, 128]) | 120659.04 | 148821.05 | 23.34 |
| System.Numerics.Tests.Perf_Vector3.NegateOperatorBenchmark | 9.78 | 11.96 | 22.29 |
| System.IO.Tests.Perf_Directory.EnumerateFiles | 6526091.4 | 7960634.37 | 21.98 |
| System.Security.Cryptography.Primitives.Tests.Performance.Perf_FixedTimeEquals.FixedTimeEquals_256Bit_VersusZero | 50.04 | 60.86 | 21.62 |
| System.Tests.Perf_Uri.Ctor(input: https://contoso.com) | 286.02 | 347.22 | 21.4 |
| System.Security.Cryptography.Primitives.Tests.Performance.Perf_FixedTimeEquals.FixedTimeEquals_256Bit_AllBitsDifferent | 50.51 | 60.75 | 20.27 |
| System.Numerics.Tests.Perf_Vector2.DistanceBenchmark | 10.59 | 12.71 | 20.02 |
| System.Tests.Perf_Int16.TryParse(value: 32767) | 46.11 | 55.15 | 19.61 |
| System.Numerics.Tests.Perf_Vector3.DivideByVector3Benchmark | 10.94 | 13.04 | 19.2 |
| System.Memory.Span<Char>.LastIndexOfValue(Size: 4) | 10.6 | 12.61 | 18.96 |
| System.Collections.Tests.Perf_BitArray.BitArrayCopyToBoolArray(Size: 512) | 7519.8 | 8942.84 | 18.92 |
| System.Numerics.Tests.Perf_VectorOf<SByte>.GreaterThanOrEqualAllBenchmark | 2.11 | 2.5 | 18.48 |
| System.Tests.Perf_String.IndexOfAny | 115.42 | 136.59 | 18.34 |
| System.Numerics.Tests.Perf_VectorOf<Int32>.EqualsBenchmark | 0.81 | 0.95 | 17.28 |
| System.Tests.Perf_Int32.TryParse(value: 2147483647) | 55.94 | 65.38 | 16.88 |
| System.Tests.Perf_Enum.Compare | 2.97 | 3.47 | 16.84 |
| Microsoft.Extensions.Primitives.Performance.StringValuesBenchmark.Count_String | 1.31 | 1.53 | 16.79 |
| System.Diagnostics.Perf_Activity.EnumerateActivityEventsLarge | 6577.13 | 7656.93 | 16.42 |
| System.Numerics.Tests.Perf_Vector3.AddFunctionBenchmark | 10.57 | 12.28 | 16.18 |
| System.Numerics.Tests.Perf_VectorOf<Int16>.InequalityOperatorBenchmark | 0.44 | 0.51 | 15.91 |
| System.Collections.Tests.Perf_PriorityQueue<Int32, Int32>.Enumerate(Size: 10) | 48.24 | 55.58 | 15.22 |
| System.Tests.Perf_Int32.Parse(value: 2147483647) | 58.57 | 67.48 | 15.21 |
| System.Collections.IterateForEach<String>.IEnumerable(Size: 512) | 2962.18 | 3405.16 | 14.95 |
| System.Tests.Perf_Int32.TryParse(value: 12345) | 41.25 | 47.36 | 14.81 |
| System.Linq.Tests.Perf_Enumerable.FirstWithPredicate_LastElementMatches(input: Array) | 649.19 | 738.11 | 13.7 |
| System.Memory.Span<Byte>.Reverse(Size: 4) | 23.92 | 27.06 | 13.13 |
| System.Collections.Tests.Add_Remove_SteadyState<String>.Queue(Count: 512) | 21.68 | 24.49 | 12.96 |
| System.Numerics.Tests.Perf_Vector3.MaxBenchmark | 13.26 | 14.97 | 12.9 |
| PerfLabTests.CastingPerf2.CastingPerf.IFooObjIsIFooInterAlia | 174244.47 | 195626.09 | 12.27 |
| System.Numerics.Tests.Perf_VectorOf<UInt32>.ExclusiveOrOperatorBenchmark | 2.82 | 3.16 | 12.06 |
| System.Tests.Perf_UInt16.TryParse(value: 0) | 29.02 | 32.44 | 11.78 |
| System.Tests.Perf_Uri.CtorIdnHostPathAndQuery(input: https://contoso.com/path/with?key=value#fragment) | 888.36 | 992.32 | 11.7 |
| System.Collections.IndexerSet<String>.List(Size: 512) | 2918.13 | 3256.95 | 11.61 |
| System.Collections.IterateForEach<Int32>.Dictionary(Size: 512) | 2918.23 | 3256.52 | 11.59 |
| System.Text.Json.Document.Tests.Perf_DocumentParse.Parse(IsDataIndented: False, TestRandomAccess: True, TestCase: HelloWorld) | 881.58 | 983.05 | 11.51 |
| System.Numerics.Tests.Perf_Vector3.ReflectBenchmark | 39.45 | 43.89 | 11.25 |
| System.IO.Tests.Perf_Path.GetTempPath | 475.3 | 528.5 | 11.19 |
| System.Collections.IndexerSet<Int32>.List(Size: 512) | 1321.05 | 1468.21 | 11.14 |
| System.Text.Json.Tests.Perf_Strings.WriteStringsUtf16(Formatted: False, SkipValidation: False, Escaped: AllEscaped) | 192543548.4 | 213535368.27 | 10.9 |
| System.IO.Tests.Perf_Path.GetFullPathForLegacyLength | 892.08 | 988.29 | 10.78 |
| PerfLabTests.EnumPerf.ObjectGetTypeNoBoxing | 0.28 | 0.31 | 10.71 |
| GuardedDevirtualization.TwoClassInterface.Call(testInput: pB = 1.00) | 1.79 | 1.98 | 10.61 |
| System.IO.Tests.Perf_FileInfo.ctor_str | 260.26 | 287.06 | 10.3 |
| System.Numerics.Tests.Perf_VectorOf<UInt16>.ExclusiveOrOperatorBenchmark | 2.82 | 3.11 | 10.28 |
| System.Tests.Perf_Int64.TryParseSpan(value: 12345) | 41.94 | 46.03 | 9.75 |
| System.Tests.Perf_String.CtorCharCount(size: 10) | 25.82 | 28.31 | 9.64 |
| System.Numerics.Tests.Perf_VectorOf<UInt64>.DotBenchmark | 2.94 | 3.22 | 9.52 |
| System.Text.Json.Tests.Perf_Get.GetBoolean | 364.4 | 398.96 | 9.48 |
| System.Numerics.Tests.Perf_Vector3.DivideByScalarBenchmark | 16.46 | 18.01 | 9.42 |
| System.Tests.Perf_SByte.Parse(value: -128) | 41.35 | 45.24 | 9.41 |
| System.Threading.Tests.Perf_ThreadStatic.SetThreadStatic | 2.17 | 2.37 | 9.22 |
| System.Collections.Tests.Perf_BitArray.BitArrayAnd(Size: 4) | 4.94 | 5.39 | 9.11 |
| System.Linq.Tests.Perf_Enumerable.SingleWithPredicate_LastElementMatches(input: List) | 721.62 | 786.92 | 9.05 |
| System.Numerics.Tests.Perf_VectorOf<SByte>.SubtractionOperatorBenchmark | 2.79 | 3.04 | 8.96 |
| Benchmark.GetChildKeysTests.AddChainedConfigurationEmpty | 47952840.67 | 52071572.88 | 8.59 |
| System.Numerics.Tests.Perf_VectorOf<Double>.SubtractBenchmark | 2.92 | 3.17 | 8.56 |
| System.Numerics.Tests.Perf_VectorOf<Single>.MultiplyOperatorBenchmark | 2.83 | 3.07 | 8.48 |
| System.Collections.ContainsTrue<String>.HashSet(Size: 512) | 17877.2 | 19374.79 | 8.38 |
| System.Numerics.Tests.Perf_VectorOf<UInt32>.GreaterThanAnyBenchmark | 5.65 | 6.12 | 8.32 |
| System.IO.Tests.Perf_FileStream.Read_NoBuffering(fileSize: 1048576, userBufferSize: 16384, options: None) | 89284.96 | 96396 | 7.96 |
| System.Tests.Perf_String.CtorCharCount(size: 1) | 21.53 | 23.2 | 7.76 |
| System.Tests.Perf_String.Substring_Int(s: dzsdzsDDZSDZSDZSddsz, i: 0) | 2.22 | 2.39 | 7.66 |
| System.Runtime.Intrinsics.Tests.Perf_Vector128Of<SByte>.GetHashCodeBenchmark | 98.32 | 105.83 | 7.64 |
| Microsoft.Extensions.Logging.EventSourceLogger.NestedScopes_TwoMessages(HasSubscribers: False, Json: False) | 135.42 | 145.7 | 7.59 |
| System.Text.RegularExpressions.Tests.Perf_Regex_Cache.IsMatch(total: 40000, unique: 1600, cacheSize: 3200) | 18834360.75 | 20212941.8 | 7.32 |
| System.Collections.Tests.Perf_BitArray.BitArrayNot(Size: 4) | 3.83 | 4.11 | 7.31 |
| System.Linq.Tests.Perf_Enumerable.FirstWithPredicate_LastElementMatches(input: IEnumerable) | 651.45 | 698.17 | 7.17 |
| System.Runtime.Intrinsics.Tests.Perf_Vector128Of<UInt64>.DivideBenchmark | 18.89 | 20.22 | 7.04 |
| System.Text.Json.Tests.Perf_Strings.WriteStringsUtf16(Formatted: True, SkipValidation: False, Escaped: AllEscaped) | 193792673.31 | 207213555.8 | 6.93 |
| System.Tests.Perf_Char.Char_ToLower(c: '你', cultureName: zh-Hans) | 85.97 | 91.74 | 6.71 |
| System.Numerics.Tests.Perf_BigInteger.ToByteArray(numberString: 123) | 30.31 | 32.27 | 6.47 |
| System.Numerics.Tests.Perf_Matrix4x4.CreateLookAtBenchmark | 154.37 | 164.32 | 6.45 |
| System.Collections.Tests.Perf_BitArray.BitArrayByteArrayCtor(Size: 512) | 1418.08 | 1509.38 | 6.44 |
| System.Numerics.Tests.Perf_VectorOf<Single>.LessThanBenchmark | 19.45 | 20.7 | 6.43 |
| System.IO.Tests.BinaryWriterTests.WriteSingle | 16.59 | 17.65 | 6.39 |
| System.Buffers.Tests.ReadOnlySequenceTests<Byte>.FirstSpanMemory | 20.75 | 22.07 | 6.36 |
| System.Text.Json.Document.Tests.Perf_DocumentParse.Parse(IsDataIndented: True, TestRandomAccess: True, TestCase: BasicJson) | 6017.26 | 6396.89 | 6.31 |
| System.Collections.Concurrent.Count<String>.Queue(Size: 512) | 7.93 | 8.43 | 6.31 |
| System.Linq.Tests.Perf_Enumerable.SkipHalfTakeHalf(input: IEnumerable) | 895.63 | 951.91 | 6.28 |
| System.Text.Tests.Perf_Encoding.GetByteCount(size: 16, encName: ascii) | 8.81 | 9.36 | 6.24 |
| System.Numerics.Tests.Perf_VectorOf<UInt32>.DotBenchmark | 4.8 | 5.09 | 6.04 |
| System.Collections.Tests.Perf_BitArray.BitArrayBoolArrayCtor(Size: 512) | 825.32 | 875.1 | 6.03 |
| System.Text.Tests.Perf_Encoding.GetByteCount(size: 512, encName: ascii) | 8.81 | 9.34 | 6.02 |
| System.IO.Tests.BinaryWriterTests.WriteUInt64 | 17.46 | 18.49 | 5.9 |
| System.Collections.CtorFromCollection<Int32>.ConcurrentStack(Size: 512) | 6904.3 | 7311.26 | 5.89 |
| StoreBlock.AnyLocation.InitBlockAllOnes64 | 6.43 | 6.8 | 5.75 |
| Benchstone.MDBenchI.MDMulMatrix.Test | 960302147.47 | 1015204516 | 5.72 |
| System.IO.Tests.Perf_StreamWriter.WritePartialCharArray(writeLength: 100) | 7040317380.69 | 7436111839.2 | 5.62 |
| System.Numerics.Tests.Perf_VectorOf<Double>.EqualityOperatorBenchmark | 0.36 | 0.38 | 5.56 |
| System.MathBenchmarks.Single.FusedMultiplyAdd | 34642.37 | 36545.44 | 5.49 |
| System.Buffers.Text.Tests.Utf8ParserTests.TryParseBool(value: true) | 11.85 | 12.5 | 5.49 |
| Benchstone.BenchI.MulMatrix.Test | 649544783.21 | 685115800.08 | 5.48 |
| System.Numerics.Tests.Perf_VectorOf<Byte>.MaxBenchmark | 41.53 | 43.74 | 5.32 |
| System.Collections.Tests.Perf_BitArray.BitArraySet(Size: 4) | 9.86 | 10.38 | 5.27 |
| System.Tests.Perf_Random.NextSingle | 13.88 | 14.61 | 5.26 |
| System.Numerics.Tests.Constructor.ConstructorBenchmark_Int32 | 22.42 | 23.59 | 5.22 |
| System.Tests.Perf_UInt32.ParseSpan(value: 12345) | 40.52 | 42.6 | 5.13 |
| System.Memory.Span<Int32>.BinarySearch(Size: 4) | 20.89 | 21.95 | 5.07 |
| System.Numerics.Tests.Perf_Matrix3x2.CreateRotationWithCenterBenchmark | 61.26 | 64.36 | 5.06 |
| System.Collections.Sort<Int32>.Array_Comparison(Size: 512) | 28171.27 | 29595.3 | 5.05 |
Here is a breakdown of the regressions grouped by libraries.
System.Text.**
Share UTF8 converters between coreclr and mono in #85558 regressed encoding microbenchmarks reported in #89242.
System.Tests.Perf.** and System.Perf.**
Changes in IUtf8SpanParsable on the primitive numeric types in #86875 regressed .Parse microbenchmarks reported in #89243.
System.Memory.Span.** and System.Memory.ReadOnly.**
There are several changes in #88101, #86655, and #85819 that introduced extra code and may have affected performance of microbenchmarks reported in #89247 and
#89250.
System.IO.**
StreamReader and Path microbenchmarks have regressed in #89249.
System.Collections.** and System.Buffers.**
BitArray and IterateFor microbenchmarks have regressed in #89251.
Microsoft.Extensions**
There are recent changes for debugger support #88960 or #88082, but it is unlikely they have caused the regressions reported in #89252.
Improvements
A total of 198 microbenchmarks improved more than 5% during the between May 2nd and July 19th, 2023.
| Name | Baseline Value | Compare Value | % Difference |
|---|---|---|---|
| System.Runtime.Intrinsics.Tests.Perf_Vector128Of<SByte>.LessThanAnyBenchmark | 27.75 | 0.35 | -98.74 |
| System.Runtime.Intrinsics.Tests.Perf_Vector128Of<Byte>.LessThanAnyBenchmark | 28.82 | 0.41 | -98.58 |
| System.Runtime.Intrinsics.Tests.Perf_Vector128Of<Int16>.GreaterThanAllBenchmark | 18.14 | 0.27 | -98.51 |
| System.Runtime.Intrinsics.Tests.Perf_Vector128Float.LessThanAnyBenchmark | 10.92 | 0.24 | -97.8 |
| System.Runtime.Intrinsics.Tests.Perf_Vector128Of<Int32>.LessThanAnyBenchmark | 8.59 | 0.24 | -97.21 |
| System.Runtime.Intrinsics.Tests.Perf_Vector128Float.EqualsBenchmark | 38.83 | 1.26 | -96.76 |
| System.Runtime.Intrinsics.Tests.Perf_Vector128Of<UInt16>.GreaterThanAllBenchmark | 17.39 | 0.58 | -96.66 |
| System.Runtime.Intrinsics.Tests.Perf_Vector128Of<Single>.SumBenchmark | 9.48 | 0.33 | -96.52 |
| System.Runtime.Intrinsics.Tests.Perf_Vector128Of<UInt32>.LessThanAnyBenchmark | 8.59 | 0.54 | -93.71 |
| System.Runtime.Intrinsics.Tests.Perf_Vector128Of<Double>.EqualityOperatorBenchmark | 3.53 | 0.24 | -93.2 |
| System.Runtime.Intrinsics.Tests.Perf_Vector128Of<SByte>.GreaterThanBenchmark | 43.5 | 3.05 | -92.99 |
| System.Runtime.Intrinsics.Tests.Perf_Vector128Of<SByte>.GreaterThanAnyBenchmark | 3.75 | 0.28 | -92.53 |
| System.Runtime.Intrinsics.Tests.Perf_Vector128Of<SByte>.AddOperatorBenchmark | 36 | 2.81 | -92.19 |
| System.Runtime.Intrinsics.Tests.Perf_Vector128Of<Byte>.GreaterThanBenchmark | 37.99 | 3.06 | -91.95 |
| System.Runtime.Intrinsics.Tests.Perf_Vector128Of<Byte>.AddOperatorBenchmark | 35.33 | 2.87 | -91.88 |
| System.Runtime.Intrinsics.Tests.Perf_Vector128Of<SByte>.NegateBenchmark | 33.32 | 2.79 | -91.63 |
| System.Runtime.Intrinsics.Tests.Perf_Vector128Of<Byte>.NegateBenchmark | 32.9 | 2.84 | -91.37 |
| System.Runtime.Intrinsics.Tests.Perf_Vector128Of<SByte>.LessThanAllBenchmark | 3.7 | 0.33 | -91.08 |
| System.Runtime.Intrinsics.Tests.Perf_Vector128Of<Single>.AbsBenchmark | 31.45 | 2.83 | -91 |
| System.Runtime.Intrinsics.Tests.Perf_Vector128Of<UInt16>.LessThanOrEqualBenchmark | 31.46 | 2.97 | -90.56 |
| System.Runtime.Intrinsics.Tests.Perf_Vector128Of<UInt16>.NegateBenchmark | 27.08 | 2.58 | -90.47 |
| System.Runtime.Intrinsics.Tests.Perf_Vector128Int.SubtractBenchmark | 29.47 | 2.86 | -90.3 |
| System.Runtime.Intrinsics.Tests.Perf_Vector128Of<Int16>.LessThanOrEqualBenchmark | 31.44 | 3.06 | -90.27 |
| System.Runtime.Intrinsics.Tests.Perf_Vector128Float.InequalityOperatorBenchmark | 3.83 | 0.38 | -90.08 |
| System.Runtime.Intrinsics.Tests.Perf_Vector128Float.LessThanBenchmark | 27.41 | 2.73 | -90.04 |
| System.Runtime.Intrinsics.Tests.Perf_Vector128Of<Single>.GreaterThanOrEqualBenchmark | 28.1 | 2.82 | -89.96 |
| System.Runtime.Intrinsics.Tests.Perf_Vector128Of<Single>.MaxBenchmark | 28.26 | 2.84 | -89.95 |
| System.Runtime.Intrinsics.Tests.Perf_Vector128Float.MinBenchmark | 28.28 | 2.85 | -89.92 |
| System.Runtime.Intrinsics.Tests.Perf_Vector128Float.EqualsStaticBenchmark | 27.34 | 2.76 | -89.9 |
| System.Runtime.Intrinsics.Tests.Perf_Vector128Of<Int16>.GreaterThanAnyBenchmark | 3.22 | 0.33 | -89.75 |
| System.Runtime.Intrinsics.Tests.Perf_Vector128Of<Single>.EqualsStaticBenchmark | 27.22 | 2.85 | -89.53 |
| System.Runtime.Intrinsics.Tests.Perf_Vector128Of<Int16>.NegateBenchmark | 27.13 | 3.01 | -88.91 |
| System.Runtime.Intrinsics.Tests.Perf_Vector128Of<Single>.AddBenchmark | 25.04 | 2.82 | -88.74 |
| System.Runtime.Intrinsics.Tests.Perf_Vector128Of<Single>.EqualityOperatorBenchmark | 3.77 | 0.43 | -88.59 |
| System.Runtime.Intrinsics.Tests.Perf_Vector128Float.MultiplyBenchmark | 25.15 | 2.87 | -88.59 |
| System.Runtime.Intrinsics.Tests.Perf_Vector128Float.AddOperatorBenchmark | 25.17 | 2.88 | -88.56 |
| System.Runtime.Intrinsics.Tests.Perf_Vector128Of<Single>.MultiplyBenchmark | 25.06 | 2.87 | -88.55 |
| System.Runtime.Intrinsics.Tests.Perf_Vector128Of<Int32>.InequalityOperatorBenchmark | 3.32 | 0.38 | -88.55 |
| System.Runtime.Intrinsics.Tests.Perf_Vector128Of<Double>.InequalityOperatorBenchmark | 3.63 | 0.42 | -88.43 |
| System.Runtime.Intrinsics.Tests.Perf_Vector128Of<Single>.InequalityOperatorBenchmark | 3.71 | 0.43 | -88.41 |
| System.Runtime.Intrinsics.Tests.Perf_Vector128Of<Int32>.MinBenchmark | 23.37 | 2.85 | -87.8 |
| System.Runtime.Intrinsics.Tests.Perf_Vector128Int.LessThanOrEqualBenchmark | 23.16 | 2.89 | -87.52 |
| System.Runtime.Intrinsics.Tests.Perf_Vector128Of<Int32>.EqualsStaticBenchmark | 22.52 | 2.84 | -87.39 |
| System.Runtime.Intrinsics.Tests.Perf_Vector128Of<Int32>.LessThanBenchmark | 22.49 | 2.87 | -87.24 |
| System.Runtime.Intrinsics.Tests.Perf_Vector128.ConvertFloatToIntBenchmark | 20.35 | 2.61 | -87.17 |
| System.Runtime.Intrinsics.Tests.Perf_Vector128Int.GreaterThanOrEqualBenchmark | 22.99 | 2.95 | -87.17 |
| System.Runtime.Intrinsics.Tests.Perf_Vector128Of<UInt32>.InequalityOperatorBenchmark | 3.19 | 0.41 | -87.15 |
| System.Runtime.Intrinsics.Tests.Perf_Vector128Int.AddBenchmark | 21 | 2.71 | -87.1 |
| System.Runtime.Intrinsics.Tests.Perf_Vector128Of<UInt32>.LessThanBenchmark | 22.6 | 2.98 | -86.81 |
| System.Runtime.Intrinsics.Tests.Perf_Vector128Of<UInt32>.EqualsBenchmark | 6.17 | 0.82 | -86.71 |
| System.Runtime.Intrinsics.Tests.Perf_Vector128Int.UnaryNegateOperatorBenchmark | 20.35 | 2.75 | -86.49 |
| System.Runtime.Intrinsics.Tests.Perf_Vector128Of<UInt32>.AddOperatorBenchmark | 20.85 | 2.84 | -86.38 |
| System.Runtime.Intrinsics.Tests.Perf_Vector128Of<Byte>.LessThanAllBenchmark | 2.93 | 0.41 | -86.01 |
| System.Runtime.Intrinsics.Tests.Perf_Vector128Of<UInt32>.EqualsStaticBenchmark | 22.64 | 3.17 | -86 |
| System.Runtime.Intrinsics.Tests.Perf_Vector128Of<Double>.SumBenchmark | 2.9 | 0.42 | -85.52 |
| System.Runtime.Intrinsics.Tests.Perf_Vector128Of<Int32>.AddOperatorBenchmark | 20.98 | 3.07 | -85.37 |
| System.Runtime.Intrinsics.Tests.Perf_Vector128Of<Int32>.EqualsBenchmark | 5.89 | 0.89 | -84.89 |
| System.Runtime.Intrinsics.Tests.Perf_Vector128Of<UInt16>.GreaterThanAnyBenchmark | 3.2 | 0.53 | -83.44 |
| System.Runtime.Intrinsics.Tests.Perf_Vector128Of<Byte>.GreaterThanAnyBenchmark | 3.27 | 0.56 | -82.87 |
| System.Runtime.Intrinsics.Tests.Perf_Vector128Of<Int64>.BitwiseAndOperatorBenchmark | 10.94 | 2.25 | -79.43 |
| System.Runtime.Intrinsics.Tests.Perf_Vector128Of<Double>.GreaterThanOrEqualBenchmark | 15.03 | 3.11 | -79.31 |
| System.Runtime.Intrinsics.Tests.Perf_Vector128Of<Double>.EqualsStaticBenchmark | 14.49 | 3.04 | -79.02 |
| System.Runtime.Intrinsics.Tests.Perf_Vector128Of<Double>.MaxBenchmark | 14.73 | 3.1 | -78.95 |
| System.Runtime.Intrinsics.Tests.Perf_Vector128Of<UInt64>.GreaterThanOrEqualBenchmark | 13.44 | 2.95 | -78.05 |
| System.Runtime.Intrinsics.Tests.Perf_Vector128Of<Double>.MultiplyBenchmark | 12.8 | 2.87 | -77.58 |
| System.Runtime.Intrinsics.Tests.Perf_Vector128Of<Int64>.GreaterThanOrEqualBenchmark | 13.45 | 3.02 | -77.55 |
| System.Runtime.Intrinsics.Tests.Perf_Vector128.FloorDoubleBenchmark | 12.04 | 2.72 | -77.41 |
| System.Runtime.Intrinsics.Tests.Perf_Vector128Of<Int64>.LessThanOrEqualBenchmark | 13.41 | 3.03 | -77.4 |
| System.Runtime.Intrinsics.Tests.Perf_Vector128Of<Int64>.SubtractBenchmark | 12.4 | 2.81 | -77.34 |
| System.Runtime.Intrinsics.Tests.Perf_Vector128Of<UInt64>.UnaryNegateOperatorBenchmark | 11.93 | 2.78 | -76.7 |
| System.Runtime.Intrinsics.Tests.Perf_Vector128Of<Int64>.UnaryNegateOperatorBenchmark | 11.9 | 2.81 | -76.39 |
| System.Runtime.Intrinsics.Tests.Perf_Vector128Of<Double>.AddBenchmark | 12.8 | 3.05 | -76.17 |
| System.Runtime.Intrinsics.Tests.Perf_Vector128Of<UInt64>.LessThanOrEqualBenchmark | 13.9 | 3.41 | -75.47 |
| System.Runtime.Intrinsics.Tests.Perf_Vector128Of<Int64>.AddBenchmark | 12.59 | 3.1 | -75.38 |
| System.Runtime.Intrinsics.Tests.Perf_Vector128Of<UInt64>.AddBenchmark | 12.44 | 3.1 | -75.08 |
| System.Runtime.Intrinsics.Tests.Perf_Vector128Of<Double>.AbsBenchmark | 11.29 | 2.82 | -75.02 |
| System.Runtime.Intrinsics.Tests.Perf_Vector128Int.XorBenchmark | 11.12 | 2.8 | -74.82 |
| System.Runtime.Intrinsics.Tests.Perf_Vector128Of<UInt64>.SubtractBenchmark | 12.59 | 3.18 | -74.74 |
| System.Runtime.Intrinsics.Tests.Perf_Vector128Float.AndNotBenchmark | 11.14 | 2.83 | -74.6 |
| System.Runtime.Intrinsics.Tests.Perf_Vector128Int.BitwiseAndOperatorBenchmark | 11.01 | 2.83 | -74.3 |
| System.Runtime.Intrinsics.Tests.Perf_Vector128Of<Int32>.AndNotBenchmark | 10.92 | 2.81 | -74.27 |
| System.Runtime.Intrinsics.Tests.Perf_Vector128Of<UInt64>.BitwiseAndOperatorBenchmark | 10.87 | 2.82 | -74.06 |
| System.Runtime.Intrinsics.Tests.Perf_Vector128Of<UInt16>.ConditionalSelectBenchmark | 12.03 | 3.13 | -73.98 |
| System.Runtime.Intrinsics.Tests.Perf_Vector128Of<Int32>.ExclusiveOrOperatorBenchmark | 10.99 | 2.89 | -73.7 |
| System.Runtime.Intrinsics.Tests.Perf_Vector128Of<Int16>.ConditionalSelectBenchmark | 12.07 | 3.18 | -73.65 |
| System.Runtime.Intrinsics.Tests.Perf_Vector128Float.ExclusiveOrOperatorBenchmark | 11.63 | 3.1 | -73.34 |
| System.Runtime.Intrinsics.Tests.Perf_Vector128Of<UInt32>.AndNotBenchmark | 11.07 | 3.04 | -72.54 |
| System.Runtime.Intrinsics.Tests.Perf_Vector128Of<Byte>.AndNotBenchmark | 11.01 | 3.05 | -72.3 |
| System.Runtime.Intrinsics.Tests.Perf_Vector128Of<UInt16>.BitwiseAndOperatorBenchmark | 10.98 | 3.06 | -72.13 |
| System.Runtime.Intrinsics.Tests.Perf_Vector128Of<UInt64>.XorBenchmark | 10.87 | 3.04 | -72.03 |
| System.Runtime.Intrinsics.Tests.Perf_Vector128Of<Int64>.XorBenchmark | 10.86 | 3.04 | -72.01 |
| System.Runtime.Intrinsics.Tests.Perf_Vector128Of<Double>.XorBenchmark | 10.89 | 3.1 | -71.53 |
| System.Runtime.Intrinsics.Tests.Perf_Vector128Of<SByte>.AndNotBenchmark | 10.95 | 3.17 | -71.05 |
| System.Runtime.Intrinsics.Tests.Perf_Vector128Of<Int16>.BitwiseAndOperatorBenchmark | 10.9 | 3.16 | -71.01 |
| System.Runtime.Intrinsics.Tests.Perf_Vector128Of<Single>.XorBenchmark | 10.87 | 3.16 | -70.93 |
| System.Runtime.Intrinsics.Tests.Perf_Vector128Of<UInt32>.ExclusiveOrOperatorBenchmark | 10.91 | 3.19 | -70.76 |
| System.IO.Tests.StringReaderReadToEndTests.ReadToEnd(LineLengthRange: [ 1, 8]) | 138.96 | 50.75 | -63.48 |
| System.IO.Tests.StringReaderReadToEndTests.ReadToEnd(LineLengthRange: [ 9, 32]) | 136.74 | 50.4 | -63.14 |
| System.Collections.TryGetValueFalse<Int32, Int32>.FrozenDictionary(Size: 512) | 10605.65 | 4494.55 | -57.62 |
| System.Reflection.Invoke.Property_Set_class | 304.01 | 153.83 | -49.4 |
| System.Threading.Tests.Perf_CancellationToken.CreateLinkedTokenSource1 | 181.74 | 93.54 | -48.53 |
| Exceptions.Handling.CatchAndThrowOtherDeep(kind: Software) | 30045.73 | 16013.38 | -46.7 |
| System.Collections.CtorFromCollection<Int32>.FrozenDictionaryOptimized(Size: 512) | 93350.63 | 50683.63 | -45.71 |
| System.Memory.ReadOnlyMemory<Byte>.Pin(Size: 512) | 190.27 | 103.68 | -45.51 |
| System.Reflection.Invoke.Property_Set_int | 296.31 | 164.67 | -44.43 |
| Exceptions.Handling.ThrowAndCatch(kind: Software) | 2825.03 | 1578.24 | -44.13 |
| System.Tests.Perf_Array.ArrayAssign3D | 15125405.33 | 8477023.28 | -43.96 |
| System.Numerics.Tests.Perf_BigInteger.Subtract(arguments: 16,16 bits) | 31.39 | 17.61 | -43.9 |
| Exceptions.Handling.ThrowAndCatchFinally(kind: Software) | 2824.36 | 1594.45 | -43.55 |
| Exceptions.Handling.TryAndFinallyDeep(kind: Software) | 10139.17 | 6167.95 | -39.17 |
| System.Threading.Tests.Perf_Timer.LongScheduleAndDispose | 476.55 | 292.64 | -38.59 |
| PerfLabTests.CastingPerf.AssignArrayElementByVariance | 213.56 | 132.06 | -38.16 |
| System.Tests.Perf_Enum.GetValues_Generic | 1817.58 | 1125.43 | -38.08 |
| System.Collections.CtorFromCollectionNonGeneric<Int32>.Stack(Size: 512) | 102328.3 | 64125.31 | -37.33 |
| Exceptions.Handling.ThrowAndCatch(kind: ReflectionSoftware) | 9369.86 | 5909.05 | -36.94 |
| System.Threading.Tests.Perf_EventWaitHandle.Set_Reset | 264.98 | 175.21 | -33.88 |
| System.Threading.Tests.Perf_CancellationToken.CreateLinkedTokenSource3 | 284.12 | 191.64 | -32.55 |
| Exceptions.Handling.ThrowAndCatchDeepRecursive(kind: ReflectionHardware) | 19588.37 | 13241.34 | -32.4 |
| System.Reflection.Attributes.GetCustomAttributesMethodOverrideHit | 1686.97 | 1148.26 | -31.93 |
| Exceptions.Handling.ThrowAndCatchDeep(kind: Hardware) | 12504.53 | 8594.42 | -31.27 |
| Exceptions.Handling.ThrowAndCatch_ManyCatchBlocks(kind: ReflectionHardware) | 13488.43 | 9297.79 | -31.07 |
| System.Collections.Concurrent.IsEmpty<Int32>.Stack(Size: 0) | 0.34 | 0.24 | -29.41 |
| System.Xml.Linq.Perf_XName.CreateElement | 151.64 | 109.4 | -27.86 |
| Span.IndexerBench.Ref(length: 1024) | 1108.29 | 820.32 | -25.98 |
| System.Tests.Perf_String.Replace_Char(text: yfesgj0sg1ijslnjsb3uofdz3tbzf6ysgblu3at20nfab2wei1kxfbvsbpzwhanjczcqa2psra3aacxb67qnwbnfp2tok6v0a58l, oldChar: 'b', newChar: '+') | 347.17 | 257.39 | -25.86 |
| System.Reflection.Attributes.GetCustomAttributesMethodOverrideMiss | 1773.92 | 1358.04 | -23.44 |
| System.Memory.Span<Byte>.LastIndexOfAnyValues(Size: 512) | 253.79 | 195.2 | -23.09 |
| System.Reflection.Attributes.IsDefinedMethodBaseHitInherit | 650.27 | 502.85 | -22.67 |
| System.Xml.Linq.Perf_XElement.CreateElementsWithNamespace | 401.32 | 320.54 | -20.13 |
| System.Numerics.Tests.Perf_VectorOf<Int32>.InequalityOperatorBenchmark | 0.5 | 0.4 | -20 |
| System.Reflection.Attributes.IsDefinedClassHit | 447.72 | 362.15 | -19.11 |
| System.Reflection.Invoke.StaticMethod5_ByRefParams_int_string_struct_class_bool | 756.75 | 613.31 | -18.95 |
| System.Tests.Perf_Enum.InterpolateIntoStringBuilder_NonFlags(value: Saturday) | 1049.86 | 852.74 | -18.78 |
| System.Reflection.Attributes.GetCustomAttributesClassMissInherit | 3402.29 | 2781.1 | -18.26 |
| System.Collections.Sort<IntStruct>.List(Size: 512) | 19465.89 | 16107.49 | -17.25 |
| System.Text.RegularExpressions.Tests.Perf_Regex_Common.Ctor(Options: Compiled) | 72073.45 | 59746.26 | -17.1 |
| System.Numerics.Tests.Perf_VectorOf<Byte>.SubtractBenchmark | 3.11 | 2.62 | -15.76 |
| System.Tests.Perf_Enum.InterpolateIntoString(value: 32) | 1036.12 | 875.46 | -15.51 |
| System.Numerics.Tests.Perf_VectorOf<Int16>.LessThanAnyBenchmark | 2.15 | 1.82 | -15.35 |
| System.Collections.CreateAddAndClear<Int32>.List(Size: 512) | 2561.19 | 2193.96 | -14.34 |
| System.Collections.CtorFromCollection<String>.Stack(Size: 512) | 521.71 | 448.42 | -14.05 |
| System.Numerics.Tests.Perf_VectorOf<UInt32>.DivisionOperatorBenchmark | 16.1 | 14.02 | -12.92 |
| PerfLabTests.LowLevelPerf.GenericGenericMethod | 174401.16 | 152339.17 | -12.65 |
| System.Reflection.Invoke.Ctor0_ActivatorCreateInstance_NoParams | 124.41 | 108.7 | -12.63 |
| System.Numerics.Tests.Perf_VectorOf<UInt16>.AbsBenchmark | 3.81 | 3.33 | -12.6 |
| System.Numerics.Tests.Perf_VectorOf<UInt16>.XorBenchmark | 3.13 | 2.74 | -12.46 |
| System.Numerics.Tests.Perf_VectorOf<Int64>.GreaterThanOrEqualAllBenchmark | 2.36 | 2.07 | -12.29 |
| PerfLabTests.GetMember.GetField | 3694839.28 | 3251814.88 | -11.99 |
| System.Numerics.Tests.Perf_VectorOf<UInt32>.SubtractBenchmark | 3.13 | 2.76 | -11.82 |
| System.Numerics.Tests.Perf_VectorOf<UInt64>.GreaterThanAllBenchmark | 2.72 | 2.4 | -11.76 |
| System.Linq.Tests.Perf_Enumerable.EmptyTakeSelectToArray | 30.57 | 27.05 | -11.51 |
| StoreBlock.AnyLocation.CopyBlock16 | 1.13 | 1 | -11.5 |
| System.Numerics.Tests.Perf_VectorOf<Double>.UnaryNegateOperatorBenchmark | 2.84 | 2.52 | -11.27 |
| System.Buffers.Text.Tests.Base64EncodeDecodeInPlaceTests.Base64DecodeInPlace(NumberOfBytes: 200000000) | 222140428.54 | 198327109.86 | -10.72 |
| System.Collections.CtorFromCollectionNonGeneric<String>.ArrayList(Size: 512) | 993.62 | 887.85 | -10.64 |
| System.Collections.IterateForEachNonGeneric<String>.Stack(Size: 512) | 3047.65 | 2742.33 | -10.02 |
| System.Collections.TryGetValueTrue<Int32, Int32>.SortedList(Size: 512) | 40917.35 | 36891.24 | -9.84 |
| System.Numerics.Tests.Perf_VectorOf<UInt64>.BitwiseAndOperatorBenchmark | 3.17 | 2.87 | -9.46 |
| System.Collections.IterateForEach<String>.ImmutableArray(Size: 512) | 1920.33 | 1739.57 | -9.41 |
| System.Collections.TryGetValueFalse<String, String>.ConcurrentDictionary(Size: 512) | 13862.87 | 12560.99 | -9.39 |
| System.Numerics.Tests.Perf_VectorOf<SByte>.BitwiseOrOperatorBenchmark | 2.88 | 2.61 | -9.38 |
| System.Tests.Perf_Uri.PathAndQuery | 6.84 | 6.2 | -9.36 |
| GuardedDevirtualization.TwoClassVirtual.Call(testInput: pB = 0.70) | 4.5 | 4.08 | -9.33 |
| System.Runtime.Intrinsics.Tests.Perf_Vector128Of<UInt16>.DotBenchmark | 14.2 | 12.88 | -9.3 |
| System.Linq.Tests.Perf_Enumerable.SelectToArray(input: IList) | 524.92 | 477.74 | -8.99 |
| System.Numerics.Tests.Perf_VectorOf<UInt16>.MinBenchmark | 27.19 | 24.77 | -8.9 |
| GuardedDevirtualization.TwoClassVirtual.Call(testInput: pB = 0.00) | 1.69 | 1.54 | -8.88 |
| GuardedDevirtualization.ThreeClassVirtual.Call(testInput: pB=0.33 pD=0.00) | 4.99 | 4.55 | -8.82 |
| System.Numerics.Tests.Perf_VectorOf<Int16>.GreaterThanBenchmark | 25.74 | 23.53 | -8.59 |
| System.Collections.CtorFromCollection<String>.ImmutableQueue(Size: 512) | 6900.92 | 6311.06 | -8.55 |
| System.IO.Tests.StringReaderReadLineTests.ReadLine(LineLengthRange: [ 129, 1024]) | 37927.65 | 34707.78 | -8.49 |
| System.Collections.CtorFromCollection<String>.Queue(Size: 512) | 523.86 | 479.62 | -8.45 |
| System.Numerics.Tests.Perf_VectorOf<Double>.DivideBenchmark | 2.86 | 2.62 | -8.39 |
| GuardedDevirtualization.ThreeClassInterface.Call(testInput: pB=0.00 pD=0.00) | 1.68 | 1.54 | -8.33 |
| XmlDocumentTests.XmlNodeTests.Perf_XmlNode.GetAttributes | 2.29 | 2.11 | -7.86 |
| System.Numerics.Tests.Perf_VectorOf<Int16>.AddOperatorBenchmark | 3.11 | 2.87 | -7.72 |
| System.Numerics.Tests.Perf_VectorOf<Int32>.ExclusiveOrOperatorBenchmark | 2.8 | 2.59 | -7.5 |
| System.Linq.Tests.Perf_Enumerable.Distinct(input: IEnumerable) | 4067.32 | 3765.92 | -7.41 |
| Microsoft.Extensions.Logging.ScopesOverheadBenchmark.FilteredByLevel(HasISupportLoggingScopeLogger: True, CaptureScopes: True) | 10.02 | 9.3 | -7.19 |
| System.Collections.Tests.Perf_PriorityQueue<Int32, Int32>.K_Max_Elements(Size: 100) | 1453.26 | 1350.38 | -7.08 |
| Microsoft.Extensions.Logging.LoggingOverhead.NoArguments_DefineMessage_FilteredByLevel | 10.47 | 9.73 | -7.07 |
| System.Linq.Tests.Perf_Enumerable.Aggregate_Seed(input: IEnumerable) | 697.36 | 648.97 | -6.94 |
| System.MathBenchmarks.Single.LogP1 | 52250.09 | 48645.44 | -6.9 |
| System.Linq.Tests.Perf_Enumerable.WhereAny_LastElementMatches(input: List) | 559.77 | 521.72 | -6.8 |
| System.Net.Primitives.Tests.CredentialCacheTests.GetCredential_HostPort(host: notfound, hostPortCount: 0) | 41.9 | 39.07 | -6.75 |
| System.Text.RegularExpressions.Tests.Perf_Regex_Common.IP_IsNotMatch(Options: None) | 1222.22 | 1140.58 | -6.68 |
| System.Collections.IterateForEachNonGeneric<Int32>.Queue(Size: 512) | 4125.96 | 3852.93 | -6.62 |
| System.MathBenchmarks.Double.Cos | 75351.52 | 70427.23 | -6.54 |
| System.Collections.CtorDefaultSize<String>.ConcurrentStack | 8.5 | 7.98 | -6.12 |
| System.Numerics.Tests.Perf_VectorOf<Byte>.EqualsAnyBenchmark | 24.86 | 23.38 | -5.95 |
| System.Buffers.Text.Tests.Utf8FormatterTests.FormatterUInt64(value: 12345) | 50.16 | 47.21 | -5.88 |
| ByteMark.BenchAssignJagged | 1597136387 | 1505789545 | -5.72 |
| Struct.SpanWrapper.WrapperSum | 19230.42 | 18186.31 | -5.43 |
| System.Tests.Perf_Guid.ParseExactD | 246.46 | 233.11 | -5.42 |
| System.Tests.Perf_Int64.TryParseSpan(value: 9223372036854775807) | 86.93 | 82.27 | -5.36 |
| System.Collections.CtorGivenSize<String>.SortedList(Size: 512) | 570.12 | 540.16 | -5.26 |
| System.Numerics.Tests.Perf_VectorOf<Byte>.OneBenchmark | 2.72 | 2.58 | -5.15 |
| System.ComponentModel.Tests.Perf_TypeDescriptorTests.GetConverter(typeToConvert: typeof(System.ComponentModel.Tests.ClassWithNoConverter)) | 254.51 | 241.62 | -5.06 |
Intrinsified Vector128 API's on Amd64 in #86272 improved about 100 microbenchmarks. Significantly improved performance are noticed in System.Threading and Exceptions.Handling microbenchmarks. Faster optimized creation of FrozenDirectory in #88093 improved a couple of microbemchmarks more than 50%. There are a number of microbenchmarks that have improved for up to 20%.