Commit 9313e9f1 authored by ifle's avatar ifle Committed by Nick Craver

Added Linq2DB benchmarks (#1125)

Added Linq2DB benchmarks
parent 0b867bbf
using BenchmarkDotNet.Attributes;
using System;
using System.Linq;
using Dapper.Tests.Performance.Linq2Db;
using LinqToDB;
using LinqToDB.Data;
namespace Dapper.Tests.Performance
{
public class Liq2DbBenchmarks : BenchmarkBase
{
private Linq2DBContext _dbContext;
private static Func<Linq2DBContext, int, Post> compiledQuery = CompiledQuery.Compile((Linq2DBContext db, int id) =>
db.Posts.First(c => c.Id == id));
[GlobalSetup]
public void Setup()
{
BaseSetup();
DataConnection.DefaultSettings = new Linq2DBSettings(_connection.ConnectionString);
_dbContext = new Linq2DBContext();
}
[Benchmark(Description = "Normal")]
public Post Normal()
{
Step();
return _dbContext.Posts.First(p => p.Id == i);
}
[Benchmark(Description = "Compiled")]
public Post Compiled()
{
Step();
return compiledQuery(_dbContext, i);
}
[Benchmark(Description = "SqlQuery")]
public Post SqlQuery()
{
Step();
return _dbContext.Query<Post>("select * from Posts where Id = @id", new { id = i }).First();
}
}
}
......@@ -16,6 +16,7 @@
<!--<PackageReference Include="BLToolkit" Version="4.3.6" />-->
<PackageReference Include="EntityFramework" Version="6.2.0" />
<PackageReference Include="FirebirdSql.Data.FirebirdClient" Version="6.3.0" />
<PackageReference Include="linq2db.SqlServer" Version="2.3.0" />
<PackageReference Include="Microsoft.EntityFrameworkCore.SqlServer" Version="2.1.2" />
<PackageReference Include="Microsoft.SqlServer.Types" Version="14.0.314.76" />
<PackageReference Include="MySqlConnector" Version="0.44.1" />
......@@ -40,7 +41,7 @@
<ItemGroup>
<None Update="NHibernate\*.xml" CopyToOutputDirectory="Always" />
<Compile Update="Benchmarks.*.cs" DependentUpon="Benchmarks.cs" />
</ItemGroup>
</ItemGroup>
<ItemGroup>
<PackageReference Update="SourceLink.Create.GitHub" Version="2.8.3" />
</ItemGroup>
......
using LinqToDB.Configuration;
namespace Dapper.Tests.Performance.Linq2Db
{
public class ConnectionStringSettings : IConnectionStringSettings
{
public string ConnectionString { get; set; }
public string Name { get; set; }
public string ProviderName { get; set; }
public bool IsGlobal => false;
}
}
\ No newline at end of file
using LinqToDB;
using Microsoft.EntityFrameworkCore;
namespace Dapper.Tests.Performance.Linq2Db
{
public class Linq2DBContext : LinqToDB.Data.DataConnection
{
public ITable<Post> Posts => GetTable<Post>();
}
}
using System.Collections.Generic;
using System.Linq;
using LinqToDB.Configuration;
namespace Dapper.Tests.Performance.Linq2Db
{
public class Linq2DBSettings : ILinqToDBSettings
{
private readonly string _connectionString;
public IEnumerable<IDataProviderSettings> DataProviders => Enumerable.Empty<IDataProviderSettings>();
public string DefaultConfiguration => "SqlServer";
public string DefaultDataProvider => "SqlServer";
public Linq2DBSettings(string connectionString)
{
_connectionString = connectionString;
}
public IEnumerable<IConnectionStringSettings> ConnectionStrings
{
get
{
yield return
new ConnectionStringSettings
{
Name = "SqlServer",
ProviderName = "SqlServer",
ConnectionString = _connectionString
};
}
}
}
}
......@@ -5,9 +5,11 @@ namespace Dapper.Tests.Performance
{
[ServiceStack.DataAnnotations.Alias("Posts")]
[Table(Name = "Posts")]
[LinqToDB.Mapping.Table(Name = "Posts")]
public class Post
{
[Id(IdKind.Identity)]
[LinqToDB.Mapping.PrimaryKey, LinqToDB.Mapping.Identity]
public int Id { get; set; }
public string Text { get; set; }
public DateTime CreationDate { get; set; }
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment