On Sat, Aug 03, 2002 at 03:54:07PM -0400, Paul Tremblay wrote:
> On Sat, Aug 03, 2002 at 10:58:24AM +0200, Paul Johnson wrote:
> >
> > On Fri, Aug 02, 2002 at 02:08:25AM -0400, Paul Tremblay wrote:
> >
> > > (I know I did a little test with sed, a python script, and a perl
> > > script, just changing the word "the" to "teh" in a huge file. Sed and
> > > python took about he same time, while perl was six times faster.)
> >
> > This is from the perl source code (sv.c if you are interested):
> >
> > /* Here is some breathtakingly efficient cheating */
> >
> > if (rslen) {
> > while (cnt > 0) { /* this | eat */
> > cnt--;
> > if ((*bp++ = *ptr++) == rslast) /* really | dust */
> > goto thats_all_folks; /* screams | sed :-) */
> > }
> > }
> > else {
> > Copy(ptr, bp, cnt, char); /* this | eat */
> > bp += cnt; /* screams | dust */
> > ptr += cnt; /* louder | sed :-) */
> > cnt = 0;
> > }
> >
> >
>
> Is this for real, and not a joke? If so, it is pretty funny!
This is for real. A lot of the perl source code is pretty funny, though
generally not for the same reasons as a lot of other source code is
pretty funny :-) Larry's posts were usually great fun to read too.
That was a cut and paste from the latest perl release. But this
particular bit of code and the comments remain pretty much unchanged
from perl 1, nearly 15 years ago.
#ifdef STDSTDIO /* Here is some breathtakingly efficient cheating */
....
for (;;) {
screamer:
while (--cnt >= 0) { /* this */ /* eat */
if ((*bp++ = *ptr++) == newline) /* really */ /* dust */
goto thats_all_folks; /* screams */ /* sed :-) */
}
....
#else /* !STDSTDIO */ /* The big, slow, and stupid way */
static char buf[4192];
if (fgets(buf, sizeof buf, fp) != Nullch)
str_set(str, buf);
else
str_set(str, No);
#endif /* STDSTDIO */
--
Paul Johnson - [EMAIL PROTECTED]
http://www.pjcj.net
--
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]