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