-
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.2, 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 | FindAllWithDefaultOptions | 3.545 ms | 1 |
InMemory | FindAllWithPagingOptions | 3.649 ms | 2 |
InMemory | FindAllWithDefaultOptions | 3.756 ms | 3 |
InMemory | FindAllWithPredicate | 4.012 ms | 4 |
Xml | FindAllWithPredicate | 4.291 ms | 5 |
Json | FindAllWithPredicate | 4.493 ms | 6 |
Xml | FindAllWithPagingOptions | 4.582 ms | 7 |
AdoNet | FindAllWithPagingOptions | 4.617 ms | 7 |
Xml | FindAllWithDefaultOptions | 4.759 ms | 8 |
Json | FindAllWithDefaultOptions | 4.817 ms | 9 |
Json | FindAllWithPagingOptions | 5.038 ms | 10 |
EntityFramework | FindAllWithPagingOptions | 5.463 ms | 11 |
AdoNet | FindAllWithPredicate | 6.188 ms | 12 |
NHibernate | FindAllWithPredicate | 9.509 ms | 13 |
EntityFramework | FindAllWithDefaultOptions | 9.673 ms | 14 |
EntityFrameworkCore | FindAllWithPagingOptions | 10.423 ms | 15 |
EntityFramework | FindAllWithPredicate | 12.411 ms | 16 |
NHibernate | FindAllWithPagingOptions | 13.906 ms | 17 |
NHibernate | FindAllWithDefaultOptions | 15.502 ms | 18 |
EntityFrameworkCore | FindAllWithDefaultOptions | 17.300 ms | 19 |
EntityFrameworkCore | FindAllWithPredicate | 33.442 ms | 20 |
InMemory | AddRange | 1.186 ms | 1 |
Json | AddRange | 2.665 ms | 2 |
Xml | AddRange | 3.176 ms | 3 |
NHibernate | AddRange | 3.817 ms | 4 |
Xml | Add | 4.360 ms | 5 |
EntityFramework | AddRange | 5.490 ms | 6 |
AdoNet | AddRange | 5.924 ms | 7 |
EntityFrameworkCore | AddRange | 6.371 ms | 8 |
InMemory | Add | 6.554 ms | 9 |
AdoNet | Add | 37.412 ms | 10 |
NHibernate | Add | 92.840 ms | 11 |
Json | Add | 171.917 ms | 12 |
EntityFrameworkCore | Add | 281.592 ms | 13 |
EntityFramework | Add | 2,387.156 ms | 14 |
InMemory | DeleteRange | 1.395 ms | 1 |
InMemory | Delete | 1.435 ms | 2 |
Xml | DeleteRange | 2.154 ms | 3 |
InMemory | DeleteWithId | 2.577 ms | 4 |
NHibernate | DeleteRange | 2.811 ms | 5 |
NHibernate | Delete | 3.051 ms | 6 |
Xml | Delete | 3.083 ms | 7 |
Json | Delete | 3.189 ms | 8 |
Json | DeleteRange | 3.461 ms | 9 |
AdoNet | Delete | 3.590 ms | 10 |
AdoNet | DeleteRange | 3.731 ms | 11 |
InMemory | DeleteWithPredicate | 4.329 ms | 12 |
Xml | DeleteWithId | 5.091 ms | 13 |
AdoNet | DeleteWithPredicate | 5.099 ms | 13 |
EntityFramework | DeleteRange | 6.211 ms | 14 |
EntityFramework | Delete | 6.363 ms | 15 |
Xml | DeleteWithPredicate | 6.485 ms | 16 |
Json | DeleteWithId | 6.896 ms | 17 |
Json | DeleteWithPredicate | 7.195 ms | 18 |
EntityFramework | DeleteWithId | 7.569 ms | 19 |
EntityFrameworkCore | Delete | 10.176 ms | 20 |
NHibernate | DeleteWithPredicate | 10.195 ms | 20 |
EntityFrameworkCore | DeleteRange | 10.829 ms | 21 |
EntityFrameworkCore | DeleteWithId | 14.942 ms | 22 |
AdoNet | DeleteWithId | 15.920 ms | 23 |
EntityFramework | DeleteWithPredicate | 18.969 ms | 24 |
NHibernate | DeleteWithId | 20.966 ms | 25 |
EntityFrameworkCore | DeleteWithPredicate | 25.646 ms | 26 |
InMemory | UpdateRange | 1.570 ms | 1 |
InMemory | Update | 2.344 ms | 2 |
NHibernate | UpdateRange | 2.910 ms | 3 |
Xml | Update | 3.853 ms | 4 |
Json | UpdateRange | 3.860 ms | 4 |
Xml | UpdateRange | 4.383 ms | 5 |
Json | Update | 4.590 ms | 6 |
EntityFrameworkCore | UpdateRange | 5.188 ms | 7 |
AdoNet | UpdateRange | 5.433 ms | 8 |
EntityFramework | UpdateRange | 5.458 ms | 8 |
EntityFrameworkCore | Update | 9.774 ms | 9 |
AdoNet | Update | 11.670 ms | 10 |
EntityFramework | Update | 11.865 ms | 11 |
NHibernate | Update | 24.401 ms | 12 |
InMemory | Async_AddRange | 1.466 ms | 1 |
InMemory | Async_Add | 2.301 ms | 2 |
Xml | Async_Add | 3.557 ms | 3 |
NHibernate | Async_AddRange | 3.585 ms | 3 |
Json | Async_Add | 4.540 ms | 4 |
EntityFramework | Async_AddRange | 4.723 ms | 5 |
Xml | Async_AddRange | 5.223 ms | 6 |
Json | Async_AddRange | 5.246 ms | 6 |
EntityFrameworkCore | Async_AddRange | 10.581 ms | 7 |
AdoNet | Async_AddRange | 12.638 ms | 8 |
AdoNet | Async_Add | 38.519 ms | 9 |
EntityFrameworkCore | Async_Add | 47.021 ms | 10 |
EntityFramework | Async_Add | 49.223 ms | 11 |
NHibernate | Async_Add | 72.162 ms | 12 |
InMemory | Async_UpdateRange | 1.572 ms | 1 |
InMemory | Async_Update | 1.953 ms | 2 |
EntityFramework | Async_Update | 3.151 ms | 3 |
EntityFramework | Async_UpdateRange | 3.688 ms | 4 |
Json | Async_Update | 3.823 ms | 5 |
NHibernate | Async_UpdateRange | 4.244 ms | 6 |
Json | Async_UpdateRange | 4.869 ms | 7 |
EntityFrameworkCore | Async_Update | 5.764 ms | 8 |
Xml | Async_UpdateRange | 6.294 ms | 9 |
Xml | Async_Update | 6.896 ms | 10 |
EntityFrameworkCore | Async_UpdateRange | 7.079 ms | 11 |
AdoNet | Async_UpdateRange | 11.491 ms | 12 |
AdoNet | Async_Update | 12.033 ms | 13 |
NHibernate | Async_Update | 41.251 ms | 14 |
InMemory | Async_DeleteRange | 1.007 ms | 1 |
InMemory | Async_Delete | 1.547 ms | 2 |
InMemory | Async_DeleteWithId | 1.862 ms | 3 |
Xml | Async_Delete | 2.470 ms | 4 |
NHibernate | Async_DeleteRange | 2.692 ms | 5 |
Json | Async_DeleteRange | 3.025 ms | 6 |
Json | Async_Delete | 3.298 ms | 7 |
Xml | Async_DeleteRange | 3.906 ms | 8 |
Json | Async_DeleteWithId | 4.840 ms | 9 |
Xml | Async_DeleteWithId | 5.564 ms | 10 |
EntityFramework | Async_DeleteRange | 6.153 ms | 11 |
Xml | Async_DeleteWithPredicate | 6.628 ms | 12 |
InMemory | Async_DeleteWithPredicate | 6.881 ms | 13 |
Json | Async_DeleteWithPredicate | 8.743 ms | 14 |
AdoNet | Async_DeleteRange | 11.702 ms | 15 |
EntityFrameworkCore | Async_Delete | 11.829 ms | 16 |
EntityFrameworkCore | Async_DeleteRange | 11.843 ms | 16 |
EntityFramework | Async_Delete | 12.254 ms | 17 |
NHibernate | Async_DeleteWithPredicate | 20.095 ms | 18 |
AdoNet | Async_Delete | 21.309 ms | 19 |
AdoNet | Async_DeleteWithPredicate | 32.882 ms | 20 |
AdoNet | Async_DeleteWithId | 36.036 ms | 21 |
NHibernate | Async_Delete | 41.896 ms | 22 |
EntityFramework | Async_DeleteWithId | 49.975 ms | 23 |
EntityFrameworkCore | Async_DeleteWithPredicate | 60.005 ms | 24 |
EntityFramework | Async_DeleteWithPredicate | 69.342 ms | 25 |
EntityFrameworkCore | Async_DeleteWithId | 80.195 ms | 26 |
NHibernate | Async_DeleteWithId | 140.228 ms | 27 |
InMemory | ToDictionaryWithDefaultOptions | 3.494 ms | 1 |
InMemory | ToDictionaryWithPagingOptions | 3.571 ms | 2 |
AdoNet | ToDictionaryWithPagingOptions | 3.880 ms | 3 |
Json | ToDictionaryWithPagingOptions | 4.263 ms | 4 |
Json | ToDictionaryWithDefaultOptions | 4.474 ms | 5 |
Xml | ToDictionaryWithDefaultOptions | 4.624 ms | 6 |
Xml | ToDictionaryWithPagingOptions | 4.628 ms | 6 |
EntityFramework | ToDictionaryWithPagingOptions | 5.238 ms | 7 |
EntityFramework | ToDictionaryWithDefaultOptions | 8.675 ms | 8 |
NHibernate | ToDictionaryWithDefaultOptions | 9.973 ms | 9 |
NHibernate | ToDictionaryWithPagingOptions | 11.804 ms | 10 |
EntityFrameworkCore | ToDictionaryWithPagingOptions | 13.972 ms | 11 |
AdoNet | ToDictionaryWithDefaultOptions | 15.632 ms | 12 |
EntityFrameworkCore | ToDictionaryWithDefaultOptions | 19.950 ms | 13 |
InMemory | GroupByWithDefaultOptions | 3.861 ms | 1 |
Xml | GroupByWithDefaultOptions | 4.572 ms | 2 |
Json | GroupByWithPagingOptions | 4.709 ms | 3 |
Json | GroupByWithDefaultOptions | 4.713 ms | 3 |
InMemory | GroupByWithPagingOptions | 5.220 ms | 4 |
Xml | GroupByWithPagingOptions | 5.283 ms | 5 |
AdoNet | GroupByWithPagingOptions | 7.706 ms | 6 |
EntityFramework | GroupByWithDefaultOptions | 8.904 ms | 7 |
EntityFrameworkCore | GroupByWithPagingOptions | 9.062 ms | 8 |
NHibernate | GroupByWithPagingOptions | 9.279 ms | 9 |
EntityFrameworkCore | GroupByWithDefaultOptions | 9.485 ms | 10 |
EntityFramework | GroupByWithPagingOptions | 9.837 ms | 11 |
NHibernate | GroupByWithDefaultOptions | 11.535 ms | 12 |
AdoNet | GroupByWithDefaultOptions | 13.441 ms | 13 |
InMemory | Async_FindAllWithDefaultOptions | 3.500 ms | 1 |
InMemory | Async_FindAllWithPredicate | 3.876 ms | 2 |
InMemory | Async_FindAllWithPagingOptions | 4.327 ms | 3 |
Json | Async_FindAllWithDefaultOptions | 4.434 ms | 4 |
Xml | Async_FindAllWithDefaultOptions | 4.482 ms | 5 |
Json | Async_FindAllWithPagingOptions | 4.720 ms | 6 |
Xml | Async_FindAllWithPredicate | 4.872 ms | 7 |
Json | Async_FindAllWithPredicate | 5.070 ms | 8 |
Xml | Async_FindAllWithPagingOptions | 5.372 ms | 9 |
AdoNet | Async_FindAllWithDefaultOptions | 5.397 ms | 9 |
AdoNet | Async_FindAllWithPagingOptions | 5.651 ms | 10 |
EntityFramework | Async_FindAllWithPredicate | 5.689 ms | 10 |
EntityFramework | Async_FindAllWithPagingOptions | 5.998 ms | 11 |
EntityFramework | Async_FindAllWithDefaultOptions | 6.134 ms | 12 |
AdoNet | Async_FindAllWithPredicate | 9.171 ms | 13 |
NHibernate | Async_FindAllWithPredicate | 10.033 ms | 14 |
NHibernate | Async_FindAllWithDefaultOptions | 13.169 ms | 15 |
NHibernate | Async_FindAllWithPagingOptions | 15.095 ms | 16 |
EntityFrameworkCore | Async_FindAllWithPagingOptions | 17.518 ms | 17 |
EntityFrameworkCore | Async_FindAllWithDefaultOptions | 20.465 ms | 18 |
EntityFrameworkCore | Async_FindAllWithPredicate | 39.640 ms | 19 |
InMemory | Async_GroupByWithPagingOptions | 3.761 ms | 1 |
InMemory | Async_GroupByWithDefaultOptions | 3.792 ms | 1 |
Xml | Async_GroupByWithDefaultOptions | 4.479 ms | 2 |
Json | Async_GroupByWithPagingOptions | 4.556 ms | 3 |
Json | Async_GroupByWithDefaultOptions | 4.838 ms | 4 |
Xml | Async_GroupByWithPagingOptions | 4.875 ms | 4 |
EntityFramework | Async_GroupByWithPagingOptions | 5.592 ms | 5 |
AdoNet | Async_GroupByWithPagingOptions | 5.940 ms | 6 |
EntityFramework | Async_GroupByWithDefaultOptions | 6.788 ms | 7 |
NHibernate | Async_GroupByWithDefaultOptions | 9.352 ms | 8 |
NHibernate | Async_GroupByWithPagingOptions | 9.384 ms | 8 |
EntityFrameworkCore | Async_GroupByWithDefaultOptions | 10.593 ms | 9 |
EntityFrameworkCore | Async_GroupByWithPagingOptions | 13.786 ms | 10 |
AdoNet | Async_GroupByWithDefaultOptions | 15.265 ms | 11 |
InMemory | Async_ToDictionaryWithDefaultOptions | 4.293 ms | 1 |
InMemory | Async_ToDictionaryWithPagingOptions | 4.409 ms | 2 |
Xml | Async_ToDictionaryWithDefaultOptions | 4.427 ms | 2 |
Json | Async_ToDictionaryWithPagingOptions | 5.001 ms | 3 |
Xml | Async_ToDictionaryWithPagingOptions | 5.162 ms | 4 |
Json | Async_ToDictionaryWithDefaultOptions | 5.656 ms | 5 |
AdoNet | Async_ToDictionaryWithPagingOptions | 5.826 ms | 6 |
EntityFramework | Async_ToDictionaryWithPagingOptions | 7.841 ms | 7 |
EntityFrameworkCore | Async_ToDictionaryWithPagingOptions | 10.102 ms | 8 |
NHibernate | Async_ToDictionaryWithPagingOptions | 10.125 ms | 8 |
NHibernate | Async_ToDictionaryWithDefaultOptions | 11.509 ms | 9 |
EntityFramework | Async_ToDictionaryWithDefaultOptions | 18.055 ms | 10 |
AdoNet | Async_ToDictionaryWithDefaultOptions | 20.043 ms | 11 |
EntityFrameworkCore | Async_ToDictionaryWithDefaultOptions | 24.843 ms | 12 |
NHibernate | FindWithDefaultOptions | NA | ? |
NHibernate | FindWithPagingOptions | NA | ? |
InMemory | FindWithId | 1.615 ms | 1 |
InMemory | FindWithPredicate | 2.553 ms | 2 |
Xml | FindWithId | 2.732 ms | 3 |
InMemory | FindWithPagingOptions | 2.814 ms | 4 |
Json | FindWithId | 2.946 ms | 5 |
AdoNet | FindWithId | 3.038 ms | 6 |
InMemory | FindWithDefaultOptions | 3.294 ms | 7 |
EntityFramework | FindWithPagingOptions | 3.469 ms | 8 |
EntityFramework | FindWithId | 3.670 ms | 9 |
Json | FindWithPagingOptions | 3.704 ms | 9 |
Json | FindWithDefaultOptions | 3.713 ms | 9 |
Xml | FindWithDefaultOptions | 3.768 ms | 10 |
AdoNet | FindWithPagingOptions | 3.788 ms | 10 |
Xml | FindWithPredicate | 3.846 ms | 11 |
Json | FindWithPredicate | 4.302 ms | 12 |
EntityFrameworkCore | FindWithId | 5.018 ms | 13 |
Xml | FindWithPagingOptions | 5.203 ms | 14 |
AdoNet | FindWithDefaultOptions | 6.051 ms | 15 |
EntityFramework | FindWithPredicate | 6.143 ms | 16 |
EntityFrameworkCore | FindWithPagingOptions | 6.393 ms | 17 |
NHibernate | FindWithId | 7.092 ms | 18 |
NHibernate | FindWithPredicate | 11.587 ms | 19 |
AdoNet | FindWithPredicate | 13.305 ms | 20 |
EntityFramework | FindWithDefaultOptions | 25.229 ms | 21 |
EntityFrameworkCore | FindWithPredicate | 43.060 ms | 22 |
EntityFrameworkCore | FindWithDefaultOptions | 45.521 ms | 23 |
NHibernate | Async_FindWithDefaultOptions | NA | ? |
NHibernate | Async_FindWithPagingOptions | NA | ? |
InMemory | Async_FindWithId | 1.074 ms | 1 |
InMemory | Async_FindWithPagingOptions | 2.454 ms | 2 |
InMemory | Async_FindWithDefaultOptions | 2.759 ms | 3 |
Json | Async_FindWithId | 2.875 ms | 4 |
Xml | Async_FindWithId | 2.980 ms | 5 |
InMemory | Async_FindWithPredicate | 3.313 ms | 6 |
EntityFramework | Async_FindWithId | 3.463 ms | 7 |
Json | Async_FindWithPagingOptions | 3.791 ms | 8 |
Xml | Async_FindWithPredicate | 3.951 ms | 9 |
Xml | Async_FindWithPagingOptions | 4.069 ms | 10 |
EntityFramework | Async_FindWithDefaultOptions | 4.071 ms | 10 |
Json | Async_FindWithPredicate | 4.137 ms | 11 |
Json | Async_FindWithDefaultOptions | 4.144 ms | 11 |
Xml | Async_FindWithDefaultOptions | 4.153 ms | 11 |
AdoNet | Async_FindWithId | 4.788 ms | 12 |
NHibernate | Async_FindWithId | 5.540 ms | 13 |
AdoNet | Async_FindWithPagingOptions | 5.579 ms | 13 |
EntityFrameworkCore | Async_FindWithId | 5.879 ms | 14 |
EntityFrameworkCore | Async_FindWithPagingOptions | 5.896 ms | 14 |
EntityFramework | Async_FindWithPagingOptions | 5.938 ms | 14 |
AdoNet | Async_FindWithDefaultOptions | 7.995 ms | 15 |
NHibernate | Async_FindWithPredicate | 8.793 ms | 16 |
EntityFrameworkCore | Async_FindWithPredicate | 14.515 ms | 17 |
AdoNet | Async_FindWithPredicate | 15.652 ms | 18 |
EntityFrameworkCore | Async_FindWithDefaultOptions | 16.082 ms | 19 |
EntityFramework | Async_FindWithPredicate | 16.202 ms | 19 |
Benchmarks with issues: Repository_Find_Benchmarks.FindWithDefaultOptions: 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_FindWithDefaultOptions: 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]