[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