using BenchmarkDotNet.Attributes; using Dapper.Contrib.Extensions; using System.Linq; namespace Dapper.Tests.Performance { public class DapperBenchmarks : BenchmarkBase { [Setup] public void Setup() { BaseSetup(); } [Benchmark(Description = "Dapper: Query (buffered)", OperationsPerInvoke = Iterations)] public Post QueryBuffered() { Step(); return _connection.Query("select * from Posts where Id = @Id", new { Id = i }, buffered: true).First(); } [Benchmark(Description = "Dapper: Query (unbuffered)", OperationsPerInvoke = Iterations)] public Post QueryUnbuffered() { Step(); return _connection.Query("select * from Posts where Id = @Id", new { Id = i }, buffered: false).First(); } [Benchmark(Description = "Dapper: QueryFirstOrDefault", OperationsPerInvoke = Iterations)] public Post QueryFirstOrDefault() { Step(); return _connection.QueryFirstOrDefault("select * from Posts where Id = @Id", new { Id = i }); } [Benchmark(Description = "Dapper: Query (buffered)", OperationsPerInvoke = Iterations)] public object QueryBufferedDynamic() { Step(); return _connection.Query("select * from Posts where Id = @Id", new { Id = i }, buffered: true).First(); } [Benchmark(Description = "Dapper: Query (unbuffered)", OperationsPerInvoke = Iterations)] public object QueryUnbufferedDynamic() { Step(); return _connection.Query("select * from Posts where Id = @Id", new { Id = i }, buffered: false).First(); } [Benchmark(Description = "Dapper: QueryFirstOrDefault", OperationsPerInvoke = Iterations)] public object QueryFirstOrDefaultDynamic() { Step(); return _connection.QueryFirstOrDefault("select * from Posts where Id = @Id", new { Id = i }).First(); } [Benchmark(Description = "Dapper: Contrib Get", OperationsPerInvoke = Iterations)] public object ContribGet() { Step(); return _connection.Get(i); } } }