-
Notifications
You must be signed in to change notification settings - Fork 5
Performance
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]