[Python-Dev] performance of {} versus dict()

martin at v.loewis.de martin at v.loewis.de
Wed Nov 14 11:11:39 CET 2012


Zitat von Chris Withers <chris at simplistix.co.uk>:

> a_dict = dict(
>     x = 1,
>     y = 2,
>     z = 3,
>     ...
>     )

> What can we do to speed up the former case?

It should be possible to special-case it. Rather than creating
a new dictionary from scratch, one could try to have the new dictionary
the same size as the original one, and copy all entries.

I also wonder whether the PyArg_ValidateKeywordArguments call is really
necessary: if this is not a proper keyword dictionary, dict creation
could still proceed in a reasonable way.

I don't know how much this would gain, though. You still have to
create two dictionary objects. For a better speedup, try

def xdict(**kwds):
   return kwds

(possibly written in C for even more speed)

Regards,
Martin




More information about the Python-Dev mailing list