durusmail: durus-users: Re: Comparison of File, Shelf, Postgresql storages.
Comparison of File, Shelf, Postgresql storages.
2007-09-13
Re: Comparison of File, Shelf, Postgresql storages.
2007-09-13
2007-09-13
2007-09-13
2007-09-13
Re: Comparison of File, Shelf, Postgresql storages.
2007-09-13
Updated: Comparison of File, Shelf, Postgresql storages.
2007-09-14
Re: Comparison of File, Shelf, Postgresql storages.
Michael Watkins
2007-09-13
I've run the same suite using Jesus' BerkeleyDBStorage, restating
all for easy comparison (and I didn't realize I'd left a bunch of
copy and paste cruft laying about in the earlier message).

1. Create a new storage
-----------------------

500,000 "NewsItem" instances -
                Seconds
FileStorage2    341 (341MB RAM consumed at max)
ShelfStorage    535 (375MB)
PgStorage       867 Python: approx 105MB, pg: 30 - 45MB
BerkeleyDBStorage
                951 (346 RAM consumed at max)
                    file space consumed ~ 250MB - File storages
                    consume approx 98 - 105MB.


2. Time to Pack
---------------

(following initial commit of 500,000 new object instances; does not
include start up time)

                Seconds     RAM Consumed During
FileStorage2    52          214MB
ShelfStorage    247          74
PgStorage       163          29 (Postgresql server)
                             44 (Python process)
BerkeleyDBStorage
Note that this storage tracks objects for garbage collection during
normal operation; pack() has nothing to do unless there is garbage
to clean up - it does not examine every record in the storage as all
the other storage examples do.
                0.014        - no deleted items - negligible
                59          30MB (6655 'garbage objects')


3. Start Up Times
-----------------
(time to get "root")

                Seconds     RAM Consumed
FileStorage2
  Before pack   12.316       75MB
  After pack     3.923      104MB
ShelfStorage
  Before pack   18.696      75MB
  After pack     0.001      14MB
PgStorage        0.084      Python: 15MB Postgres: 18MB
BerkeleyDBStorage
  Before pack    0.49*      26MB
  After pack     0.081      20MB observed
  *Not so sure about this number - may have been my system

4. Time to Access Objects
-------------------------

Best of three runs; random object from within the 500,000 news items
returned.

            (All times after pack, in seconds)
            Constant  |--- Random ---------------------
                1       10      100     1000
FileStorage2    0.006   0.128   0.294   1.970
ShelfStorage    0.010   0.063   0.317   2.113
PgStorage       0,008   0.099   0.576   3.372
BerkeleyDBStorage
                0.008   0.042   0.343   2.229

reply