[Python-ideas] Change magic strings to enums

Serhiy Storchaka storchaka at gmail.com
Wed Apr 25 06:03:31 EDT 2018


25.04.18 10:57, Ivan Levkivskyi пише:
> On 25 April 2018 at 06:03, INADA Naoki 
> <songofacandy at gmail.com 
> <mailto:songofacandy at gmail.com>> wrote:
>     enum class&member creation cost is much heavier than "import enum" cost.
>     Especially, "import socket, ssl" is much slower than before...
> 
> Is it slow simply because we are creating new  class objects or 
> EnumMeta.__new__ does
> some extensive calculations? In the latter case rewriting EnumMeta in C 
> might help.

Creating a new function is very cheap -- just around 50 ns on my computer.

Creating a new class is over two orders costly -- around 7 us for an 
empty class on my computer.

Creating a new Enum class is much more costly -- around 40 us for an 
empty class (or 50 us for IntEnum) plus 7 us per member.

Creating a new namedtuple type has the same cost as creating Enum class. 
It was much costly before 3.7.

Thus creating a typical Enum class with 3-5 members is like creating 10 
normal classes. Not much modules have 10 classes.



More information about the Python-ideas mailing list