inline vor Funktionen



  • Hi

    ich finde es komisch, dass in der Faq nichts über inline-Funktionen steht, deshalb hab ich im Forum auch nichts darüber gefunden. Was bringt es, wenn ich inline vor eine Funktion schreibe ? Ich habe mal gelesen, dass dann der Code der Funktion an die Stelle kopiert wird, aber ist das nicht aufgabe von Makros ?



  • hier im forum gibts jede menge über inline.
    aber du hast recht, inline methoden von Klassen werden direkt in den source kopiert, was die teuren sprünge minimiert.

    makros setzen an einer ganz anderen stelle an 😉



  • D.h inline-Funktionen sind schneller ?

    Was passiert, wenn ich in der Funktion eine Lokale Variable erstelle, wird sie dann trotzdem gelöscht ?



  • Das inline ist ein Vorschlag an den Compiler, eine Funktion zu inlinen. Da er es meistens besser weiß als du, wird er auch Funktionen inlinen, die du nicht als inline markiert hast und er wird auch Funktionen nicht inlinen, obwohl du sie als inline markiert hast.
    Sorge dich nicht, lebe 😉



  • na wenn du meinst 🙂
    danke 😃



  • Was passiert, wenn ich in der Funktion eine Lokale Variable erstelle, wird sie dann trotzdem gelöscht ?

    jep



  • wird eine funktion geinlined, ist der code (meistens) schneller, aber das programm wird größer. Deshalb werden viele compiler es ablehnen, große funktionen in-zu-linen (was ein wort)
    geloescht



  • sbrog schrieb:

    ich finde es komisch, dass in der Faq nichts über inline-Funktionen steht, deshalb hab ich im Forum auch nichts darüber gefunden

    Dann hast du nicht wirklich gesucht. 😃 Ich geb dir aber insofern recht, dass ich gelegentlich auch schon einige grundlegende Sachen in den FAQ vergeblich gesucht hab.

    sbrog schrieb:

    D.h inline-Funktionen sind schneller ?

    Funktionenen sind Funktionenen. Egal ob du eine als inline markierst oder nicht, sie ist (abhängig von ihrer Aufgabe) immer gleich schnell. Sollte sich ein Compiler aber dazu entschliessen, die Funktion aufzulösen und direkt in den Code einzubinden, dann hat das Programm an dieser Stelle meist ein besseres Laufzeitverhalten. Funktionsaufruf und Rücksprung sind dann nicht mehr notwendig. Ausserdem kann das Stackhandling (für lokale Variablen) optimiert werden. Aber nur bei wirklich rechenintensiven Sachen wirst du da einen Performancegewinn merken.


Anmelden zum Antworten