Skip to content

Instantly share code, notes, and snippets.

@digitaldias
Created December 4, 2022 14:34
Show Gist options
  • Save digitaldias/a789f430383e319a9e4f975a89e2585d to your computer and use it in GitHub Desktop.
Save digitaldias/a789f430383e319a9e4f975a89e2585d to your computer and use it in GitHub Desktop.
Playing with strings in .Net6 and 7
using BenchmarkDotNet.Attributes;
using BenchmarkDotNet.Running;
using Microsoft.Extensions.Logging;
[MemoryDiagnoser(false)]
public class Program
{
private const string template = "This is the {0} template with {1} valued at {2}";
private readonly ILogger<StringBench> _logger;
private readonly ILoggerFactory _loggerFactory = LoggerFactory.Create(builder =>
{
builder.AddConsole().SetMinimumLevel(LogLevel.Warning);
});
private readonly Random _random1;
private readonly Random _random2;
public Program()
{
_random1 = new Random(419);
_random2 = new Random(419);
_logger = new Logger<StringBench>(_loggerFactory);
}
public static void Main(string[] args)
{
BenchmarkSwitcher.FromAssemblies(new[] { typeof(Program).Assembly }).Run(args);
}
[Benchmark]
public void LogWithParameters()
{
var a = _random1.Next(100);
var b = _random1.Next(100);
var c = _random1.Next(100);
_logger.LogInformation(template, a, b, c);
}
[Benchmark]
public void LogWithInterpolation()
{
var a = _random2.Next(100);
var b = _random2.Next(100);
var c = _random2.Next(100);
_logger.LogInformation($"This is the {a} template with {b} valued at {c}");
}
}
@digitaldias
Copy link
Author

Here is the .csproj content:

<Project Sdk="Microsoft.NET.Sdk">

    <PropertyGroup>
        <OutputType>Exe</OutputType>
        <TargetFrameworks>net6.0;net7.0</TargetFrameworks>
        <ImplicitUsings>enable</ImplicitUsings>
        <Nullable>enable</Nullable>
    </PropertyGroup>

    <ItemGroup>
      <PackageReference Include="BenchmarkDotNet" Version="0.13.2" />
      <PackageReference Include="Microsoft.Extensions.Logging" Version="7.0.0" />
      <PackageReference Include="Microsoft.Extensions.Logging.Console" Version="7.0.0" />
    </ItemGroup>

</Project>

@digitaldias
Copy link
Author

The constructor needs to set a Logger<Program>, apologies, remnants :)

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment