Skip to content

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]

Clone this wiki locally