String.Contains tests - 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
StringContainsOrdinal 33.31 ns 0.666 ns 1.056 ns
StringContainsOrdinalIgnoreCase 80.29 ns 0.335 ns 0.280 ns
StringContainsInvariantCulture 10,121.47 ns 200.014 ns 498.105 ns
StringContainsInvariantCultureIgnoreCase 10,123.73 ns 201.105 ns 449.800 ns
StringContainsCurrentCulture 10,073.03 ns 187.097 ns 414.595 ns
StringContainsCurrentCultureIgnoreCase 10,107.69 ns 199.831 ns 478.783 ns

.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 Allocated
StringContainsOrdinal 16.28 ns 1.804 ns 0.099 ns -
StringContainsOrdinalIgnoreCase 18.04 ns 0.013 ns 0.001 ns -
StringContainsInvariantCulture 3,676.22 ns 476.528 ns 26.120 ns -
StringContainsInvariantCultureIgnoreCase 3,746.27 ns 515.470 ns 28.255 ns -
StringContainsCurrentCulture 3,688.92 ns 702.585 ns 38.511 ns -
StringContainsCurrentCultureIgnoreCase 3,780.70 ns 175.278 ns 9.608 ns -