On Sat, Sep 4, 2010 at 10:18 AM, Justin Erenkrantz <jus...@erenkrantz.com> wrote: > When compiled with SVN_DEBUG and SQLITE3_DEBUG and 'svn st' against a > svn trunk WC, a number of things pop out. > > We perform 28,062 SQL queries. > > --- > DBG: sqlite.c: 63: sql="select root, uuid from repository where id = 1;" > --- > > We execute *this* query (STMT_SELECT_REPOSITORY_BY_ID) 2215 times. Yikes. > > I think this has to do with svn_wc__db_base_get_info's call to > fetch_repos_info. I'd think we'd be able to cache this result. I'll > take a stab and see if this reduction saves us any real time. The > root and uuid should be constant for an wc_id...right?
It's actually svn_wc__db_read_info's fetch_repos_info call... With 2215 queries: ~/Applications/svn-trunk-no-debug/bin/svn st 0.26s user 0.05s system 98% cpu 0.311 total With a quick-and-hacky cache: ~/Applications/svn-trunk-no-debug/bin/svn st 0.25s user 0.05s system 98% cpu 0.298 total It's worth a good 4% time savings... A quick back-of-the-envelope calculation says that if we can remove all of the extraneous 13,290 SQL queries (out of 28,062 ; leaving behind 14,772 queries) - we will likely gain something like 25% from the 0.311 down to around 0.233 seconds. It's still much higher than 0.050 than 'svn st' on 1.6.x yields, but inching closer... -- justin