Skip to content

Instantly share code, notes, and snippets.

@admir-live
Created March 11, 2024 23:04
Show Gist options
  • Save admir-live/365c0365f40bef89f11bf3eddf1e49af to your computer and use it in GitHub Desktop.
Save admir-live/365c0365f40bef89f11bf3eddf1e49af to your computer and use it in GitHub Desktop.
DateParsingPerformanceComparison
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>();
}
}
}
@admir-live
Copy link
Author

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