dirstate: test normalize is truthy instead of using a no-op lambda
authorSiddharth Agarwal <sid0@fb.com>
Tue, 04 Dec 2012 10:29:18 -0800
changeset 18032 a9e623bb440e
parent 18031 54f063acc5ea
child 18033 00ac420f24ee
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)
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):