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)
--- 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):