[CC += dev@; CC -= jira@] Julian Foad (JIRA) wrote on Tue, Jan 17, 2017 at 16:06:26 +0000: > The merge code makes multiple (4 in my test) synchronous > svn_ra_get_location_segments() queries to the server for each subtree > with mergeinfo. If, for example, 3600 subtrees have mergeinfo and each > query takes 0.25 second, that adds up to an hour. > > This is related to but different from the memory usage issue SVN-4667. > The results of most of these queries are stored temporarily and > account for only 10% of the total memory used in my test. > > Possible approaches to improving the merge code are: (1) make the > queries much more efficient; and (2) analyse how the results are used > and eliminate unnecessary queries.
The change could be done in a few places: 1. libsvn_client could call svn_ra_get_location_segments() fewer times 2. The svn_ra_get_location_segments() calls could send fewer requests to the server (e.g., by memoizing/caching results of earlier calls, to make the later calls faster) 3. The server could be made to answer mergeinfo queries faster (whether by methods similar to #2 or for that matter by inventing a new backend) Cheers, Daniel > The work-flow approach to improving the experience is: get the number > of subtrees with mergeinfo down to none or very few.