Skip to content
Projects
Groups
Snippets
Help
Loading...
Help
Submit feedback
Contribute to GitLab
Sign in / Register
Toggle navigation
D
Dapper
Project
Project
Details
Activity
Releases
Cycle Analytics
Repository
Repository
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Charts
Issues
0
Issues
0
List
Boards
Labels
Milestones
Merge Requests
0
Merge Requests
0
CI / CD
CI / CD
Pipelines
Jobs
Schedules
Charts
Wiki
Wiki
Snippets
Snippets
Members
Members
Collapse sidebar
Close sidebar
Activity
Graph
Charts
Create a new issue
Jobs
Commits
Issue Boards
Open sidebar
tsai
Dapper
Commits
f486848e
Unverified
Commit
f486848e
authored
May 02, 2020
by
Nick Craver
Committed by
GitHub
May 02, 2020
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
Update benchmarks (#1451)
This fixes things for `netcoreapp3.1` and fixes the outstanding #1205.
parent
601a5c28
Changes
6
Hide whitespace changes
Inline
Side-by-side
Showing
6 changed files
with
67 additions
and
59 deletions
+67
-59
Benchmarks.Massive.cs
Dapper.Tests.Performance/Benchmarks.Massive.cs
+1
-0
Benchmarks.PetaPoco.cs
Dapper.Tests.Performance/Benchmarks.PetaPoco.cs
+1
-0
Benchmarks.cs
Dapper.Tests.Performance/Benchmarks.cs
+7
-1
Config.cs
Dapper.Tests.Performance/Config.cs
+14
-14
Dapper.Tests.Performance.csproj
Dapper.Tests.Performance/Dapper.Tests.Performance.csproj
+2
-1
Readme.md
Readme.md
+42
-43
No files found.
Dapper.Tests.Performance/Benchmarks.Massive.cs
View file @
f486848e
...
...
@@ -14,6 +14,7 @@ public class MassiveBenchmarks : BenchmarkBase
public
void
Setup
()
{
BaseSetup
();
RegisterSqlFactory
();
_model
=
new
DynamicModel
(
ConnectionString
);
}
...
...
Dapper.Tests.Performance/Benchmarks.PetaPoco.cs
View file @
f486848e
...
...
@@ -14,6 +14,7 @@ public class PetaPocoBenchmarks : BenchmarkBase
public
void
Setup
()
{
BaseSetup
();
RegisterSqlFactory
();
_db
=
new
Database
(
ConnectionString
,
"System.Data.SqlClient"
);
_db
.
OpenSharedConnection
();
_dbFast
=
new
Database
(
ConnectionString
,
"System.Data.SqlClient"
);
...
...
Dapper.Tests.Performance/Benchmarks.cs
View file @
f486848e
using
BenchmarkDotNet.Attributes
;
using
BenchmarkDotNet.Order
;
using
System
;
using
System.Configuration
;
using
System.Data.SqlClient
;
...
...
@@ -22,6 +21,13 @@ protected void BaseSetup()
_connection
.
Open
();
}
protected
void
RegisterSqlFactory
()
{
#if NETCOREAPP
System
.
Data
.
Common
.
DbProviderFactories
.
RegisterFactory
(
"System.Data.SqlClient"
,
SqlClientFactory
.
Instance
);
#endif
}
protected
void
Step
()
{
i
++;
...
...
Dapper.Tests.Performance/Config.cs
View file @
f486848e
...
...
@@ -16,24 +16,24 @@ public class Config : ManualConfig
public
Config
()
{
Add
(
ConsoleLogger
.
Default
);
Add
Logger
(
ConsoleLogger
.
Default
);
Add
(
CsvExporter
.
Default
);
Add
(
MarkdownExporter
.
GitHub
);
Add
(
HtmlExporter
.
Default
);
Add
Exporter
(
CsvExporter
.
Default
);
Add
Exporter
(
MarkdownExporter
.
GitHub
);
Add
Exporter
(
HtmlExporter
.
Default
);
var
md
=
MemoryDiagnoser
.
Default
;
Add
(
md
);
Add
(
new
ORMColum
());
Add
(
TargetMethodColumn
.
Method
);
Add
(
new
ReturnColum
());
Add
(
StatisticColumn
.
Mean
);
Add
(
StatisticColumn
.
StdDev
);
Add
(
StatisticColumn
.
Error
);
Add
(
BaselineRatioColumn
.
RatioMean
);
Add
(
DefaultColumnProviders
.
Metrics
);
Add
Diagnoser
(
md
);
Add
Column
(
new
ORMColum
());
Add
Column
(
TargetMethodColumn
.
Method
);
Add
Column
(
new
ReturnColum
());
Add
Column
(
StatisticColumn
.
Mean
);
Add
Column
(
StatisticColumn
.
StdDev
);
Add
Column
(
StatisticColumn
.
Error
);
Add
Column
(
BaselineRatioColumn
.
RatioMean
);
Add
ColumnProvider
(
DefaultColumnProviders
.
Metrics
);
Add
(
Job
.
ShortRun
Add
Job
(
Job
.
ShortRun
.
WithLaunchCount
(
1
)
.
WithWarmupCount
(
2
)
.
WithUnrollFactor
(
Iterations
)
...
...
Dapper.Tests.Performance/Dapper.Tests.Performance.csproj
View file @
f486848e
...
...
@@ -13,7 +13,7 @@
<ProjectReference Include="..\Dapper.Contrib\Dapper.Contrib.csproj" />
<PackageReference Include="Dashing" Version="2.2.0" />
<PackageReference Include="Belgrade.Sql.Client" Version="1.1.4" />
<PackageReference Include="BenchmarkDotNet" Version="0.1
1.5
" />
<PackageReference Include="BenchmarkDotNet" Version="0.1
2.1
" />
<PackageReference Include="DevExpress.Xpo" Version="19.1.5" />
<!--<PackageReference Include="BLToolkit" Version="4.3.6" />-->
<PackageReference Include="EntityFramework" Version="6.3.0" />
...
...
@@ -27,6 +27,7 @@
<PackageReference Include="Npgsql" Version="4.0.9" />
<PackageReference Include="PetaPoco" Version="5.1.306" />
<PackageReference Include="ServiceStack.OrmLite.SqlServer" Version="5.6.0" />
<PackageReference Include="System.Data.SqlClient" Version="4.8.1" />
<PackageReference Include="System.Data.SQLite" Version="1.0.111" />
</ItemGroup>
<ItemGroup>
...
...
Readme.md
View file @
f486848e
...
...
@@ -120,52 +120,51 @@ dotnet run -p .\Dapper.Tests.Performance\ -c Release -f netcoreapp3.1 -- -f * --
```
Output from the latest run is:
```
ini
BenchmarkDotNet
=
v0.1
1.1, OS=Windows 10.0.17134.254 (1803/April2018Update/Redstone4
)
BenchmarkDotNet
=
v0.1
2.1, OS=Windows 10.0.19041.208 (2004/?/20H1
)
Intel
Core
i7-7700HQ
CPU
2.80GHz
(Kaby
Lake),
1
CPU,
8
logical
and
4
physical
cores
Frequency
=
2742188 Hz, Resolution=364.6723 ns, Timer=TSC
[Host]
:
.NET
Framework
4.7.2
(CLR
4.0.30319.42000),
64bit
RyuJIT-v4.7.3163.0
ShortRun
:
.NET
Framework
4.7.2
(CLR
4.0.30319.42000),
64bit
RyuJIT-v4.7.3163.0
.NET
Core
SDK
=
3.1.201
[Host]
:
.NET
Core
3.1.3
(CoreCLR
4.700.20.11803,
CoreFX
4.700.20.12001),
X64
RyuJIT
ShortRun
:
.NET
Core
3.1.3
(CoreCLR
4.700.20.11803,
CoreFX
4.700.20.12001),
X64
RyuJIT
```
| ORM | Method | Return | Mean | Gen 0 | Gen 1 | Gen 2 | Allocated |
|------------- |------------------------------ |-------- |------------:|--------:|-------:|-------:|----------:|
| LINQ to DB |
'
First (Compiled)
'
| Post | 78.75 us | 0.7500 | - | - | 2.66 KB |
| LINQ to DB | Query
<
T
>
| Post | 80.38 us | 2.1250 | - | - | 6.87 KB |
| Hand Coded | SqlCommand | Post | 87.16 us | 2.5000 | 1.0000 | 0.2500 | 12.24 KB |
| Dapper | QueryFirstOrDefault
<
dynamic
>
| dynamic | 87.80 us | 4.3750 | - | - | 13.5 KB |
| Belgrade | ExecuteReader | Post | 87.85 us | 3.6250 | 0.7500 | - | 11.27 KB |
| Dapper | QueryFirstOrDefault
<
T
>
| Post | 91.51 us | 2.8750 | 0.8750 | 0.2500 | 13.46 KB |
| Hand Coded | DataTable | dynamic | 91.74 us | 2.2500 | 0.6250 | - | 12.45 KB |
| Dapper |
'
Query
<
T
>
(buffered)
'
| Post | 94.05 us | 2.8750 | 0.8750 | 0.2500 | 13.79 KB |
| Dapper |
'
Query
<
dynamic
>
(buffered)
'
| dynamic | 95.25 us | 2.5000 | 1.0000 | 0.2500 | 13.87 KB |
| Massive |
'
Query (dynamic)
'
| dynamic | 96.18 us | 3.2500 | 0.8750 | 0.3750 | 14.19 KB |
| PetaPoco |
'
Fetch
<
T
>
(Fast)
'
| Post | 96.57 us | 2.7500 | 0.8750 | 0.2500 | 13.65 KB |
| PetaPoco | Fetch
<
T
>
| Post | 97.62 us | 2.8750 | 0.8750 | 0.2500 | 14.59 KB |
| Dapper |
'
Contrib Get
<
T
>'
| Post | 98.85 us | 2.8750 | 1.0000 | 0.2500 | 14.45 KB |
| ServiceStack | SingleById
<
T
>
| Post | 102.39 us | 3.1250 | 0.8750 | 0.3750 | 17.52 KB |
| LINQ to DB | First | Post | 103.54 us | 1.7500 | - | - | 5.51 KB |
| Susanoo |
'
Execute
<
T
>
(Static)
'
| Post | 105.07 us | 2.8750 | 0.8750 | 0.2500 | 14.98 KB |
| Dashing | Get | Post | 105.80 us | 3.1250 | 0.8750 | 0.3750 | 14.82 KB |
| Susanoo |
'
Execut
<
dynamic
>
(Static)
'
| dynamic | 109.26 us | 3.1250 | 0.8750 | 0.2500 | 14.97 KB |
| LINQ to SQL |
'
First (Compiled)
'
| Post | 114.62 us | 3.1250 | - | - | 9.82 KB |
| Dapper |
'
Query
<
T
>
(unbuffered)
'
| Post | 119.72 us | 3.1250 | 0.8750 | 0.2500 | 13.83 KB |
| Susanoo |
'
Execute
<
dynamic
>
(Cache)
'
| dynamic | 124.02 us | 3.6250 | 1.0000 | 0.5000 | 20.4 KB |
| Susanoo |
'
Execute
<
T
>
(Cache)
'
| Post | 126.92 us | 4.2500 | 1.0000 | 0.5000 | 20.88 KB |
| Dapper |
'
Query
<
dynamic
>
(unbuffered)
'
| dynamic | 139.89 us | 2.5000 | 1.0000 | 0.2500 | 13.87 KB |
| EF 6 | SqlQuery | Post | 143.86 us | 5.2500 | 0.7500 | - | 27.86 KB |
| EF Core |
'
First (Compiled)
'
| Post | 148.42 us | 5.0000 | - | - | 16.08 KB |
| NHibernate | Get
<
T
>
| Post | 196.88 us | 5.7500 | 1.0000 | - | 32.5 KB |
| EF Core | First | Post | 197.91 us | 6.5000 | - | - | 20.25 KB |
| NHibernate | HQL | Post | 207.84 us | 6.0000 | 0.7500 | - | 35 KB |
| EF Core |
'
First (No Tracking)
'
| Post | 213.58 us | 4.2500 | 0.7500 | 0.2500 | 21.36 KB |
| EF Core | SqlQuery | Post | 247.25 us | 6.5000 | - | - | 20.56 KB |
| EF 6 | First | Post | 247.53 us | 15.5000 | - | - | 48.29 KB |
| NHibernate | Criteria | Post | 253.30 us | 13.2500 | 1.2500 | 0.2500 | 65.32 KB |
| EF 6 |
'
First (No Tracking)
'
| Post | 265.80 us | 10.5000 | 1.0000 | - | 55.09 KB |
| LINQ to SQL | ExecuteQuery | Post | 284.74 us | 7.0000 | 1.0000 | 0.5000 | 42.33 KB |
| NHibernate | SQL | Post | 313.85 us | 26.5000 | 1.0000 | - | 101.01 KB |
| LINQ to SQL | First | Post | 968.14 us | 4.0000 | 1.0000 | - | 14.68 KB |
| NHibernate | LINQ | Post | 1,062.16 us | 11.0000 | 2.0000 | - | 62.37 KB |
| ORM | Method | Return | Mean | StdDev | Error | Gen 0 | Gen 1 | Gen 2 | Allocated |
|--------------- |------------------------------ |-------- |----------:|----------:|----------:|--------:|-------:|-------:|----------:|
| Belgrade | ExecuteReader | Post | 94.46 μs | 8.115 μs | 12.268 μs | 1.7500 | 0.5000 | - | 8.42 KB |
| Hand Coded | DataTable | dynamic | 105.43 μs | 0.998 μs | 1.508 μs | 3.0000 | - | - | 9.37 KB |
| Hand Coded | SqlCommand | Post | 106.58 μs | 1.191 μs | 1.801 μs | 1.5000 | 0.7500 | 0.1250 | 7.42 KB |
| Dapper | QueryFirstOrDefault
<
dynamic
>
| dynamic | 119.52 μs | 1.320 μs | 2.219 μs | 3.6250 | - | - | 11.39 KB |
| Dapper |
'
Query
<
dynamic
>
(buffered)
'
| dynamic | 119.93 μs | 1.943 μs | 2.937 μs | 2.3750 | 1.0000 | 0.2500 | 11.73 KB |
| Massive |
'
Query (dynamic)
'
| dynamic | 120.31 μs | 1.340 μs | 2.252 μs | 2.2500 | 1.0000 | 0.1250 | 12.07 KB |
| Dapper | QueryFirstOrDefault
<
T
>
| Post | 121.57 μs | 1.564 μs | 2.364 μs | 1.7500 | 0.7500 | - | 11.35 KB |
| Dapper |
'
Query
<
T
>
(buffered)
'
| Post | 121.67 μs | 2.913 μs | 4.403 μs | 1.8750 | 0.8750 | - | 11.65 KB |
| PetaPoco |
'
Fetch
<
T
>
(Fast)
'
| Post | 124.91 μs | 4.015 μs | 6.747 μs | 2.0000 | 1.0000 | - | 11.5 KB |
| Mighty | Query
<
T
>
| Post | 125.23 μs | 2.932 μs | 4.433 μs | 2.2500 | 1.0000 | - | 12.6 KB |
| LINQ to DB | Query
<
T
>
| Post | 125.76 μs | 2.038 μs | 3.081 μs | 2.2500 | 0.7500 | 0.2500 | 10.62 KB |
| PetaPoco | Fetch
<
T
>
| Post | 127.48 μs | 4.283 μs | 6.475 μs | 2.0000 | 1.0000 | - | 12.18 KB |
| LINQ to DB |
'
First (Compiled)
'
| Post | 128.89 μs | 2.627 μs | 3.971 μs | 2.5000 | 0.7500 | - | 10.92 KB |
| Mighty | Query
<
dynamic
>
| dynamic | 129.20 μs | 2.577 μs | 3.896 μs | 2.0000 | 1.0000 | - | 12.43 KB |
| Mighty | SingleFromQuery
<
T
>
| Post | 129.41 μs | 2.094 μs | 3.166 μs | 2.2500 | 1.0000 | - | 12.6 KB |
| Mighty | SingleFromQuery
<
dynamic
>
| dynamic | 130.59 μs | 2.432 μs | 3.677 μs | 2.0000 | 1.0000 | - | 12.43 KB |
| Dapper |
'
Contrib Get
<
T
>'
| Post | 134.74 μs | 1.816 μs | 2.746 μs | 2.5000 | 1.0000 | 0.2500 | 12.29 KB |
| ServiceStack | SingleById
<
T
>
| Post | 135.01 μs | 1.213 μs | 2.320 μs | 3.0000 | 1.0000 | 0.2500 | 15.27 KB |
| LINQ to DB | First | Post | 151.87 μs | 3.826 μs | 5.784 μs | 3.0000 | 1.0000 | 0.2500 | 13.97 KB |
| EF 6 | SqlQuery | Post | 171.00 μs | 1.460 μs | 2.791 μs | 3.7500 | 1.0000 | - | 23.67 KB |
| DevExpress.XPO | GetObjectByKey
<
T
>
| Post | 172.36 μs | 3.758 μs | 5.681 μs | 5.5000 | 1.2500 | - | 29.06 KB |
| Dapper |
'
Query
<
T
>
(unbuffered)
'
| Post | 174.40 μs | 3.296 μs | 4.983 μs | 2.0000 | 1.0000 | - | 11.77 KB |
| Dapper |
'
Query
<
dynamic
>
(unbuffered)
'
| dynamic | 174.45 μs | 1.988 μs | 3.340 μs | 2.0000 | 1.0000 | - | 11.81 KB |
| DevExpress.XPO | FindObject
<
T
>
| Post | 181.76 μs | 5.554 μs | 9.333 μs | 8.0000 | - | - | 27.15 KB |
| DevExpress.XPO | Query
<
T
>
| Post | 189.81 μs | 4.187 μs | 8.004 μs | 10.0000 | - | - | 31.61 KB |
| EF Core |
'
First (Compiled)
'
| Post | 199.72 μs | 3.983 μs | 7.616 μs | 4.5000 | - | - | 13.8 KB |
| NHibernate | Get
<
T
>
| Post | 248.71 μs | 6.604 μs | 11.098 μs | 5.0000 | 1.0000 | - | 29.79 KB |
| EF Core | First | Post | 253.20 μs | 3.033 μs | 5.097 μs | 5.5000 | - | - | 17.7 KB |
| NHibernate | HQL | Post | 258.70 μs | 11.716 μs | 17.712 μs | 5.0000 | 1.0000 | - | 32.1 KB |
| EF Core | SqlQuery | Post | 268.89 μs | 19.349 μs | 32.516 μs | 6.0000 | - | - | 18.5 KB |
| EF 6 | First | Post | 278.46 μs | 12.094 μs | 18.284 μs | 13.5000 | - | - | 44.18 KB |
| EF Core |
'
First (No Tracking)
'
| Post | 280.88 μs | 8.192 μs | 13.765 μs | 3.0000 | 0.5000 | - | 19.38 KB |
| NHibernate | Criteria | Post | 304.90 μs | 2.232 μs | 4.267 μs | 11.0000 | 1.0000 | - | 60.29 KB |
| EF 6 |
'
First (No Tracking)
'
| Post | 316.55 μs | 7.667 μs | 11.592 μs | 8.5000 | 1.0000 | - | 50.95 KB |
| NHibernate | SQL | Post | 335.41 μs | 3.111 μs | 4.703 μs | 19.0000 | 1.0000 | - | 78.86 KB |
| NHibernate | LINQ | Post | 807.79 μs | 27.207 μs | 45.719 μs | 8.0000 | 2.0000 | - | 53.65 KB |
Feel free to submit patches that include other ORMs - when running benchmarks, be sure to compile in Release and not attach a debugger (
<kbd>
Ctrl
</kbd>
+
<kbd>
F5
</kbd>
).
...
...
Write
Preview
Markdown
is supported
0%
Try again
or
attach a new file
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment