Some of the information here may be outdated, please check the book instead
[edit]

Thank you Michael Wills for running these benchmarks

DISCLAMER: These benchmarks are prelimiary. Please let us know if you can help us improve SQLAlchemy or Storm benchmarks and if you are willing to donate some time to run benchmarks yourself.

Indeed some of the criticism described in http://rapd.wordpress.com/2007/12/30/interesting-criticism-against-sqlalchemy/ applies to our benchmarks as well, in fact we did not fix the problem described about the Storm benchmarks. We are not sure whether the autocommit feature of SQLAlchemy is off (as should be for a fair comparison). What we know for sure is that every web2py statement results in an execute(query). web2py only commits when db.commit() is called explicitly. We do not call it because we are not benchmarking the database but the ORM.

               web2py       SQLAlchemy    Storm
create tables: 00:00.141    00:00.265     00:00.250
populate     : 00:00.031    00:00.047     00:00.047
insert       : 00:00.953    00:02.656     00:00.203
properties   : 00:12.454    00:27.188     00:04.219
expressions  : 00:40.234    06:31.640     35:35.031
aggregates   : 00:47.297    00:40.532     00:15.157
editing      : 00:05.000    00:10.890     00:12.500

Benchmark code: http://mdp.cti.depaul.edu/AlterEgo/default/download/document.file.964748794769.zip

Benchmark specs:

WinXP SP2
RAM: 512MB (-8MB shared video memory so 504MB)
CPU: P4 3GHz (shows as 2.99GHz in computer properties)
HD: Seagate ST340014A
Postgresql 8.3
Python 2.5.1
SQLAlchemy 0.4.4
Storm 0.12
Web2Py 1.28
© 2008-2010 by Massimo Di Pierro - All rights reserved - Powered by web2py - design derived from a theme by the earlybird
The content of this book is released under the Artistic License 2.0 - Modified content cannot be reproduced.