On Mon, Mar 2, 2009 at 11:16 AM, Paul Burba <ptburba_at_gmail.com> wrote:
> FWIW here is my timing:
>
> =========
> 1.6.0.RC3
> =========
>
> 1.6.0.RC3>timethis svn merge -r 15456:15455
> http://tortoisesvn.tigris.org/svn/tortoisesvn/trunk
>
> TimeThis : Command Line : svn merge -r 15456:15455
> http://tortoisesvn.tigris.org/svn/tortoisesvn/trunk
> TimeThis : Start Time : Mon Mar 02 09:47:28 2009
>
> --- Reverse-merging r15456 into
> 'src\TortoiseProc\RevisionGraph\RevisionGraphDlg.cpp':
> U src\TortoiseProc\RevisionGraph\RevisionGraphDlg.cpp
> --- Reverse-merging r15456 into
> 'src\TortoiseProc\RevisionGraph\RevisionGraphDlg.h':
> U src\TortoiseProc\RevisionGraph\RevisionGraphDlg.h
>
> TimeThis : Command Line : svn merge -r 15456:15455
> http://tortoisesvn.tigris.org/svn/tortoisesvn/trunk
> TimeThis : Start Time : Mon Mar 02 09:47:28 2009
> TimeThis : End Time : Mon Mar 02 09:56:25 2009
> TimeThis : Elapsed Time : 00:08:57.296
>
>
> What is interesting, if we do this merge with --ignore-ancestry, which
> effectively disables all merge tracking, the merge is much quicker
> (appx 3 minutes vs 9 minutes) but is still much slower in 1.6.0/1.5.6
> when compared to 1.4.6 (i.e. appx 3 minutes vs 8 seconds). So there
> is something else slowing us down too:
>
>
> ===========================
> 1.6.0.RC3 --ignore-ancestry
> ===========================
>
> 1.6.0.RC3>C:\SVN\TSVN>timethis svn merge -r 15456:15455
> http://tortoisesvn.tigris.org/svn/tortoisesvn/trunk --ignore-ancestry
>
> TimeThis : Command Line : svn merge -r 15456:15455
> http://tortoisesvn.tigris.org/svn/tortoisesvn/trunk --ignore-ancestry
> TimeThis : Start Time : Mon Mar 02 10:04:29 2009
>
> --- Reverse-merging r15456 into
> 'src\TortoiseProc\RevisionGraph\RevisionGraphDlg.cpp':
> U src\TortoiseProc\RevisionGraph\RevisionGraphDlg.cpp
> --- Reverse-merging r15456 into
> 'src\TortoiseProc\RevisionGraph\RevisionGraphDlg.h':
> U src\TortoiseProc\RevisionGraph\RevisionGraphDlg.h
>
> TimeThis : Command Line : svn merge -r 15456:15455
> http://tortoisesvn.tigris.org/svn/tortoisesvn/trunk --ignore-ancestry
> TimeThis : Start Time : Mon Mar 02 10:04:29 2009
> TimeThis : End Time : Mon Mar 02 10:07:27 2009
> TimeThis : Elapsed Time : 00:02:58.562
This delay was due to a needless walk of the merge target looking for
subtrees with mergeinfo. If we stop this walk then the
--ignore-ancestry merge with 1.6.0.RC3 is more on par with 1.4.6:
1.6.0.RC3.PATCHED>C:\SVN\TSVN>timethis svn merge -r 15456:15455
http://tortoisesvn.tigris.org/svn/tortoisesvn/trunk --ignore-ancestry
TimeThis : Command Line : svn merge -r 15456:15455
http://tortoisesvn.tigris.org/svn/tortoisesvn/trunk --ignore-ancestry
TimeThis : Start Time : Mon Mar 02 14:16:54 2009
--- Reverse-merging r15456 into '.':
U src\TortoiseProc\RevisionGraph\RevisionGraphDlg.cpp
U src\TortoiseProc\RevisionGraph\RevisionGraphDlg.h
TimeThis : Command Line : svn merge -r 15456:15455
http://tortoisesvn.tigris.org/svn/tortoisesvn/trunk --ignore-ancestry
TimeThis : Start Time : Mon Mar 02 14:16:54 2009
TimeThis : End Time : Mon Mar 02 14:17:10 2009
TimeThis : Elapsed Time : 00:00:16.093
I'll commit this improvement to trunk and nominate it for backport to
1.5.x and 1.6.x. Obviously this does not address the merge aware
performance that caused Stefan to start this thread, but it does tell
us something we already knew: A significant part of merge's slowdown
in 1.5.0+ is due to the need to walk the working copy looking for
explicit subtree mergeinfo. This is not something we can skip for
mergeinfo aware merges, we need to know about these subtrees. Though
the ongoing WCNG work will probably make it a *lot* faster. There
might also be some special casing we can do for reverse merges from a
path's own natural history, I'll look into that.
Paul
------------------------------------------------------
http://subversion.tigris.org/ds/viewMessage.do?dsForumId=462&dsMessageId=1257793
Received on 2009-03-02 20:28:35 CET