[Python-Dev] RE: [Patches] [Patch #102915] xreadlines : readlines :: xrange : range

Guido van Rossum guido@digicool.com
Mon, 01 Jan 2001 14:35:24 -0500


> [gvanrossum, in an SF patch comment]
> > Bah.  I don't like this one bit.  More complexity for a little
> > bit of extra speed.
> > I'm keeping this open but expect to be closing it soon unless I
> > hear a really good argument why more speed is really needed in
> > this area.  Down with code bloat and creeping featurism!
> 
> Without judging "the solution" here, "the problem" is that everyone's first
> attempt to use line-at-a-time file input in Perl:
> 
>     while (<F>} {
>         ... $_ ...;
>     }
> 
> runs 2-5x faster then everyone's first attempt in Python:
> 
>     while 1:
>         line = f.readline()
>         if not line:
>             break
>         ... line ...

But is everyone's first thought to time the speed of Python vs. Perl?
Why does it hurt so much that this is a bit slow?

> It would be beneficial to address that *somehow*, cuz 2-5x isn't just "a
> little bit"; and by the time you walk a newbie thru
> 
>     while 1:
>         lines = f.readlines(hintsize)
>         if not lines:
>              break
>         for line in lines:
>             ... line ...
> 
> they feel like maybe Perl isn't so obscure after all <wink>.
> 
> Does someone have an elegant way to address this?  I believe Jeff's shot at
> elegance was the other part of the patch, using (his new) xreadlines under
> the covers to speed the fileinput module.

But of course suggesting fileinput is also not a great solution --
it's relatively obscure (since it's not taught by most tutorials,
certainly not by the standard tutorial).

> reading-text-files-is-very-common-ly y'rs  - tim

So is worrying about performance without a good reason...

--Guido van Rossum (home page: http://www.python.org/~guido/)