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