# HG changeset patch # User Siddharth Agarwal # Date 1354645758 28800 # Node ID a9e623bb440edc298f2bd46aaa8c0941bcc5503f # Parent 54f063acc5eaa952e3bfd6ae0356a279828d8909 dirstate: test normalize is truthy instead of using a no-op lambda hg perfstatus -u on a working directory with 170,000 files, without this change: ! wall 1.869404 comb 1.850000 user 1.170000 sys 0.680000 (best of 6) With this change: ! wall 1.839561 comb 1.830000 user 1.120000 sys 0.710000 (best of 6) diff -r 54f063acc5ea -r a9e623bb440e mercurial/dirstate.py --- a/mercurial/dirstate.py Tue Dec 04 11:19:32 2012 -0600 +++ b/mercurial/dirstate.py Tue Dec 04 10:29:18 2012 -0800 @@ -605,7 +605,7 @@ normalize = self._normalize skipstep3 = False else: - normalize = lambda x, y, z: x + normalize = None files = sorted(match.files()) subrepos.sort() @@ -626,7 +626,10 @@ # step 1: find all explicit files for ff in files: - nf = normalize(normpath(ff), False, True) + if normalize: + nf = normalize(normpath(ff), False, True) + else: + nf = normpath(ff) if nf in results: continue @@ -676,7 +679,10 @@ continue raise for f, kind, st in entries: - nf = normalize(nd and (nd + "/" + f) or f, True, True) + if normalize: + nf = normalize(nd and (nd + "/" + f) or f, True, True) + else: + nf = nd and (nd + "/" + f) or f if nf not in results: if kind == dirkind: if not ignore(nf):