[Bug 4630] New: Rebasing across thousands of changesets on a large repository is slow

mercurial-bugs at selenic.com mercurial-bugs at selenic.com
Tue Apr 28 15:55:11 UTC 2015


http://bz.selenic.com/show_bug.cgi?id=4630

          Priority: normal
            Bug ID: 4630
                CC: mercurial-devel at selenic.com
          Assignee: bugzilla at selenic.com
           Summary: Rebasing across thousands of changesets on a large
                    repository is slow
          Severity: bug
    Classification: Unclassified
                OS: All
          Reporter: gregory.szorc at gmail.com
          Hardware: All
            Status: UNCONFIRMED
           Version: 3.4-rc
         Component: Mercurial
           Product: Mercurial

I'm not yet sure whether this is a regression (testing now), but `hg rebase`
across thousands of changesets in my Firefox repository is extremely slow.
Specifically, applying individual changesets is taking several seconds per
changeset.

Here is a profile. Some of the contents will be from doing a 20,000+ file
working directory update.

   CallCount    Recursive     Total(s)    Inline(s) module:lineno(function)
     3829775            0     26.2298     26.2298   <zlib.decompress>
      949697            0     11.6072     11.6072   <open>
     2038438            0    126.1228     10.5551  
mercurial.revlog:1035(revision)
     2037045            0     89.5936      8.8702      
mercurial.revlog:976(_chunks)
     2037045            0      2.1490      2.1490      
<mercurial.mpatch.patches>
     2037045            0     18.9800      1.9220      
mercurial.revlog:1109(_checkhash)
     1946068            0      1.8783      1.3969      
mercurial.changelog:208(node)
     1946021            0      1.8928      1.3331      
mercurial.changelog:226(flags)
     1946068            0    142.5942     10.1531  
mercurial.changelog:306(read)
     1946068            0    116.7430      9.9609      
mercurial.revlog:1035(revision)
     3892124            0      2.4511      2.4511       <method 'split' of
'str' objects>
     1946062            0      1.6636      1.6636       <method 'index' of
'str' objects>
     3892124            0      8.9393      1.6514      
mercurial.encoding:83(tolocal)
     1946062            0      1.1620      1.1620       <binascii.unhexlify>
     2037045            0     89.5936      8.8702  
mercurial.revlog:976(_chunks)
     2874953            0     49.7314      3.4215      
mercurial.revlog:964(_chunkraw)
     3892342            0     28.4089      2.1917      
mercurial.revlog:81(decompress)
     3892342            0      1.3454      1.3454      
mercurial.revlog:349(start)
     3892342            0      0.7155      0.7155      
mercurial.revlog:353(length)
     3892342            0      0.5223      0.5223       <method 'append' of
'list' objects>
      949459            0      8.5870      8.5870   <method 'read' of 'file'
objects>
     4530518            0      8.0274      8.0274   <_heapq.heappop>
     4518586            0      6.9824      6.9824   <_heapq.heappush>
     4234016            0      4.4733      4.4733   <method 'update' of
'_hashlib.HASH' objects>
     6956548            0      6.1317      4.2965  
mercurial.changelog:220(parentrevs)
     6956548            0      1.8353      1.8353      
mercurial.revlog:347(parentrevs)
          17            0      4.0722      4.0722  
<mercurial.osutil.statfiles>
      838034            0      4.1824      4.0054  
mercurial.revlog:921(_addchunk)
     1430542            0      0.1770      0.1770       <len>
     9643208            0      3.7968      3.7968   mercurial.revlog:349(start)

-- 
You are receiving this mail because:
You are on the CC list for the bug.


More information about the Mercurial-devel mailing list