> -----Original Message----- > From: hwri...@apache.org [mailto:hwri...@apache.org] > Sent: donderdag 10 februari 2011 23:56 > To: comm...@subversion.apache.org > Subject: svn commit: r1069602 - > /subversion/trunk/subversion/libsvn_wc/wc_db.c > > Author: hwright > Date: Thu Feb 10 22:56:11 2011 > New Revision: 1069602 > > URL: http://svn.apache.org/viewvc?rev=1069602&view=rev > Log: > Make the flush_entries() function fetch its own PDH, allowing callers > to avoid > fetching it. > > This has the side effect of causing flush_entries() to flush both the > current, > as well as the parent's caches in all cases. But since that will only > happen > in the backward compat scenario, it will have neglible real performance > impact. > > * subversion/libsvn_wc/wc_db.c > (flush_entries): Don't take a PDH param, fetch one internally. > [elsewhere]: Adjust callers to not provide a PDH. > > Modified: > subversion/trunk/subversion/libsvn_wc/wc_db.c > > Modified: subversion/trunk/subversion/libsvn_wc/wc_db.c > URL: > http://svn.apache.org/viewvc/subversion/trunk/subversion/libsvn_wc/wc_d > b.c?rev=1069602&r1=1069601&r2=1069602&view=diff > ======================================================================= > ======= > --- subversion/trunk/subversion/libsvn_wc/wc_db.c (original) > +++ subversion/trunk/subversion/libsvn_wc/wc_db.c Thu Feb 10 22:56:11 > 2011 > @@ -1057,10 +1057,16 @@ gather_repo_children(const apr_array_hea > /* */ > static svn_error_t * > flush_entries(svn_wc__db_t *db, > - svn_wc__db_pdh_t *pdh, > const char *local_abspath, > apr_pool_t *scratch_pool) > { > + svn_wc__db_pdh_t *pdh; > + const char *local_relpath; > + > + SVN_ERR(svn_wc__db_pdh_parse_local_abspath(&pdh, &local_relpath, db, > + local_abspath, > svn_sqlite__mode_readwrite, > + scratch_pool, scratch_pool)); > + > if (pdh->adm_access) > svn_wc__adm_access_set_entries(pdh->adm_access, NULL);
This code used to be just a few pointer compares in the normal case of no cached adm_access instances, but it is now splitting an abspath to a local relpath (read: allocating ram a few times) via several hashtable lookups. In some cases it might even perform disk-io. (By statting if a dirent is a file or a directory) Calling svn_wc__db_pdh_parse_local_abspath is not that cheap. I think we should consider reverting this change and maybe add a helper which takes a local_relpath instead for the cases where we already have that available. Bert