cvs commit: src/sys/kern init_main.c kern_malloc.c md5c.c subr_autoconf.c subr_mbuf.c subr_prf.c tty_subr.c vfs_cluster.c vfs_subr.c

Poul-Henning Kamp phk at phk.freebsd.dk
Tue Jul 22 16:18:14 PDT 2003


In message <20030722230731.GB61493 at athlon.pn.xcllnt.net>, Marcel Moolenaar writ
es:
>On Wed, Jul 23, 2003 at 12:56:34AM +0200, Poul-Henning Kamp wrote:
>> 
>> And the only two criteria I think are trivial to use for proving an
>> actual benefit is:
>> 	1. less code is generated.
>> 	2. it runs faster in tests.
>
>criterium 1 is the worst possible. Only criterium 2 makes sense.

No, if inlining a functions results in less code overall it also,
ipso facto results in faster execution.

Ie:

	A calls
	B bytes instructions in target function
	C bytes to setup args to target function
	D bytes target function overhead (stack frame etc)

   Not inlined:

	X = A * C + D + B

   Inlined
	
	Y = A * C - optimizations + inlining overhead

   If Y < X, then you have by definition a performance gain.

...even on highy ornamental CPUs like Convex vector engines and
the ia64.

>The old gcc metric of less code is better has been demonstrated
>to not work in general nowadays.

Make sure you don't compare apples with oranges.  We are not talking
about what kinds of optimizations the compiler performs, we are
talking about the code you give it to perform on.

-- 
Poul-Henning Kamp       | UNIX since Zilog Zeus 3.20
phk at FreeBSD.ORG         | TCP/IP since RFC 956
FreeBSD committer       | BSD since 4.3-tahoe    
Never attribute to malice what can adequately be explained by incompetence.


More information about the cvs-src mailing list