Re: When to do inline expansion

salomon@silver.cs.umanitoba.ca (Daniel J. Salomon)
Mon, 20 Sep 1993 22:50:19 GMT

          From comp.compilers

Related articles
When to do inline expansion jhall@whale.WPI.EDU (1993-09-14)
Re: When to do inline expansion zstern@adobe.com (1993-09-20)
Re: When to do inline expansion salomon@silver.cs.umanitoba.ca (1993-09-20)
Re: When to do inline expansion davidm@questor.rational.com (1993-09-20)
Re: When to do inline expansion jfc@athena.mit.edu (1993-09-21)
Re: When to do inline expansion jgmorris+@cs.cmu.edu (1993-09-21)
Re: When to do inline expansion jdean@bergen.cs.washington.edu (1993-09-21)
Re: When to do inline expansion salomon@silver.cs.umanitoba.ca (1993-09-22)
Re: When to do inline expansion preston@dawn.cs.rice.edu (1993-09-22)
[3 later articles]
| List of all articles for this month |
Newsgroups: comp.compilers
From: salomon@silver.cs.umanitoba.ca (Daniel J. Salomon)
Keywords: optimize
Organization: Computer Science, University of Manitoba, Winnipeg, Canada
References: 93-09-063
Date: Mon, 20 Sep 1993 22:50:19 GMT

jhall@whale.WPI.EDU (John Clinton Hall) writes:
> How long should a function be (in number of statements) for it to be a
> reasonable speed optimization to perform inline expansion? (For
> simplicity, let's assume that the function is only called once
> throughout the code, and the source language is C.)


There are three principal disadvantages to compiling a function
invocation inline instead of as a machine function call:
        1) the compiler will be more complex,
        2) compilation may be slower, and
        3) more memory may be used by the program.


The first two are irrelevant to the posted question, since the poster
was not interested in compiler complexity or compilation time. If a
function is called in only one place in a program, and the parameters
are only evaluated once, then inline expansion always uses less memory
and runs faster than a function call.


If a function is called in more than one place, then the trade-off
decision to be made is between speed and memory usage; inline code is
always faster but may take more space. (This statement is not always
true for macro calls where the parameters are evaluated every time they
are used.) If the code in a function takes less memory than the code
needed to execute a function call, then inlining would ALWAYS beat
function calling in both speed and space, no matter how many places the
function is invoked.


So the choice between inlining and function calling would have to be
made based on the relative costs of computer time versus memory cost.
A compiler cannot know these relative costs for every application.
For some applications speed is more important than size, and for other
the opposite is true. So a compiler should probably leave the decision
to the programmer, and not try to guess.
--
Daniel J. Salomon -- salomon@cs.UManitoba.CA
              Dept. of Computer Science / University of Manitoba
              Winnipeg, Manitoba, Canada R3T 2N2 / (204) 474-8687
--


Post a followup to this message

Return to the comp.compilers page.
Search the comp.compilers archives again.