Skip to content

Performance

Johelvis Guzman edited this page May 30, 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.765 (1803/April2018Update/Redstone4)
Intel Core i5-7200U CPU 2.50GHz (Kaby Lake), 1 CPU, 4 logical and 2 physical cores
Frequency=2648439 Hz, Resolution=377.5809 ns, Timer=TSC
  [Host] : .NET Framework 4.7.2 (CLR 4.0.30319.42000), 64bit RyuJIT-v4.7.3416.0

Provider Method Mean Rank
InMemory Add 25.360 ms 2
Json Add 268.291 ms 5
Xml Add 4.301 ms 1
AdoNet Add 34.898 ms 3
NHibernate Add 186.569 ms 4
EntityFramework Add 3,539.766 ms 7
EntityFrameworkCore Add 1,575.581 ms 6
InMemory AddRange 7.436 ms 4
Json AddRange 11.545 ms 6
Xml AddRange 6.135 ms 3
AdoNet AddRange 3.014 ms 1
NHibernate AddRange 19.236 ms 7
EntityFramework AddRange 5.170 ms 2
EntityFrameworkCore AddRange 9.814 ms 5
InMemory Delete 2.359 ms 2
Json Delete 10.748 ms 6
Xml Delete 3.099 ms 3
AdoNet Delete 1.971 ms 1
NHibernate Delete 7.136 ms 5
EntityFramework Delete 5.695 ms 4
EntityFrameworkCore Delete 14.604 ms 7
InMemory DeleteRange 1.252 ms 1
Json DeleteRange 7.387 ms 6
Xml DeleteRange 4.445 ms 4
AdoNet DeleteRange 1.841 ms 2
NHibernate DeleteRange 2.485 ms 3
EntityFramework DeleteRange 5.263 ms 5
EntityFrameworkCore DeleteRange 18.406 ms 7
InMemory DeleteWithId 6.983 ms 2
Json DeleteWithId 14.291 ms 5
Xml DeleteWithId 4.995 ms 1
AdoNet DeleteWithId 7.991 ms 3
NHibernate DeleteWithId 28.710 ms 7
EntityFramework DeleteWithId 10.181 ms 4
EntityFrameworkCore DeleteWithId 19.993 ms 6
InMemory DeleteWithPredicate 7.937 ms 3
Json DeleteWithPredicate 7.234 ms 1
Xml DeleteWithPredicate 9.502 ms 4
AdoNet DeleteWithPredicate 7.686 ms 2
NHibernate DeleteWithPredicate 14.681 ms 5
EntityFramework DeleteWithPredicate 20.715 ms 6
EntityFrameworkCore DeleteWithPredicate 33.373 ms 7
InMemory Update 3.380 ms 1
Json Update 6.389 ms 4
Xml Update 5.974 ms 3
AdoNet Update 5.911 ms 2
NHibernate Update 28.875 ms 7
EntityFramework Update 11.563 ms 6
EntityFrameworkCore Update 10.588 ms 5
InMemory UpdateRange 3.712 ms 4
Json UpdateRange 4.163 ms 5
Xml UpdateRange 3.478 ms 2
AdoNet UpdateRange 3.554 ms 3
NHibernate UpdateRange 2.603 ms 1
EntityFramework UpdateRange 5.488 ms 6
EntityFrameworkCore UpdateRange 7.007 ms 7
InMemory FindWithId 1.204 ms 1
Json FindWithId 2.891 ms 4
Xml FindWithId 1.895 ms 2
AdoNet FindWithId 2.128 ms 3
NHibernate FindWithId 5.277 ms 6
EntityFramework FindWithId 3.010 ms 5
EntityFrameworkCore FindWithId 7.598 ms 7
InMemory FindWithPredicate 8.078 ms 3
Json FindWithPredicate 7.512 ms 2
Xml FindWithPredicate 4.931 ms 1
AdoNet FindWithPredicate 9.123 ms 5
NHibernate FindWithPredicate 17.666 ms 6
EntityFramework FindWithPredicate 8.665 ms 4
EntityFrameworkCore FindWithPredicate 58.629 ms 7
InMemory FindWithPredicateOptions 6.524 ms 3
Json FindWithPredicateOptions 4.865 ms 2
Xml FindWithPredicateOptions 2.519 ms 1
AdoNet FindWithPredicateOptions 8.113 ms 4
NHibernate FindWithPredicateOptions NA ?
EntityFramework FindWithPredicateOptions 18.053 ms 5
EntityFrameworkCore FindWithPredicateOptions 63.096 ms 6
InMemory FindWithPagingOptions 6.079 ms 4
Json FindWithPagingOptions 4.932 ms 2
Xml FindWithPagingOptions 5.996 ms 3
AdoNet FindWithPagingOptions 3.922 ms 1
NHibernate FindWithPagingOptions NA ?
EntityFramework FindWithPagingOptions 6.610 ms 6
EntityFrameworkCore FindWithPagingOptions 6.269 ms 5
InMemory FindAllWithPredicate 7.083 ms 3
Json FindAllWithPredicate 8.602 ms 5
Xml FindAllWithPredicate 7.824 ms 4
AdoNet FindAllWithPredicate 5.574 ms 1
NHibernate FindAllWithPredicate 11.823 ms 6
EntityFramework FindAllWithPredicate 6.274 ms 2
EntityFrameworkCore FindAllWithPredicate 41.442 ms 7
InMemory FindAllWithPredicateOptions 3.259 ms 1
Json FindAllWithPredicateOptions 5.367 ms 3
Xml FindAllWithPredicateOptions 5.752 ms 4
AdoNet FindAllWithPredicateOptions 3.565 ms 2
NHibernate FindAllWithPredicateOptions 16.760 ms 6
EntityFramework FindAllWithPredicateOptions 6.643 ms 5
EntityFrameworkCore FindAllWithPredicateOptions 22.790 ms 7
InMemory FindAllWithPagingOptions 3.088 ms 1
Json FindAllWithPagingOptions 6.078 ms 5
Xml FindAllWithPagingOptions 5.744 ms 4
AdoNet FindAllWithPagingOptions 4.586 ms 2
NHibernate FindAllWithPagingOptions 26.524 ms 7
EntityFramework FindAllWithPagingOptions 5.662 ms 3
EntityFrameworkCore FindAllWithPagingOptions 13.660 ms 6
InMemory ToDictionaryWithPredicateOptions 11.721 ms 3
Json ToDictionaryWithPredicateOptions 5.003 ms 2
Xml ToDictionaryWithPredicateOptions 4.285 ms 1
AdoNet ToDictionaryWithPredicateOptions 13.031 ms 5
NHibernate ToDictionaryWithPredicateOptions 11.613 ms 3
EntityFramework ToDictionaryWithPredicateOptions 12.592 ms 4
EntityFrameworkCore ToDictionaryWithPredicateOptions 46.141 ms 6
InMemory ToDictionaryWithPagingOptions 5.345 ms 2
Json ToDictionaryWithPagingOptions 9.529 ms 4
Xml ToDictionaryWithPagingOptions 4.049 ms 1
AdoNet ToDictionaryWithPagingOptions 4.024 ms 1
NHibernate ToDictionaryWithPagingOptions 15.271 ms 5
EntityFramework ToDictionaryWithPagingOptions 9.251 ms 3
EntityFrameworkCore ToDictionaryWithPagingOptions 20.332 ms 6
InMemory GroupByWithPredicateOptions 15.846 ms 5
Json GroupByWithPredicateOptions 4.857 ms 2
Xml GroupByWithPredicateOptions 4.742 ms 1
AdoNet GroupByWithPredicateOptions 5.037 ms 3
NHibernate GroupByWithPredicateOptions 13.809 ms 4
EntityFramework GroupByWithPredicateOptions 4.701 ms 1
EntityFrameworkCore GroupByWithPredicateOptions 13.767 ms 4
InMemory GroupByWithPagingOptions 6.636 ms 4
Json GroupByWithPagingOptions 4.680 ms 2
Xml GroupByWithPagingOptions 3.677 ms 1
AdoNet GroupByWithPagingOptions 5.316 ms 3
NHibernate GroupByWithPagingOptions 15.502 ms 7
EntityFramework GroupByWithPagingOptions 11.389 ms 6
EntityFrameworkCore GroupByWithPagingOptions 11.026 ms 5
InMemory Async_Add 22.025 ms 3
Json Async_Add 6.085 ms 2
Xml Async_Add 3.386 ms 1
AdoNet Async_Add 27.934 ms 4
NHibernate Async_Add 126.655 ms 7
EntityFramework Async_Add 70.562 ms 6
EntityFrameworkCore Async_Add 65.095 ms 5
InMemory Async_AddRange 11.423 ms 7
Json Async_AddRange 3.285 ms 1
Xml Async_AddRange 3.654 ms 2
AdoNet Async_AddRange 5.627 ms 4
NHibernate Async_AddRange 3.880 ms 3
EntityFramework Async_AddRange 7.528 ms 5
EntityFrameworkCore Async_AddRange 11.113 ms 6
InMemory Async_Update 7.793 ms 4
Json Async_Update 3.934 ms 1
Xml Async_Update 4.261 ms 3
AdoNet Async_Update 4.220 ms 3
NHibernate Async_Update 47.519 ms 6
EntityFramework Async_Update 4.176 ms 2
EntityFrameworkCore Async_Update 8.488 ms 5
InMemory Async_UpdateRange 10.274 ms 7
Json Async_UpdateRange 4.895 ms 4
Xml Async_UpdateRange 3.730 ms 2
AdoNet Async_UpdateRange 5.397 ms 5
NHibernate Async_UpdateRange 3.214 ms 1
EntityFramework Async_UpdateRange 4.243 ms 3
EntityFrameworkCore Async_UpdateRange 5.620 ms 6
InMemory Async_Delete 12.076 ms 3
Json Async_Delete 3.456 ms 1
Xml Async_Delete 3.691 ms 2
AdoNet Async_Delete 17.547 ms 6
NHibernate Async_Delete 58.069 ms 7
EntityFramework Async_Delete 16.955 ms 5
EntityFrameworkCore Async_Delete 15.113 ms 4
InMemory Async_DeleteRange 10.329 ms 6
Json Async_DeleteRange 6.041 ms 3
Xml Async_DeleteRange 2.600 ms 1
AdoNet Async_DeleteRange 6.534 ms 4
NHibernate Async_DeleteRange 3.189 ms 2
EntityFramework Async_DeleteRange 8.517 ms 5
EntityFrameworkCore Async_DeleteRange 12.832 ms 7
InMemory Async_DeleteWithId 31.303 ms 4
Json Async_DeleteWithId 4.629 ms 1
Xml Async_DeleteWithId 8.618 ms 2
AdoNet Async_DeleteWithId 24.561 ms 3
NHibernate Async_DeleteWithId 189.839 ms 7
EntityFramework Async_DeleteWithId 59.147 ms 5
EntityFrameworkCore Async_DeleteWithId 108.631 ms 6
InMemory Async_DeleteWithPredicate 27.234 ms 4
Json Async_DeleteWithPredicate 8.463 ms 2
Xml Async_DeleteWithPredicate 8.066 ms 1
AdoNet Async_DeleteWithPredicate 18.044 ms 3
NHibernate Async_DeleteWithPredicate 31.535 ms 5
EntityFramework Async_DeleteWithPredicate 87.036 ms 6
EntityFrameworkCore Async_DeleteWithPredicate 88.847 ms 7
InMemory Async_FindWithId 2.039 ms 1
Json Async_FindWithId 4.064 ms 4
Xml Async_FindWithId 2.818 ms 3
AdoNet Async_FindWithId 2.599 ms 2
NHibernate Async_FindWithId 7.317 ms 7
EntityFramework Async_FindWithId 6.467 ms 6
EntityFrameworkCore Async_FindWithId 5.317 ms 5
InMemory Async_FindWithPredicate 17.759 ms 7
Json Async_FindWithPredicate 3.319 ms 1
Xml Async_FindWithPredicate 3.421 ms 2
AdoNet Async_FindWithPredicate 8.464 ms 3
NHibernate Async_FindWithPredicate 13.076 ms 5
EntityFramework Async_FindWithPredicate 10.156 ms 4
EntityFrameworkCore Async_FindWithPredicate 16.933 ms 6
InMemory Async_FindWithPreicateOptions 8.009 ms 4
Json Async_FindWithPreicateOptions 3.415 ms 1
Xml Async_FindWithPreicateOptions 5.361 ms 3
AdoNet Async_FindWithPreicateOptions 3.521 ms 2
NHibernate Async_FindWithPreicateOptions NA ?
EntityFramework Async_FindWithPreicateOptions 3.385 ms 1
EntityFrameworkCore Async_FindWithPreicateOptions 17.178 ms 5
InMemory Async_FindWithPagingOptions 6.030 ms 3
Json Async_FindWithPagingOptions 6.235 ms 4
Xml Async_FindWithPagingOptions 6.809 ms 5
AdoNet Async_FindWithPagingOptions 4.276 ms 2
NHibernate Async_FindWithPagingOptions NA ?
EntityFramework Async_FindWithPagingOptions 3.621 ms 1
EntityFrameworkCore Async_FindWithPagingOptions 9.150 ms 6
InMemory Async_FindAllWithPredicate 11.597 ms 5
Json Async_FindAllWithPredicate 4.612 ms 3
Xml Async_FindAllWithPredicate 4.413 ms 1
AdoNet Async_FindAllWithPredicate 4.519 ms 2
NHibernate Async_FindAllWithPredicate 12.968 ms 6
EntityFramework Async_FindAllWithPredicate 8.363 ms 4
EntityFrameworkCore Async_FindAllWithPredicate 58.437 ms 7
InMemory Async_FindAllWithPredicateOptions 6.632 ms 5
Json Async_FindAllWithPredicateOptions 5.020 ms 3
Xml Async_FindAllWithPredicateOptions 4.567 ms 2
AdoNet Async_FindAllWithPredicateOptions 3.726 ms 1
NHibernate Async_FindAllWithPredicateOptions 12.890 ms 6
EntityFramework Async_FindAllWithPredicateOptions 6.196 ms 4
EntityFrameworkCore Async_FindAllWithPredicateOptions 20.500 ms 7
InMemory Async_FindAllWithPagingOptions 5.324 ms 4
Json Async_FindAllWithPagingOptions 5.192 ms 3
Xml Async_FindAllWithPagingOptions 5.002 ms 2
AdoNet Async_FindAllWithPagingOptions 3.904 ms 1
NHibernate Async_FindAllWithPagingOptions 15.201 ms 7
EntityFramework Async_FindAllWithPagingOptions 8.904 ms 5
EntityFrameworkCore Async_FindAllWithPagingOptions 9.877 ms 6
InMemory Async_GroupByWithPredicateOptions 15.292 ms 6
Json Async_GroupByWithPredicateOptions 7.293 ms 3
Xml Async_GroupByWithPredicateOptions 4.365 ms 1
AdoNet Async_GroupByWithPredicateOptions 10.760 ms 5
NHibernate Async_GroupByWithPredicateOptions 16.714 ms 7
EntityFramework Async_GroupByWithPredicateOptions 7.030 ms 2
EntityFrameworkCore Async_GroupByWithPredicateOptions 10.355 ms 4
InMemory Async_GroupByWithPagingOptions 8.884 ms 4
Json Async_GroupByWithPagingOptions 3.629 ms 1
Xml Async_GroupByWithPagingOptions 8.861 ms 4
AdoNet Async_GroupByWithPagingOptions 4.107 ms 2
NHibernate Async_GroupByWithPagingOptions 9.749 ms 5
EntityFramework Async_GroupByWithPagingOptions 6.625 ms 3
EntityFrameworkCore Async_GroupByWithPagingOptions 12.038 ms 6
InMemory Async_ToDictionaryWithPredicateOptions 30.262 ms 7
Json Async_ToDictionaryWithPredicateOptions 4.767 ms 1
Xml Async_ToDictionaryWithPredicateOptions 5.964 ms 2
AdoNet Async_ToDictionaryWithPredicateOptions 12.910 ms 3
NHibernate Async_ToDictionaryWithPredicateOptions 19.875 ms 5
EntityFramework Async_ToDictionaryWithPredicateOptions 18.958 ms 4
EntityFrameworkCore Async_ToDictionaryWithPredicateOptions 26.169 ms 6
InMemory Async_ToDictionaryWithPagingOptions 4.987 ms 2
Json Async_ToDictionaryWithPagingOptions 4.634 ms 1
Xml Async_ToDictionaryWithPagingOptions 5.076 ms 3
AdoNet Async_ToDictionaryWithPagingOptions 7.664 ms 4
NHibernate Async_ToDictionaryWithPagingOptions 15.203 ms 7
EntityFramework Async_ToDictionaryWithPagingOptions 10.683 ms 5
EntityFrameworkCore Async_ToDictionaryWithPagingOptions 11.508 ms 6

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] Repository_Find_Benchmarks.Async_FindWithPreicateOptions: Dry(Force=True, Toolchain=InProcessToolchain, IterationCount=1, LaunchCount=1, RunStrategy=ColdStart, UnrollFactor=1, WarmupCount=1) [Provider=NHibernate] Repository_Find_Benchmarks.Async_FindWithPagingOptions: Dry(Force=True, Toolchain=InProcessToolchain, IterationCount=1, LaunchCount=1, RunStrategy=ColdStart, UnrollFactor=1, WarmupCount=1) [Provider=NHibernate]

Clone this wiki locally