[Python-Dev] cpython (3.2): don't mention implementation detail (original) (raw)

Maciej Fijalkowski fijall at gmail.com
Tue Dec 20 21:22:04 CET 2011


On Tue, Dec 20, 2011 at 12:14 PM, Dirkjan Ochtman <dirkjan at ochtman.nl> wrote:

On Tue, Dec 20, 2011 at 11:08, Antoine Pitrou <solipsis at pitrou.net> wrote:

If this documentation is to be used by other python implementations, then mentions of performance are outright harmful, since the performance characteristics differ quite drastically. Written in C is also not a part of specification as far as I know :)

But that's basically the only reason to invoke the operator.attrgetter("foo") ugliness, instead of writing the explicit and obvious lambda x: x.foo. So not mentioning that it provides a speed benefit on CPython hides the primary reason for using the operator module. Overwise it's just a bunch of useless wrappers. So the question is if the docs are Python documentation or CPython documentation? On PyPy, I'm guessing lambda x: x.foo might (some day) be just as fast as operator.attrgetter("foo").

as of now lambda is much faster on pypy for a constant name (there is not a good reason why exactly attrgetter is slower, but it somehow losts the fact that name is constant if it is).

I'm in general fine with saying that this is either Python documentation or CPython documentation, but leaving this intermingled has caused us quite some headaches in the past. For example using attrgetter and map rather than just writing a loop is slower on PyPy, so a knowledge that it's fast in the operator module is misleading in Python. How about we somehow mark that all python documentation when it talks about performance, it talks about CPython performance?

Cheers, fijal



More information about the Python-Dev mailing list