Skip to content

RawBencher Performance Unofficial

Grauenwolf edited this page Mar 26, 2016 · 2 revisions

These are unofficial results of running Frans Bouma's RawDataAccessBencher against Chain's normal and compiled materializers. https://github.com/FransBouma/RawDataAccessBencher

Results per framework. Values are given as: 'mean (standard deviation)'
==============================================================================
Non-change tracking fetches, set fetches (25 runs), no caching
------------------------------------------------------------------------------
Handcoded materializer using DbDataReader                            : 160.50ms (4.88ms)        Enum: 1.17ms (0.22ms)
Handcoded materializer using DbDataReader (GetValues(array), boxing) : 166.47ms (2.27ms)        Enum: 1.30ms (0.14ms)
Chain v0.7.5927.4601 with Compiled Materializers                     : 168.82ms (5.02ms)        Enum: 1.14ms (0.08ms)
LINQ to DB v1.0.7.3 (v1.0.7.3) (normal)                              : 173.59ms (4.34ms)        Enum: 1.12ms (0.18ms)
Raw DbDataReader materializer using object arrays                    : 176.37ms (1.40ms)        Enum: 3.13ms (0.24ms)
LINQ to DB v1.0.7.3 (v1.0.7.3) (compiled)                            : 179.14ms (16.55ms)       Enum: 1.33ms (0.25ms)
PetaPoco Fast v4.0.3                                                 : 184.00ms (3.39ms)        Enum: 1.30ms (0.14ms)
LLBLGen Pro v5.0.0.0 (v5.0.0), Poco typed view with QuerySpec        : 192.11ms (8.95ms)        Enum: 1.35ms (0.16ms)
LLBLGen Pro v5.0.0.0 (v5.0.0), Poco typed view with Linq             : 192.27ms (1.93ms)        Enum: 1.12ms (0.07ms)
PetaPoco v4.0.3                                                      : 211.58ms (16.01ms)       Enum: 1.18ms (0.10ms)
Dapper v1.40.0.0                                                     : 212.84ms (3.96ms)        Enum: 1.33ms (0.19ms)
ServiceStack OrmLite v4.0.50.0 (v4.0.50.0)                           : 217.17ms (18.20ms)       Enum: 1.29ms (0.27ms)
Entity Framework v6.0.0.0 (v6.1.40302.0)                             : 221.27ms (5.46ms)        Enum: 1.22ms (0.14ms)
Linq to Sql v4.0.0.0 (v4.6.1038.0)                                   : 229.89ms (16.24ms)       Enum: 1.39ms (0.27ms)
Entity Framework v7.0.0.0 (v7.0.0.11116)                             : 290.73ms (6.71ms)        Enum: 1.36ms (0.14ms)
LLBLGen Pro v5.0.0.0 (v5.0.0), DataTable based TypedView             : 368.16ms (26.71ms)       Enum: 3.44ms (0.37ms)
Massive using dynamic class                                          : 623.04ms (3.96ms)        Enum: 27.23ms (3.31ms)
Oak.DynamicDb using dynamic Dto class                                : 676.64ms (22.29ms)       Enum: 130.33ms (16.46ms)

Change tracking fetches, set fetches (25 runs), no caching
------------------------------------------------------------------------------
DataTable, using DbDataAdapter                                       : 258.45ms (6.48ms)        Enum: 34.86ms (1.19ms)
Linq to Sql v4.0.0.0 (v4.6.1038.0)                                   : 294.92ms (11.82ms)       Enum: 1.50ms (0.13ms)
LLBLGen Pro v5.0.0.0 (v5.0.0)                                        : 301.34ms (4.68ms)        Enum: 8.08ms (0.44ms)
Oak.DynamicDb using typed dynamic class                              : 675.08ms (20.56ms)       Enum: 842.09ms (19.15ms)
NHibernate v4.0.0.4000 (v4.0.4.4000)                                 : 2,556.60ms (65.43ms)     Enum: 1.84ms (0.37ms)
Entity Framework v6.0.0.0 (v6.1.40302.0)                             : 2,733.29ms (46.59ms)     Enum: 1.95ms (0.32ms)
Entity Framework v7.0.0.0 (v7.0.0.11116)                             : 3,426.80ms (113.47ms)    Enum: 1.77ms (0.15ms)

Non-change tracking individual fetches (100 elements, 25 runs), no caching
------------------------------------------------------------------------------
Handcoded materializer using DbDataReader (GetValues(array), boxing) : 0.19ms (0.01ms) per individual fetch
Handcoded materializer using DbDataReader                            : 0.19ms (0.01ms) per individual fetch
Chain v0.7.5927.4601 with Compiled Materializers                     : 0.21ms (0.01ms) per individual fetch
Dapper v1.40.0.0                                                     : 0.21ms (0.02ms) per individual fetch
Raw DbDataReader materializer using object arrays                    : 0.28ms (0.02ms) per individual fetch
Massive using dynamic class                                          : 0.29ms (0.02ms) per individual fetch
Oak.DynamicDb using dynamic Dto class                                : 0.36ms (0.15ms) per individual fetch
ServiceStack OrmLite v4.0.50.0 (v4.0.50.0)                           : 0.41ms (0.15ms) per individual fetch
LINQ to DB v1.0.7.3 (v1.0.7.3) (compiled)                            : 0.41ms (0.03ms) per individual fetch
LLBLGen Pro v5.0.0.0 (v5.0.0), Poco typed view with QuerySpec        : 0.48ms (0.01ms) per individual fetch
LINQ to DB v1.0.7.3 (v1.0.7.3) (normal)                              : 0.49ms (0.02ms) per individual fetch
PetaPoco Fast v4.0.3                                                 : 0.51ms (0.04ms) per individual fetch
LLBLGen Pro v5.0.0.0 (v5.0.0), DataTable based TypedView             : 0.72ms (0.02ms) per individual fetch
Entity Framework v7.0.0.0 (v7.0.0.11116)                             : 0.79ms (0.03ms) per individual fetch
Entity Framework v6.0.0.0 (v6.1.40302.0)                             : 1.76ms (0.45ms) per individual fetch
Linq to Sql v4.0.0.0 (v4.6.1038.0)                                   : 1.98ms (0.02ms) per individual fetch
LLBLGen Pro v5.0.0.0 (v5.0.0), Poco typed view with Linq             : 2.00ms (0.81ms) per individual fetch
PetaPoco v4.0.3                                                      : 4.34ms (0.04ms) per individual fetch

Change tracking individual fetches (100 elements, 25 runs), no caching
------------------------------------------------------------------------------
DataTable, using DbDataAdapter                                       : 0.30ms (0.03ms) per individual fetch
LLBLGen Pro v5.0.0.0 (v5.0.0)                                        : 0.41ms (0.03ms) per individual fetch
Oak.DynamicDb using typed dynamic class                              : 0.43ms (0.18ms) per individual fetch
NHibernate v4.0.0.4000 (v4.0.4.4000)                                 : 0.63ms (0.04ms) per individual fetch
Entity Framework v7.0.0.0 (v7.0.0.11116)                             : 0.87ms (0.03ms) per individual fetch
Entity Framework v6.0.0.0 (v6.1.40302.0)                             : 0.96ms (0.08ms) per individual fetch
Linq to Sql v4.0.0.0 (v4.6.1038.0)                                   : 2.56ms (0.68ms) per individual fetch

Change tracking fetches, eager load fetches, 3-node split graph, 1000 root elements (25 runs), no caching
------------------------------------------------------------------------------
LLBLGen Pro v5.0.0.0 (v5.0.0)                                        : 77.38ms (1.72ms)
NHibernate v4.0.0.4000 (v4.0.4.4000)                                 : 383.18ms (14.60ms)
Entity Framework v6.0.0.0 (v6.1.40302.0)                             : 424.45ms (29.75ms)
Linq to Sql v4.0.0.0 (v4.6.1038.0)                                   : 437.46ms (1,782.49ms)
Entity Framework v7.0.0.0 (v7.0.0.11116)                             : 549.43ms (6.48ms)

Change tracking fetches, set fetches (25 runs), caching
------------------------------------------------------------------------------
LLBLGen Pro v5.0.0.0 (v5.0.0)                                        : 77.96ms (2.42ms) Enum: 5.91ms (0.38ms)

Change tracking individual fetches (100 elements, 25 runs), caching
------------------------------------------------------------------------------
LLBLGen Pro v5.0.0.0 (v5.0.0)                                        : 0.16ms (0.02ms) per individual fetch