On Fri, Apr 16, 2021 at 5:28 PM Łukasz Langa <[email protected]
<mailto:[email protected]>> wrote:
[snip] I say "compromise" because as Inada Naoki measured,
there's still a non-zero performance cost of PEP 649 versus PEP 563:
- code size: +63%
- memory: +62%
- import time: +60%
Will this hurt some current users of typing? Yes, I can name you
multiple past employers of mine where this will be the case. Is
it worth it for Pydantic? I tend to think that yes, it is, since
it is a significant community, and the operations on type
annotations it performs are in the sensible set for which
`typing.get_type_hints()` was proposed.
Just to give some more context: in my experience, both import time
and memory use tend to be real issues in large Python codebases (code
size less so), and I think that the relative efficiency of PEP 563 is
an important feature. If PEP 649 can't be made more efficient, this
could be a major regression for some users. Python server
applications need to run multiple processes because of the GIL, and
since code objects generally aren't shared between processes (GC and
reference counting makes it tricky, I understand), code size
increases tend to be amplified on large servers. Even having a lot of
RAM doesn't necessarily help, since a lot of RAM typically implies
many CPU cores, and thus many processes are needed as well.
I can see how both PEP 563 and PEP 649 bring significant benefits,
but typically for different user populations. I wonder if there's a
way of combining the benefits of both approaches. I don't like the
idea of having toggles for different performance tradeoffs
indefinitely, but I can see how this might be a necessary compromise
if we don't want to make things worse for any user groups.
Jukka
_______________________________________________
Python-Dev mailing list [email protected]
To unsubscribe send an email [email protected]
https://mail.python.org/mailman3/lists/python-dev.python.org/
Message archived
athttps://mail.python.org/archives/list/[email protected]/message/PBJ6MBQIE3DVQUUAO764PIQ3TWGLBS3X/
Code of Conduct:http://python.org/psf/codeofconduct/