-
Notifications
You must be signed in to change notification settings - Fork 5
Performance
Johelvis Guzman edited this page Jun 13, 2019
·
6 revisions
The benchmark can be found in DotNetToolkit.Repository.Performance and can be compiled via:
dotnet build DotNetToolkit.Repository.Performance.csproj --configuration Release
dotnet run DotNetToolkit.Repository.Performance.csproj --configuration Release --filter *
Output from the latest run is:
BenchmarkDotNet=v0.11.5, OS=Windows 10.0.17134.706 (1803/April2018Update/Redstone4)
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.3394.0
| Provider | Method | Mean | Rank |
|---|---|---|---|
| AdoNet | AddRange | 3.459 ms | 1 |
| Xml | Add | 3.726 ms | 2 |
| InMemory | AddRange | 3.986 ms | 3 |
| EntityFramework | AddRange | 4.022 ms | 3 |
| NHibernate | AddRange | 4.154 ms | 4 |
| Xml | AddRange | 4.471 ms | 5 |
| Json | AddRange | 4.493 ms | 5 |
| EntityFrameworkCore | AddRange | 11.494 ms | 6 |
| InMemory | Add | 23.090 ms | 7 |
| AdoNet | Add | 23.570 ms | 8 |
| NHibernate | Add | 120.683 ms | 9 |
| Json | Add | 198.062 ms | 10 |
| EntityFrameworkCore | Add | 897.262 ms | 11 |
| EntityFramework | Add | 2,614.185 ms | 12 |
| AdoNet | UpdateRange | 2.932 ms | 1 |
| NHibernate | UpdateRange | 3.091 ms | 2 |
| InMemory | Update | 3.500 ms | 3 |
| InMemory | UpdateRange | 3.637 ms | 4 |
| Json | UpdateRange | 4.133 ms | 5 |
| Xml | Update | 4.306 ms | 6 |
| EntityFramework | UpdateRange | 4.439 ms | 7 |
| Xml | UpdateRange | 4.518 ms | 8 |
| Json | Update | 5.219 ms | 9 |
| AdoNet | Update | 6.593 ms | 10 |
| EntityFrameworkCore | UpdateRange | 6.959 ms | 11 |
| EntityFrameworkCore | Update | 10.266 ms | 12 |
| EntityFramework | Update | 10.435 ms | 13 |
| NHibernate | Update | 21.065 ms | 14 |
| InMemory | DeleteRange | 1.456 ms | 1 |
| InMemory | Delete | 2.001 ms | 2 |
| NHibernate | Delete | 2.808 ms | 3 |
| NHibernate | DeleteRange | 2.890 ms | 4 |
| AdoNet | DeleteRange | 3.281 ms | 5 |
| AdoNet | Delete | 3.405 ms | 6 |
| Json | DeleteRange | 3.652 ms | 7 |
| Xml | Delete | 3.901 ms | 8 |
| Xml | DeleteWithId | 4.197 ms | 9 |
| Json | Delete | 4.841 ms | 10 |
| AdoNet | DeleteWithPredicate | 4.922 ms | 11 |
| EntityFramework | Delete | 5.213 ms | 12 |
| Xml | DeleteRange | 5.461 ms | 13 |
| InMemory | DeleteWithPredicate | 6.621 ms | 14 |
| InMemory | DeleteWithId | 6.887 ms | 15 |
| EntityFramework | DeleteRange | 7.304 ms | 16 |
| Json | DeleteWithPredicate | 8.693 ms | 17 |
| Xml | DeleteWithPredicate | 8.700 ms | 17 |
| Json | DeleteWithId | 9.776 ms | 18 |
| NHibernate | DeleteWithPredicate | 9.826 ms | 18 |
| EntityFramework | DeleteWithId | 10.061 ms | 19 |
| AdoNet | DeleteWithId | 10.348 ms | 20 |
| EntityFrameworkCore | Delete | 11.120 ms | 21 |
| EntityFrameworkCore | DeleteRange | 12.608 ms | 22 |
| EntityFrameworkCore | DeleteWithId | 22.767 ms | 23 |
| EntityFramework | DeleteWithPredicate | 23.335 ms | 24 |
| NHibernate | DeleteWithId | 23.741 ms | 25 |
| EntityFrameworkCore | DeleteWithPredicate | 28.458 ms | 26 |
| NHibernate | FindWithPredicateOptions | NA | ? |
| NHibernate | FindWithPagingOptions | NA | ? |
| InMemory | FindWithId | 1.054 ms | 1 |
| InMemory | FindWithPagingOptions | 2.189 ms | 2 |
| Xml | FindWithId | 2.611 ms | 3 |
| Xml | FindWithPredicateOptions | 2.645 ms | 4 |
| AdoNet | FindWithId | 3.041 ms | 5 |
| AdoNet | FindAllWithPredicateOptions | 3.180 ms | 6 |
| InMemory | FindAllWithPredicateOptions | 3.536 ms | 7 |
| Xml | FindWithPagingOptions | 3.604 ms | 8 |
| InMemory | FindAllWithPagingOptions | 3.673 ms | 9 |
| Json | FindWithPredicateOptions | 3.739 ms | 10 |
| Json | FindWithPagingOptions | 3.756 ms | 10 |
| AdoNet | FindAllWithPagingOptions | 3.768 ms | 10 |
| InMemory | FindWithPredicateOptions | 3.792 ms | 10 |
| Json | FindAllWithPredicateOptions | 4.338 ms | 11 |
| Json | FindWithId | 4.368 ms | 11 |
| EntityFramework | FindAllWithPagingOptions | 4.432 ms | 12 |
| EntityFramework | FindWithPagingOptions | 4.570 ms | 13 |
| AdoNet | FindAllWithPredicate | 4.850 ms | 14 |
| AdoNet | FindWithPredicateOptions | 5.103 ms | 15 |
| EntityFramework | FindWithPredicate | 5.164 ms | 16 |
| AdoNet | FindWithPagingOptions | 5.198 ms | 16 |
| EntityFrameworkCore | FindWithPagingOptions | 5.223 ms | 16 |
| Json | FindAllWithPredicate | 5.227 ms | 16 |
| EntityFramework | FindWithId | 5.682 ms | 17 |
| AdoNet | FindWithPredicate | 5.936 ms | 18 |
| NHibernate | FindWithId | 5.972 ms | 18 |
| Xml | FindAllWithPredicate | 6.006 ms | 18 |
| EntityFramework | FindAllWithPredicate | 6.013 ms | 18 |
| InMemory | FindAllWithPredicate | 6.078 ms | 19 |
| Json | FindWithPredicate | 6.096 ms | 19 |
| Xml | FindAllWithPagingOptions | 6.438 ms | 20 |
| Xml | FindWithPredicate | 6.461 ms | 20 |
| Xml | FindAllWithPredicateOptions | 6.733 ms | 21 |
| Json | FindAllWithPagingOptions | 6.739 ms | 21 |
| EntityFramework | FindAllWithPredicateOptions | 7.470 ms | 22 |
| NHibernate | FindAllWithPredicate | 8.236 ms | 23 |
| EntityFrameworkCore | FindWithId | 9.091 ms | 24 |
| InMemory | FindWithPredicate | 9.737 ms | 25 |
| EntityFrameworkCore | FindAllWithPagingOptions | 11.269 ms | 26 |
| NHibernate | FindAllWithPagingOptions | 12.250 ms | 27 |
| EntityFramework | FindWithPredicateOptions | 13.536 ms | 28 |
| NHibernate | FindWithPredicate | 14.089 ms | 29 |
| NHibernate | FindAllWithPredicateOptions | 14.548 ms | 30 |
| EntityFrameworkCore | FindAllWithPredicateOptions | 17.112 ms | 31 |
| EntityFrameworkCore | FindAllWithPredicate | 25.494 ms | 32 |
| EntityFrameworkCore | FindWithPredicateOptions | 48.432 ms | 33 |
| EntityFrameworkCore | FindWithPredicate | 71.435 ms | 34 |
| InMemory | GroupByWithPagingOptions | 3.668 ms | 1 |
| Json | GroupByWithPagingOptions | 4.332 ms | 2 |
| Xml | GroupByWithPagingOptions | 4.861 ms | 3 |
| AdoNet | GroupByWithPagingOptions | 5.227 ms | 4 |
| EntityFramework | GroupByWithPagingOptions | 5.258 ms | 4 |
| AdoNet | GroupByWithPredicateOptions | 5.374 ms | 5 |
| Json | GroupByWithPredicateOptions | 5.594 ms | 6 |
| Xml | GroupByWithPredicateOptions | 5.664 ms | 7 |
| EntityFramework | GroupByWithPredicateOptions | 7.029 ms | 8 |
| NHibernate | GroupByWithPagingOptions | 9.915 ms | 9 |
| NHibernate | GroupByWithPredicateOptions | 10.711 ms | 10 |
| EntityFrameworkCore | GroupByWithPagingOptions | 11.252 ms | 11 |
| InMemory | GroupByWithPredicateOptions | 11.762 ms | 12 |
| EntityFrameworkCore | GroupByWithPredicateOptions | 24.369 ms | 13 |
| InMemory | ToDictionaryWithPagingOptions | 4.163 ms | 1 |
| Json | ToDictionaryWithPagingOptions | 4.754 ms | 2 |
| Xml | ToDictionaryWithPagingOptions | 5.092 ms | 3 |
| Json | ToDictionaryWithPredicateOptions | 5.237 ms | 4 |
| Xml | ToDictionaryWithPredicateOptions | 5.617 ms | 5 |
| AdoNet | ToDictionaryWithPagingOptions | 6.396 ms | 6 |
| EntityFramework | ToDictionaryWithPagingOptions | 6.847 ms | 7 |
| EntityFramework | ToDictionaryWithPredicateOptions | 7.761 ms | 8 |
| InMemory | ToDictionaryWithPredicateOptions | 10.455 ms | 9 |
| EntityFrameworkCore | ToDictionaryWithPredicateOptions | 11.244 ms | 10 |
| NHibernate | ToDictionaryWithPredicateOptions | 11.656 ms | 11 |
| NHibernate | ToDictionaryWithPagingOptions | 12.259 ms | 12 |
| EntityFrameworkCore | ToDictionaryWithPagingOptions | 12.366 ms | 12 |
| AdoNet | ToDictionaryWithPredicateOptions | 12.885 ms | 13 |
Benchmarks with issues: Repository_Find_Benchmarks.FindWithPredicateOptions: Dry(Force=True, Toolchain=InProcessToolchain, IterationCount=1, LaunchCount=1, RunStrategy=ColdStart, UnrollFactor=1, WarmupCount=1) [Provider=NHibernate] Repository_Find_Benchmarks.FindWithPagingOptions: Dry(Force=True, Toolchain=InProcessToolchain, IterationCount=1, LaunchCount=1, RunStrategy=ColdStart, UnrollFactor=1, WarmupCount=1) [Provider=NHibernate]