Created
March 11, 2024 23:04
-
-
Save admir-live/365c0365f40bef89f11bf3eddf1e49af to your computer and use it in GitHub Desktop.
DateParsingPerformanceComparison
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
using BenchmarkDotNet.Attributes; | |
using BenchmarkDotNet.Running; | |
namespace ZeroAllocBenchmark | |
{ | |
[MemoryDiagnoser] | |
public class DateParsingPerformanceComparison | |
{ | |
private const string SampleDateString = "2024-03-13"; | |
[Benchmark] | |
public void ParseDateUsingSubstringMethod() | |
{ | |
int extractedYear = int.Parse(SampleDateString.Substring(0, 4)); | |
int extractedMonth = int.Parse(SampleDateString.Substring(5, 2)); | |
int extractedDay = int.Parse(SampleDateString.Substring(8, 2)); | |
} | |
[Benchmark] | |
public void ParseDateUsingReadOnlySpan() | |
{ | |
ReadOnlySpan<char> dateAsReadOnlySpan = SampleDateString; | |
int extractedYear = int.Parse(dateAsReadOnlySpan.Slice(0, 4)); | |
int extractedMonth = int.Parse(dateAsReadOnlySpan.Slice(5, 2)); | |
int extractedDay = int.Parse(dateAsReadOnlySpan.Slice(8, 2)); | |
} | |
} | |
class EntryPoint | |
{ | |
static void Main(string[] args) | |
{ | |
BenchmarkRunner.Run<DateParsingPerformanceComparison>(); | |
} | |
} | |
} |
Author
admir-live
commented
Mar 11, 2024
Method | Mean | Error | StdDev | Gen0 | Allocated |
---|---|---|---|---|---|
ParseDateUsingSubstringMethod | 26.24 ns | 0.290 ns | 0.257 ns | 0.0057 | 96 B |
ParseDateUsingReadOnlySpan | 18.78 ns | 0.262 ns | 0.245 ns | - | - |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment