Skip to content

Rose::DB::Object Benchmarks

siracusa edited this page Mar 18, 2015 · 3 revisions

The results below are from a run on my personal system (2x2.8GHz Xeon 5400) on April 30, 2013.

(These benchmarks are very sensibly done, and I tend to use them as a way to check the performance impact of updates to DBIx::Class. Props and thanks to Siracusa for providing them. -- Matt S Trout, DBIx::Class project founder.)

In case it isn't obvious, the modules are abbreviated like this:

CDBI - Class::DBI
CDBS - Class::DBI::Sweet
DBIC - DBIx::Class
RDBO - Rose::DB::Object

To see how these modules fare against raw DBI, check the results that include DBI.

% ./bench.pl --cmp Class::DBI,Class::DBI::Sweet,DBIx::Class --db mysql --iterations 4000 --cpu 10 --skip-intro

##
## Benchmark against Class::DBI, Class::DBI::Sweet, DBIx::Class using MySQL
##

Module             Version
-----------------  -------
Class::DBI         3.0.17
Class::DBI::Sweet  0.11
DBIx::Class        0.08250
Rose::DB::Object   0.805

# Simple: insert 1
       Rate DBIC CDBS CDBI RDBO
DBIC 1732/s   -- -11% -14% -77%
CDBS 1942/s  12%   --  -3% -75%
CDBI 2010/s  16%   4%   -- -74%
RDBO 7692/s 344% 296% 283%   --

# Complex: insert 1
       Rate DBIC CDBS CDBI RDBO
DBIC 1724/s   -- -11% -14% -75%
CDBS 1932/s  12%   --  -4% -72%
CDBI 2010/s  17%   4%   -- -71%
RDBO 6897/s 300% 257% 243%   --

# Simple: insert 2
       Rate DBIC CDBS CDBI RDBO
DBIC 1026/s   --  -7% -11% -83%
CDBS 1108/s   8%   --  -4% -82%
CDBI 1156/s  13%   4%   -- -81%
RDBO 6154/s 500% 455% 432%   --

# Complex: insert 2
       Rate DBIC CDBS CDBI RDBO
DBIC 1180/s   --  -4%  -7% -79%
CDBS 1223/s   4%   --  -4% -79%
CDBI 1270/s   8%   4%   -- -78%
RDBO 5714/s 384% 367% 350%   --

# Simple: accessor 1
       Rate  CDBI  CDBS  DBIC  RDBO
CDBI 3.10/s    --   -1%  -89%  -95%
CDBS 3.13/s    1%    --  -89%  -95%
DBIC 28.4/s  816%  807%    --  -57%
RDBO 65.4/s 2008% 1988%  130%    --

# Complex: accessor 1
       Rate  CDBS  CDBI  DBIC  RDBO
CDBS 3.12/s    --   -0%  -89%  -95%
CDBI 3.13/s    0%    --  -89%  -95%
DBIC 28.6/s  816%  815%    --  -55%
RDBO 64.3/s 1959% 1955%  125%    --

# Simple: accessor 2
       s/iter  CDBI  CDBS  DBIC  RDBO
CDBI     1.41    --   -0%  -90%  -96%
CDBS     1.41    0%    --  -90%  -96%
DBIC    0.137  929%  926%    --  -59%
RDBO 5.68e-02 2388% 2382%  142%    --

# Complex: accessor 2
     s/iter  CDBI  CDBS  DBIC  RDBO
CDBI   1.42    --   -0%  -68%  -92%
CDBS   1.42    0%    --  -68%  -92%
DBIC  0.449  217%  216%    --  -73%
RDBO  0.120 1089% 1086%  275%    --

# Simple: load 1
       Rate CDBS DBIC CDBI RDBO
CDBS 1802/s   -- -10% -31% -70%
DBIC 2000/s  11%   -- -24% -67%
CDBI 2614/s  45%  31%   -- -57%
RDBO 6061/s 236% 203% 132%   --

# Simple: load 2
       Rate CDBS DBIC CDBI RDBO
CDBS 1329/s   --  -1% -28% -70%
DBIC 1347/s   1%   -- -27% -70%
CDBI 1835/s  38%  36%   -- -59%
RDBO 4494/s 238% 234% 145%   --

# Complex: load 2
       Rate CDBS DBIC CDBI RDBO
CDBS 1067/s   -- -20% -22% -76%
DBIC 1333/s  25%   --  -3% -70%
CDBI 1375/s  29%   3%   -- -69%
RDBO 4396/s 312% 230% 220%   --

# Simple: load 3
       Rate DBIC CDBS CDBI RDBO
DBIC  547/s   -- -43% -55% -78%
CDBS  952/s  74%   -- -21% -61%
CDBI 1205/s 120%  27%   -- -51%
RDBO 2454/s 348% 158% 104%   --

# Complex: load 3
       Rate DBIC CDBS CDBI RDBO
DBIC  546/s   -- -32% -43% -77%
CDBS  808/s  48%   -- -16% -66%
CDBI  964/s  76%  19%   -- -60%
RDBO 2395/s 338% 196% 149%   --

# Simple: update 1
       Rate DBIC CDBS CDBI RDBO
DBIC  911/s   --  -6% -28% -74%
CDBS  969/s   6%   -- -23% -72%
CDBI 1262/s  38%  30%   -- -63%
RDBO 3448/s 278% 256% 173%   --

# Simple: update 2
       Rate DBIC CDBS CDBI RDBO
DBIC  742/s   --  -8% -24% -73%
CDBS  803/s   8%   -- -17% -70%
CDBI  973/s  31%  21%   -- -64%
RDBO 2721/s 267% 239% 180%   --

# Complex: update 2
       Rate CDBS DBIC CDBI RDBO
CDBS  575/s   -- -14% -15% -77%
DBIC  671/s  17%   --  -0% -73%
CDBI  673/s  17%   0%   -- -73%
RDBO 2469/s 330% 268% 267%   --

# Simple: search 1
       Rate CDBS CDBI DBIC RDBO
CDBS  135/s   -- -14% -78% -88%
CDBI  157/s  16%   -- -74% -86%
DBIC  602/s 346% 285%   -- -47%
RDBO 1131/s 737% 622%  88%   --

# Simple: search 2
       Rate CDBS CDBI DBIC RDBO
CDBS 55.7/s   -- -11% -85% -91%
CDBI 62.3/s  12%   -- -84% -90%
DBIC  380/s 581% 509%   -- -36%
RDBO  597/s 970% 857%  57%   --

# Complex: search 2
       Rate  CDBS  CDBI  DBIC  RDBO
CDBS 14.8/s    --   -2%  -96%  -97%
CDBI 15.1/s    2%    --  -96%  -97%
DBIC  376/s 2434% 2389%    --  -35%
RDBO  576/s 3786% 3717%   53%    --

# Simple: search with limit and offset
       Rate CDBS DBIC RDBO
CDBS 55.3/s   -- -85% -91%
DBIC  375/s 578%   -- -36%
RDBO  589/s 964%  57%   --

# Complex: search with limit and offset
       Rate  CDBS  DBIC  RDBO
CDBS 14.8/s    --  -96%  -97%
DBIC  373/s 2423%    --  -37%
RDBO  590/s 3884%   58%    --

# Making indexes...

# Simple: search with 1-to-1 sub-objects
       Rate DBIC CDBS CDBI RDBO
DBIC 31.4/s   -- -32% -38% -90%
CDBS 46.2/s  47%   --  -9% -86%
CDBI 50.8/s  62%  10%   -- -84%
RDBO  325/s 934% 603% 539%   --

# Complex: search with 1-to-1 sub-objects
       Rate  CDBS  CDBI  DBIC  RDBO
CDBS 14.1/s    --   -2%  -55%  -96%
CDBI 14.3/s    2%    --  -55%  -96%
DBIC 31.5/s  124%  120%    --  -90%
RDBO  328/s 2226% 2184%  939%    --

# Inserting 1-to-n records.....

# Simple: search with 1-to-1 and 1-to-n sub-objects
     s/iter CDBS CDBI DBIC RDBO
CDBS   3.00   -- -16% -55% -88%
CDBI   2.53  19%   -- -47% -86%
DBIC   1.34 124%  89%   -- -74%
RDBO  0.350 759% 622% 283%   --

# Complex: search with 1-to-1 and 1-to-n sub-objects
     s/iter  CDBS  CDBI  DBIC  RDBO
CDBS   4.04    --  -12%  -65%  -91%
CDBI   3.55   14%    --  -61%  -90%
DBIC   1.40  189%  154%    --  -74%
RDBO  0.358 1028%  890%  290%    --

# Simple: iterate 1
      Rate CDBS CDBI DBIC RDBO
CDBS 106/s   -- -11% -58% -72%
CDBI 119/s  12%   -- -53% -68%
DBIC 253/s 139% 113%   -- -33%
RDBO 376/s 255% 217%  49%   --

# Complex: iterate 1
      Rate CDBS CDBI DBIC RDBO
CDBS 106/s   -- -10% -58% -85%
CDBI 118/s  11%   -- -53% -83%
DBIC 252/s 138% 114%   -- -63%
RDBO 688/s 551% 485% 173%   --

# Simple: iterate 2
       Rate CDBS CDBI DBIC RDBO
CDBS 47.4/s   -- -11% -74% -77%
CDBI 53.5/s  13%   -- -70% -74%
DBIC  181/s 282% 238%   -- -14%
RDBO  209/s 342% 292%  16%   --

# Complex: iterate 2
       Rate  CDBS  CDBI  RDBO  DBIC
CDBS 13.9/s    --   -3%  -91%  -92%
CDBI 14.3/s    3%    --  -91%  -92%
RDBO  162/s 1066% 1030%    --  -10%
DBIC  180/s 1201% 1161%   12%    --

# Simple: iterate 3
       Rate CDBS CDBI DBIC RDBO
CDBS 20.0/s   --  -5% -29% -84%
CDBI 21.1/s   5%   -- -25% -83%
DBIC 28.2/s  41%  34%   -- -78%
RDBO  126/s 531% 499% 347%   --

# Complex: iterate 3
       Rate CDBS CDBI DBIC RDBO
CDBS 9.78/s   --  -2% -65% -91%
CDBI 10.0/s   2%   -- -65% -91%
DBIC 28.2/s 188% 182%   -- -74%
RDBO  107/s 995% 970% 280%   --

# Dropping indexes...

# Simple: delete
       Rate DBIC CDBS CDBI RDBO
DBIC 1020/s   --  -7% -29% -89%
CDBS 1093/s   7%   -- -23% -88%
CDBI 1429/s  40%  31%   -- -85%
RDBO 9302/s 812% 751% 551%   --

# Complex: delete
       Rate  CDBS  DBIC  CDBI  RDBO
CDBS  675/s    --  -12%  -16%  -93%
DBIC  769/s   14%    --   -4%  -92%
CDBI  803/s   19%    4%    --  -92%
RDBO 9524/s 1312% 1138% 1086%    --

# Simple: insert or update
       Rate DBIC CDBS CDBI RDBO
DBIC  753/s   -- -15% -37% -86%
CDBS  887/s  18%   -- -26% -83%
CDBI 1201/s  59%  35%   -- -77%
RDBO 5263/s 599% 493% 338%   --

# Complex: insert or update
       Rate DBIC RDBO
DBIC  517/s   -- -88%
RDBO 4396/s 751%   --