[PATCH] revset: don't create changectx when matching for files

Matt Mackall mpm at selenic.com
Tue Mar 17 12:26:07 CDT 2015


On Tue, 2015-03-17 at 09:57 -0700, Durham Goode wrote:
> # HG changeset patch
> # User Durham Goode <durham at fb.com>
> # Date 1426610443 25200
> #      Tue Mar 17 09:40:43 2015 -0700
> # Node ID 5d4d0a97ccd85132bb5b1a640543cd24350b36c8
> # Parent  567ae53657544744155897ada91f16f8af61ad8a
> revset: don't create changectx when matching for files
> 
> When running 'hg log some/dir/' on a large repo about 25% of the time was spent
> just creating changectxs to call ctx.files() on. 

Can't repro. I get this profile on mozilla-central:

  %   cumulative      self          
 time    seconds   seconds  name    
 16.78      2.62      2.62  revlog.py:90:decompress
  3.85      0.60      0.60  match.py:108:__call__
  2.72      0.42      0.42  utf_8.py:16:decode
  2.67      0.71      0.42  changelog.py:212:node
  2.41      0.38      0.38  revlog.py:78:hash
  2.00      0.31      0.31  changelog.py:322:read
  1.74      0.46      0.27  changelog.py:142:tip
  1.69      0.26      0.26  revlog.py:1091:revision
  1.69      0.26      0.26  utf_8.py:15:decode
  1.69      0.26      0.26  revlog.py:350:start
  1.69      0.26      0.26  revlog.py:282:__len__
  1.49     11.00      0.23  context.py:485:_changeset
  1.44      0.22      0.22  revlog.py:283:__len__
  1.39      0.22      0.22  revlog.py:340:node
  1.39      0.22      0.22  match.py:107:__call__
  1.28      0.20      0.20  changelog.py:331:read
  1.28      0.39      0.20  localrepo.py:30:__get__
  1.23      0.72      0.19  changelog.py:144:tip
  1.23      2.90      0.19  revlog.py:1007:_chunks
  1.13     14.30      0.18  revset.py:1074:matches
  1.08      0.98      0.17  revset.py:1075:matches
  0.97      0.15      0.15  revlog.py:318:rev
  0.97      0.15      0.15  revlog.py:940:_loadchunk
  0.97      2.03      0.15  context.py:374:__init__
  0.92      0.65      0.14  changelog.py:321:read
  0.92      0.14      0.14  revlog.py:79:hash
  0.92      0.14      0.14  revlog.py:70:hash

> Let's just skip that part.

I'd really like to see an analysis of why this crucial code path
(creating context objects) is slow before simply patching around it in
one of the thousand spots it's used.

-- 
Mathematics is the supreme nostalgia of our time.




More information about the Mercurial-devel mailing list