Rekursion -- Performance-Frage (Compiler-Optimierung)



  • Hallo,
    Ich habe eine Methode, die rekursiv eine weitere Methode aufruft, die einen
    Int zurück gibt. Diesen Int-Wert bekommt sie aber wieder von einer anderen Mathode.

    also im code sieht das so aus:

    //in main
    int ret = Function1();
    //in Function1
    ...
    return Function2(int);
    //in Function2
    ...
    return Function3(int);
    

    So weit so gut.
    Mich würde jetzt aber mal interessieren, wie der Compiler das handhabt.
    Eigentlich könnte er ja direkt den Rückgabewert der Funktion 3 ins main
    zurückgeben, dann würde er sich die Funktionsrücksprünge sparen.

    Hat einer ne Ahnung, ob das so optimiert ist?

    Würd mich einfach mal nur so interessieren 😉
    Grüssle,
    Stefan



  • wenn du dem compiler sagst, dass er optimieren soll, dann wird er funktion 1 und 2 rausoptimieren(auch wenn das hier kein selbstaufruf, also keine rekursion ist)



  • ja, stimmt.. is gar keine Rekursion 🤡 wo war ich nur in Gedanken 😉

    thx für die Antwort!

    und wie kann ich gcc das sagen, daß er das machen soll? 😉



  • benutze einfach das Schlüsselwort "inline" für die Funktionen... oder stell die Optimierungen beim Compiler an (/O oder so ähnlich).


Anmelden zum Antworten