[Python-Dev] RE: [Patches] [Patch #102915] xreadlines : readlines :: xrange : range
Guido van Rossum
guido@python.org
Tue, 02 Jan 2001 15:59:22 -0500
> [Guido]
> > I only see a factor of 3 between fastest and slowest, and
> > readline is only about 60% slower than readlines_sizehint.
>
> [Neil]
> > Could it be that your using the CVS version of Python which
> > includes Andrew's cool glibc getline enhancement?
>
> [Guido]
> > Bingo!
>
> It's a good thing I haven't yet had time to try any speed tests myself,
> since I don't have a glibc-enabled platform so Guido and I may have been
> tempted to disagree about numbers in public <wink>.
>
> I checked out the source for glibc's getline. It's pulling the same trick
> Perl uses, copying directly from the stdio buffer when it can, instead of
> (like Python, and like almost all vendor fgets implementations) doing
> getc-in-a-loop. The difference is that Perl can't do that without breaking
> into the FILE* representation in platform-dependent ways. It's a shame that
> almost all vendors missed that fgets was defined as a primitive by the C
> committee precisely so that vendors *could* pull this speed trick under the
> covers. It's also a shame that Perl did it for them <wink>.
Quite apart from whether we should enable xreadlines(), could you look
into doing a similar thing for MSVC stdio? For most Unix platforms, a
cop-out answer is "use glibc" -- but for Windows it may pay to do our
own hack.
--Guido van Rossum (home page: http://www.python.org/~guido/)