[Bug 4958] New: Several operations including 'uncommit' and 'commit --amend' are very slow

mercurial-bugs at selenic.com mercurial-bugs at selenic.com
Thu Nov 19 21:50:49 UTC 2015


https://bz.mercurial-scm.org/show_bug.cgi?id=4958

            Bug ID: 4958
           Summary: Several operations including 'uncommit' and 'commit
                    --amend' are very slow
           Product: Mercurial
           Version: 3.5.2
          Hardware: PC
                OS: Linux
            Status: UNCONFIRMED
          Severity: feature
          Priority: wish
         Component: evolution
          Assignee: bugzilla at selenic.com
          Reporter: zeratul976 at hotmail.com
                CC: mercurial-devel at selenic.com,
                    pierre-yves.david at ens-lyon.org

I'm experiencing an issue where several operations on a local clone of a large
repository (mozilla-central) are very slow (a minute or more), including
'uncommit' and 'commit --amend'.

Here's a profile for an 'uncommit':

botond at botond-laptop:~/dev/mozilla/central$ hg uncommit . --profile
new changeset is empty
(use "hg prune ." to remove it)
   CallCount    Recursive     Total(s)    Inline(s) module:lineno(function)
     5019183           11     27.4818     17.1618  
mercurial.localrepo:29(__get__)
     2214325            0     16.0778     13.2328  
mercurial.context:32(__new__)
     2214319            0     36.6911     12.4623  
mercurial.context:373(__init__)
     5019189           11      8.4174      8.1700  
mercurial.scmutil:1127(__get__)
     1638827            0     47.5288      7.8692  
mercurial.localrepo:489(__getitem__)
     1638879            0     14.7351      7.1027  
mercurial.revset:3000(__contains__)
     2282072      1711583      8.2346      6.8918  
mercurial.demandimport:111(__getattribute__)
           2            0     38.5338      5.8197  
mercurial.obsolete:1137(_computebumpedset)
     8282301            0      5.6648      5.6648   <isinstance>
     2185120           13     41.2440      5.4090   mercurial.util:530(__get__)
     2214333            0      8.2527      5.3328  
mercurial.changelog:200(node)
     1638630            0     72.1382      5.1803  
mercurial.localrepo:520(set)
      546209            0     24.4699      4.7739  
mercurial.context:508(_parents)
           2            0     13.6873      4.5074  
mercurial.repoview:25(_getstatichidden)
      570438       570426    151.0095      4.2784  
mercurial.obsolete:1069(getrevs)
           2            0     85.8408      3.6654  
mercurial.obsolete:1110(_computeunstableset)
     1093331            0      3.7050      3.1388  
mercurial.obsolete:794(allprecursors)
           2            0     25.9001      2.9227  
mercurial.obsolete:1160(_computedivergentset)
     2214333            0      2.9199      2.9199   mercurial.revlog:344(node)
     1092504            0      4.0095      2.7914  
mercurial.changelog:212(parentrevs)
      570420            0     24.2301      2.7603  
mercurial.context:165(obsolete)
      546295            0      2.6346      2.6346   <_heapq.heappop>
      546270            0      2.4972      2.4972   <_heapq.heappush>
     1638630            0     19.1532      2.3500  
mercurial.revset:3010(_iterfilter)
     2185120            0      2.2981      2.2981  
mercurial.util:535(cachevalue)
     1092797            0      2.6601      2.2151   mercurial.phases:225(phase)
     5589560            0      2.1248      2.1248  
mercurial.localrepo:402(unfiltered)
     1638879            0     16.7218      1.9867  
mercurial.revset:2877(<lambda>)
     1116628            0     26.4435      1.9428  
mercurial.obsolete:1120(<genexpr>)
     2214335            0      1.3081      1.3081   <built-in method __new__ of
type object at 0x919120>


And here's a profile for 'commit --amend':

botond at botond-laptop:~/dev/mozilla/central$ hg commit --amend --profile
amending changeset 4c87f20d684e
committing files:
gfx/layers/Layers.h
committing manifest
committing changelog
copying changeset ce180d2525e1 to 6c7c430d8c72
committing files:
gfx/layers/Layers.h
committing manifest
committing changelog
committed changeset 273148:cc3684442796
   CallCount    Recursive     Total(s)    Inline(s) module:lineno(function)
     5292533           11     22.3100     14.2649  
mercurial.localrepo:29(__get__)
     2214349            0     12.6172     10.2621  
mercurial.context:32(__new__)
     2214334            0     30.0552      9.9013  
mercurial.context:373(__init__)
     5292550           11      6.5252      6.4279  
mercurial.scmutil:1127(__get__)
           4            0     19.2417      6.3900  
mercurial.repoview:25(_getstatichidden)
     1638839            0     39.1300      6.2883  
mercurial.localrepo:489(__getitem__)
     1638888            0     11.5396      5.7597  
mercurial.revset:3000(__contains__)
     2282298      1711768      6.1879      5.1940  
mercurial.demandimport:111(__getattribute__)
     2487695            0      7.6295      4.8014  
mercurial.changelog:200(node)
     8283959            0      4.5671      4.5671   <isinstance>
     2185167           23     36.9832      4.0956   mercurial.util:530(__get__)
           2            0     26.7963      4.0210  
mercurial.obsolete:1137(_computebumpedset)
     1638630            0     58.4342      3.9739  
mercurial.localrepo:520(set)
     1092597            0      3.5824      3.5824   <_heapq.heappop>
     2185472            0      5.2207      3.5762  
mercurial.changelog:212(parentrevs)
      546211            0     28.4966      3.5331  
mercurial.context:508(_parents)
     1092545            0      3.3425      3.3425   <_heapq.heappush>
      570442       570426    116.7100      3.2405  
mercurial.obsolete:1069(getrevs)
           2            0     68.2235      2.8986  
mercurial.obsolete:1110(_computeunstableset)
     2487697            0      2.8281      2.8281   mercurial.revlog:344(node)
     1912340            0      3.2161      2.7581   mercurial.phases:225(phase)
           2            0     21.0754      2.3407  
mercurial.obsolete:1160(_computedivergentset)
     1093333            0      2.6585      2.2731  
mercurial.obsolete:794(allprecursors)
           2            0      2.2116      2.2116   <posix.waitpid>
      570420            0     17.7617      2.0889  
mercurial.context:165(obsolete)
      273109            0      4.6521      1.9839  
mercurial.branchmap:338(branchinfo)
     1638630            0     15.0839      1.8930  
mercurial.revset:3010(_iterfilter)
     5862928            0      1.6864      1.6864  
mercurial.localrepo:402(unfiltered)
     2185167            0      1.6768      1.6768  
mercurial.util:535(cachevalue)
     2185472            0      1.6445      1.6445  
mercurial.revlog:352(parentrevs)


Please let me know if there is any other information I can provide to help
diagnose the problem.

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


More information about the Mercurial-devel mailing list