On Thu, 2005-02-10 at 10:46 -0500, Daniel Berlin wrote:
> > Yup. At least I'm glad I was right about that. :-\
> > We do know from other measurements that using the delta combiner is
> > better than just applying the deltas in series (generating intermediate
> > fulltexts). But that's not much consolation.
> > Since we're looking specifically at blame, I suspect the best way to
> > improve perfoemance would be to do what I suggested earlier, that is,
> > teach get_file_revs to not recrete every fulltext from scratch.
> It doesn't though.
> Look at svn_repos_get_file_revs
I stupidly forgot to include the surrounding loop:
/* Walk through the revisions in chronological order. */
for (i = revnums->nelts; i > 0; --i)
svn_revnum_t rev = APR_ARRAY_IDX (revnums, i - 1, svn_revnum_t);
const char *rev_path = APR_ARRAY_IDX (paths, i - 1, const char *);
/* Open the revision root. */
SVN_ERR (svn_fs_revision_root (&root, repos->fs, rev, iter_pool));
> /* Compute and send delta if client asked for it.
> Note that this was initialized to NULL, so if !
> no deltas will be computed. */
> if (delta_handler)
> /* Get the content delta. */
> SVN_ERR (svn_fs_get_file_delta_stream (&delta_stream,
> last_root, last_path,
> root, rev_path,
> /* And send. */
> SVN_ERR (svn_txdelta_send_txstream (delta_stream,
/* Remember root, path and props for next iteration. */
last_root = root;
last_path = rev_path;
last_props = props;
/* Swap the pools. */
tmp_pool = iter_pool;
iter_pool = last_pool;
last_pool = tmp_pool;
> Note that it's sending a delta between the last revision it sent, and
> the current revision, and the client is recreating the fulltext by
> applying that delta to the last thing it received.
> Thus, it only sends one actual fulltext.
To unsubscribe, e-mail: email@example.com
For additional commands, e-mail: firstname.lastname@example.org
Received on Thu Feb 10 16:53:45 2005