So I've started looking seriously into the performance of the various backends.
I wrote a simple little benchmark tool that runs a series of tests on N users
and issues:
- fetch - fetch all issue titles
- journl - fetch all issue journals
- jprops - access the special "activity", "creator" and "creation" props
- lookup - look up all users by username
- filter - perform a filter on the issues
- filtml - perform a filter on the issues, including Multilink
Preliminary results (not including gadfly because it's really not a serious
performance contender):
Test name fetch journl jprops lookup filter filtml TOTAL
anydbm: 10 0.03 0.23 0.01 0.03 1.09 1.09 2.48
bsddb3: 10 0.01 0.04 0.01 0.02 1.01 1.02 2.11
sqlite: 10 0.03 0.15 0.07 0.01 0.10 0.14 0.49
anydbm: 20 0.05 0.40 0.02 0.06 2.08 2.15 4.76
bsddb3: 20 0.02 0.08 0.02 0.05 2.09 2.25 4.51
sqlite: 20 0.07 0.22 0.15 0.01 0.14 0.24 0.83
anydbm: 100 0.10 1.15 0.11 0.65 21.00 21.34 44.35
bsddb3: 100 0.09 0.39 0.12 0.66 21.49 21.17 43.92
sqlite: 100 0.27 1.27 0.99 0.06 0.47 2.63 5.69
So sqlite is doing pretty well :)
Hee hee... this is my through-the-web editor of stuff. Some tweaks would be nice, but otherwise it's there...