On inlining in C++

Andrew Haley aph@redhat.com
Mon Aug 4 17:05:00 GMT 2003


Robert Dewar writes:
 > > Perhaps there is, but the Principle of Least Surprise favours a
 > > fairly literal interpretation of "inline".
 > 
 > I don't agree, a huge blow up in size, resulting in slower
 > execution because of icache overload, can also qualify as a
 > surprise.

I do not believe that would be a surprise to anyone who thought about
it for a minute.

The Principle of Least Surprise suggests that inline functions will
often increase code size.  A little knowledge about multi-level memory
architecture suggests that this might reduce execution speed.

 > Indeed we find that customers are quite often surprised to find
 > that -O3 is slower than -O2 (as well as generating lots of code).

Well, that's different: we weren't talking about -O3, where the
compiler looks for functions to inline.  We're talking about functions
explicitly marked inline by the programmer.  A naive interpretation of
-O3 is "optimize more (i.e. better) than -O2".  But we know that -O3
doesn't strictly speaking mean that.

No, the burden of evidence is surely on those who want inline to do
something other than what a fairly literal interpretation of "inline"
(and the gcc docs) would suggest.

Andrew.



More information about the Gcc mailing list