[PATCH V2] dirstate: test normalize is truthy instead of using a no-op lambda
Dirkjan Ochtman
dirkjan at ochtman.nl
Tue Dec 4 18:38:01 UTC 2012
On Tue, Dec 4, 2012 at 7:29 PM, Siddharth Agarwal <sid0 at fb.com> wrote:
> # HG changeset patch
> # User Siddharth Agarwal <sid0 at fb.com>
> # Date 1354645758 28800
> # Node ID 6688ba567bcd57d05e8867ba3c3560d38dafbac4
> # Parent 11191f1c3d088cc8af01afda410a47928e551683
> 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 11191f1c3d08 -r 6688ba567bcd mercurial/dirstate.py
> --- a/mercurial/dirstate.py Mon Dec 03 14:21:45 2012 -0800
> +++ 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)
Did you also test with "if normalize is None:"?
Cheers,
Dirkjan
> 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):
> _______________________________________________
> Mercurial-devel mailing list
> Mercurial-devel at selenic.com
> http://selenic.com/mailman/listinfo/mercurial-devel
More information about the Mercurial-devel
mailing list