Update: have added timings for N=100,000 (or thereabouts), which equates to 87,000 or so open issues.
Roundup 0.7 includes some new optimisations, specifically automatic generation of a number of table indexes in the RDBMS backends.
I've added a script "tools/load_tracker.py" which loads a tracker with N issues and N/100 users. Random distribution of priorities, statuses and assignetos. Approximately 85% of issues are open (ie. 17 in 20, 170 in 200, etc).
Against a stock classic tracker, loading the standard index page (sort by activity, group by priority, showing batches of 50 issues at a time):
Backend | N | Index Page Time |
anydbm | 200 | 3.5s |
sqlite | 20,000 | 1.1s |
100,000 | 4.5s (9.4s) |
metakit | 20,000 | 1.9s |
100,000 | 8.4s (18s) |
mysql | 20,000 | 1.3s |
45,000 | 2.1s |
65,000 | 3.3s (5.7s) |
postgresql | 20,000 | 1.1s |
75,000 | 2.7s |
100,000 | 4.1s (5.7s) |
Note:The second (bracketed) values indicate the time for a concurrant index page view (I press reload in a second browser window shortly after requesting the first). The sqlite and metakit backends serialise accesses, so their second access time is understandably doubled.