Regular expressions - rianjs/DotNetPerfTesting GitHub Wiki

.NET 7 on Intel 64

BenchmarkDotNet=v0.13.5, OS=macOS Ventura 13.2.1 (22D68) [Darwin 22.3.0]
Intel Core i7-8850H CPU 2.60GHz (Coffee Lake), 1 CPU, 12 logical and 6 physical cores
.NET SDK=7.0.102
  [Host]     : .NET 7.0.2 (7.0.222.60605), X64 RyuJIT AVX2
  DefaultJob : .NET 7.0.2 (7.0.222.60605), X64 RyuJIT AVX2```


|                        Method |        Mean |     Error |    StdDev |
|------------------------------ |------------:|----------:|----------:|
|                   GetCompiled | 4,376.75 ns | 12.299 ns | 10.270 ns |
|                 GetUncompiled |   512.33 ns |  4.364 ns |  3.644 ns |
|            StaticRegexIsMatch |   169.83 ns |  1.672 ns |  1.482 ns |
| CachedPrecompiledRegexIsMatch |    84.77 ns |  0.382 ns |  0.339 ns |
|  CachedUncompiledRegexIsMatch |   147.61 ns |  2.543 ns |  2.379 ns |
|           InlineInstantiation | 1,476.28 ns | 19.194 ns | 17.015 ns |

Regex sizes

Single run

Uncompiled results

  • Biggest: 388,856
  • Smallest: 378,656
  • Mean: 2,048

Compiled results

  • Biggest: 580,040
  • Smallest: 376,296
  • Mean: 15,892

Dictionary of regexes across multiple runs

Uncompiled results

  • Biggest: 604,336
  • Smallest: 393,904
  • Mean: 31,986

Compiled results

  • Biggest: 664,000
  • Smallest: 426,064
  • Mean: 145,552

Uncompiled results

  • Biggest: 608,800
  • Smallest: 393,904
  • Mean: 32,987

Compiled results

  • Biggest: 664,000
  • Smallest: 426,064
  • Mean: 161,803

Uncompiled results

  • Biggest: 605,760
  • Smallest: 393,904
  • Mean: 32,715

Compiled results

  • Biggest: 664,000
  • Smallest: 426,064
  • Mean: 168,299

.NET 8 on M3 Mac


BenchmarkDotNet v0.13.12, macOS Sonoma 14.4 (23E214) [Darwin 23.4.0]
Apple M3, 1 CPU, 8 logical and 8 physical cores
.NET SDK 8.0.100
  [Host]   : .NET 8.0.0 (8.0.23.53103), Arm64 RyuJIT AdvSIMD
  ShortRun : .NET 8.0.0 (8.0.23.53103), Arm64 RyuJIT AdvSIMD

Job=ShortRun  IterationCount=3  LaunchCount=1  
WarmupCount=3  

Method Mean Error StdDev Gen0 Gen1 Allocated
GetCompiled 1,643.12 ns 78.556 ns 4.306 ns 0.6905 0.0076 5776 B
GetUncompiled 221.93 ns 3.631 ns 0.199 ns 0.1414 0.0002 1184 B
StaticRegexIsMatch 69.29 ns 4.393 ns 0.241 ns - - -
CachedPrecompiledRegexIsMatch 39.57 ns 0.129 ns 0.007 ns - - -
CachedUncompiledRegexIsMatch 64.14 ns 3.371 ns 0.185 ns - - -
InlineInstantiation 605.07 ns 36.594 ns 2.006 ns 0.4702 0.0019 3936 B