# HG changeset patch # User Alexis S. L. Carvalho # Date 1162077712 10800 # Node ID 736a78469a8579c63132fe74475b5fe40f53359e # Parent c141d07198b9d8f5e57fa5d7787c6f59add2c85b log speedup: walkchangerevs: filter the files only if we need them This speeds up hg log and significantly reduces memory usage (max RSS goes from ~92MB to ~21MB on the kernel repo), since we no longer store all the revisions in the cache. diff -r c141d07198b9 -r 736a78469a85 mercurial/commands.py --- a/mercurial/commands.py Sat Oct 28 23:05:57 2006 +0200 +++ b/mercurial/commands.py Sat Oct 28 20:21:52 2006 -0300 @@ -230,7 +230,13 @@ srevs = list(nrevs) srevs.sort() for rev in srevs: - fns = fncache.get(rev) or filter(matchfn, change(rev)[3]) + fns = fncache.get(rev) + if not fns: + def fns_generator(): + for f in change(rev)[3]: + if matchfn(f): + yield f + fns = fns_generator() yield 'add', rev, fns for rev in nrevs: yield 'iter', rev, None