Haven't looked into the code yet, but this might be an nice
"bite-sized" issue to investigate, if someone has time and inclination
to do so:

Seen on a FSFS f8 repository (on Linux) with a 200 MB revision:

Apparently 'svnlook changed -r $REV' gets slow if $REV is large (as in
"lots of MB", not in amount of changed files -- it can be seen on a
commit with a single large file). OTOH, 'svnlook author' or 'svnlook
filesize' of that same revision+file will be almost instant.

Interestingly 'svn log -v -r $REV $URL' is much faster (not dependent
on the revision size), and shows the same information as 'svnlook
changed -r $REV'. This to me is a clear indication that 'svnlook
changed' is doing something sub-optimal, making it perform O(revsize)
instead of O(1).

Note: 'svnlook changed' is often used in hook scripts. In a pre-commit
hook one would run 'svnlook changed -t $TXN' on the transaction if one
would like to validate some things -- at that point 'svn log -v'
cannot be used as an alternative because there is no revision yet. I
would hope that any possible improvement would also apply to
transactions as well as to revisions.

-- 
Johan

Reply via email to