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 |