[PATCH 5 of 6 py3] dirstate: use list comprehension to get a list of keys

Martin von Zweigbergk martinvonz at google.com
Thu Mar 16 01:25:35 EDT 2017


On Wed, Mar 15, 2017 at 10:19 PM, Pulkit Goyal <7895pulkit at gmail.com> wrote:
>
>
> On Thu, Mar 16, 2017 at 10:30 AM, Martin von Zweigbergk
> <martinvonz at google.com> wrote:
>>
>> On Wed, Mar 15, 2017 at 9:13 PM, Pulkit Goyal <7895pulkit at gmail.com>
>> wrote:
>> > # HG changeset patch
>> > # User Pulkit Goyal <7895pulkit at gmail.com>
>> > # Date 1489635027 -19800
>> > #      Thu Mar 16 09:00:27 2017 +0530
>> > # Node ID b5673a08993652a92c0e20a4e24d842194872454
>> > # Parent  69aafa5d3e0f109c7b501758381f65fd9b375196
>> > dirstate: use list comprehension to get a list of keys
>> >
>> > We have used dict.keys() which returns a dict_keys() object instead
>> > of list on Python 3. So this patch replaces that with list comprehension
>> > which works both on Python 2 and 3.
>> >
>> > diff -r 69aafa5d3e0f -r b5673a089936 mercurial/dirstate.py
>> > --- a/mercurial/dirstate.py     Thu Mar 16 08:57:53 2017 +0530
>> > +++ b/mercurial/dirstate.py     Thu Mar 16 09:00:27 2017 +0530
>> > @@ -1079,7 +1079,7 @@
>> >              # a) not matching matchfn b) ignored, c) missing, or d)
>> > under a
>> >              # symlink directory.
>> >              if not results and matchalways:
>> > -                visit = dmap.keys()
>> > +                visit = [f for f in dmap]
>>
>> Dirstate performance is critical. I don't know if this particular
>> place matters. Could you see if this makes a measurable difference on
>> a large repo like Mozilla's?
>
>
> I didn't tried on Mozilla but I can see significance performance difference.

Where did you see that difference? Simply when running "hg status" in
the hg core repo?

> I will send a V2 with not touching the dirstate code.

Note that 1-3 are already queued.


More information about the Mercurial-devel mailing list