Skip to content

Instantly share code, notes, and snippets.

@paoloambrosio
Last active June 24, 2022 04:53
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save paoloambrosio/99e2a9ed7723c3ea00396fa1d2bcabec to your computer and use it in GitHub Desktop.
Save paoloambrosio/99e2a9ed7723c3ea00396fa1d2bcabec to your computer and use it in GitHub Desktop.
AutoBogusBenchmark

Bogus.Faker

Job Runtime Mean Error StdDev Ratio RatioSD
.NET 5.0 .NET 5.0 81.88 ns 0.546 ns 0.511 ns 1.00 0.00
.NET 6.0 .NET 6.0 76.28 ns 0.217 ns 0.192 ns 0.93 0.01

AutoBogus.AutoFaker

Job Runtime Mean Error StdDev Ratio RatioSD
.NET 5.0 .NET 5.0 7,887.79 ns 47.156 ns 44.110 ns 1.00 0.00
.NET 6.0 .NET 6.0 368,443.38 ns 2,533.769 ns 2,370.089 ns 46.71 0.45

AutoBogus.AutoFaker with MoqBinder

Job Runtime Mean Error StdDev Ratio RatioSD
.NET 5.0 .NET 5.0 7,912.19 ns 41.966 ns 35.043 ns 1.00 0.00
.NET 6.0 .NET 6.0 379,142.73 ns 3,009.798 ns 2,668.108 ns 47.94 0.35
<Project Sdk="Microsoft.NET.Sdk">
<PropertyGroup>
<OutputType>Exe</OutputType>
<TargetFramework>net5.0</TargetFramework>
<Nullable>enable</Nullable>
<LangVersion>9</LangVersion>
</PropertyGroup>
<ItemGroup>
<PackageReference Include="AutoBogus" Version="2.13.1" />
<PackageReference Include="AutoBogus.Moq" Version="2.13.1" />
<PackageReference Include="BenchmarkDotNet" Version="0.13.1" />
</ItemGroup>
</Project>
using AutoBogus;
using AutoBogus.Moq;
using BenchmarkDotNet.Attributes;
using BenchmarkDotNet.Jobs;
using BenchmarkDotNet.Running;
using Bogus;
namespace AutoBogusBenchmark
{
public record Foo(int Bar);
[SimpleJob(RuntimeMoniker.Net50, baseline: true)]
[SimpleJob(RuntimeMoniker.Net60)]
public class GenerateBenchmark
{
private static readonly Faker<Foo> FooFaker = new Faker<Foo>()
.CustomInstantiator(f => new Foo(f.Random.Int()));
private static readonly Faker<Foo> FooAutoFaker = new AutoFaker<Foo>();
private static readonly Faker<Foo> FooMoqAutoFaker = new AutoFaker<Foo>()
.Configure(b => b.WithBinder<MoqBinder>());
[Benchmark]
public void FakerGenerate()
{
FooFaker.Generate();
}
[Benchmark]
public void AutoFakerGenerate()
{
FooAutoFaker.Generate();
}
[Benchmark]
public void MoqAutoFakerGenerate()
{
FooMoqAutoFaker.Generate();
}
}
public static class Program
{
public static void Main()
{
BenchmarkRunner.Run<GenerateBenchmark>();
}
}
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment