Skip to content

Performance

Johelvis Guzman edited this page May 28, 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.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]

Clone this wiki locally