next up previous contents index
Next: Abhängigkeiten zwischen Programm-Moduln Up: 50 Ways to Improve Previous: Ganzahlige Klassenkonstanten

Benutze inline mit Bedacht

 

inline ist ein Hinweis an den Compiler, den Funktionsrumpf einzusetzen. Das kann, richtig angewandt, beträchtliche Laufzeitgewinne bringen. Preis: höherer Speicherbedarf.

Vorsicht: Wenn der Compiler beschließt, nicht zu ``inlinen'', kann es auch zusätzlichen Platz kosten:

    // examp.h
    inline void fun() { ... }

    // source1.cc
    #include "examp.h
    ...

    // source2.cc
    #include "examp.h
    ...

Sowohl source1.o also auch source2.o enthalten den Code von fun() (als static Funktionen wg. Linker).

Es kann sogar sein, daß eine Funktion ``geinlined'' wird und zusätzlich als aufrufbare Funktion im Code steht:

    inline void fun() { ... }
    void (*pf)() = fun;
    int main()
    { fun();  // inline
      pf();   // non-inline
    }

Tip:

Am Anfang der Programmentwicklung keine Funktionen ``inlinen'' (bzw. nur wirklich elementare). Dies hilft beim Debuggen.

Später zum Tuning die Funktionen in zeitkritischen Bereichen evtl. inline deklarieren.


next up previous contents index
Next: Abhängigkeiten zwischen Programm-Moduln Up: 50 Ways to Improve Previous: Ganzahlige Klassenkonstanten

Peter Pfahler, 1997