using BenchmarkDotNet.Attributes; using Susanoo; using Susanoo.Processing; using System.Data; using System.Linq; namespace Dapper.Tests.Performance { public class SusanooBenchmarks : BenchmarkBase { private DatabaseManager _db; private static readonly ISingleResultSetCommandProcessor _cmd = CommandManager.Instance.DefineCommand("SELECT * FROM Posts WHERE Id = @Id", CommandType.Text) .DefineResults() .Realize(); private static readonly ISingleResultSetCommandProcessor _cmdDynamic = CommandManager.Instance.DefineCommand("SELECT * FROM Posts WHERE Id = @Id", CommandType.Text) .DefineResults() .Realize(); [Setup] public void Setup() { BaseSetup(); _db = new DatabaseManager(_connection); } [Benchmark(Description = "Susanoo: Mapping Cache", OperationsPerInvoke = Iterations)] public Post MappingCache() { Step(); return CommandManager.Instance.DefineCommand("SELECT * FROM Posts WHERE Id = @Id", CommandType.Text) .DefineResults() .Realize() .Execute(_db, new { Id = i }).First(); } [Benchmark(Description = "Susanoo: Mapping Cache (dynamic)", OperationsPerInvoke = Iterations)] public dynamic MappingCacheDynamic() { Step(); return CommandManager.Instance.DefineCommand("SELECT * FROM Posts WHERE Id = @Id", CommandType.Text) .DefineResults() .Realize() .Execute(_db, new { Id = i }).First(); } [Benchmark(Description = "Susanoo: Mapping Static", OperationsPerInvoke = Iterations)] public Post MappingStatic() { Step(); return _cmd.Execute(_db, new { Id = i }).First(); } [Benchmark(Description = "Susanoo: Mapping Static (dynamic)", OperationsPerInvoke = Iterations)] public dynamic MappingStaticDynamic() { Step(); return _cmdDynamic.Execute(_db, new { Id = i }).First(); } } }