What to do after Python?

Roy Smith roy at panix.com
Mon Feb 19 02:53:38 CET 2001


Erno Kuusela <erno-news at erno.iki.fi> wrote:
> |    if (length = strlen(s))
> |       s[length-1] = 0;
> 
> | and cut your instruction count in half :-)
> 
> a sensible optimising compiler will generate identical code for both.

I will admit that my compiler theory is a bit rusty, but it's hard to see 
how a compiler would know that the strlen function would return the same 
value when called again with the same argument (idempotent?).

In any case, I just tried it on my Linux box (GNU compiler) and on a 
Solaris machine (Sun Workshop compiler).  Neither compiler generated the 
same code for the two versions, regardless of whether optimizing was turned 
on or not.  Both generated two strlen stanzas (see below), with or without 
-O.

The most interesting case was Linux with -O.  I don't know i86 assembler, 
so I'm guessing a bit here, but seems to have in-lined the strlen function, 
eliminating the subroutine call completely.  It still left what looks like 
two code fragments to count the length of the string.



More information about the Python-list mailing list