[C/C++] Frage zu "inline"

Dieses Thema im Forum "Programmierung & Entwicklung" wurde erstellt von Pac_-_man, 5. Januar 2008 .

Schlagworte:
Status des Themas:
Es sind keine weiteren Antworten möglich.
  1. Diese Seite verwendet Cookies. Wenn du dich weiterhin auf dieser Seite aufhältst, akzeptierst du unseren Einsatz von Cookies. Weitere Informationen
  1. #1 5. Januar 2008
    Frage zu "inline"

    Hi!

    Ich hab ma ne kleine Frage zum Thema Effizienz:
    Wenn man ne Funktion mit inline deklariert, schreibt der Compiler die Funktion ueberall im Quellcode hin, wo sie aufgerufen wird, da es ja meistens schneller geht (wenn es nur ganz kleine Funktionen sind), als das der Prozessor nachher immer die Spruenge in nen anderen Speicherbereich machen muss. Nun meine Frage: Ich hab ma gehört das der Compiler von alleine pruefen soll, ob es schneller gehen wuerde zu springen oder die Funktion selbst immer an die Stellen zu schreiben, wo sie aufgerufen wird. Ist das wirklich so? und wenn nicht, woher weiß ich dann was schneller geht? Muss ich mir dafuer wirklich den ASM-Code anschauen und dann selber rumrechnen? Wuerde mich echt ma interessieren! Ich hoffe ich hab meine Frage verstaendlich formuliert...

    bw fuer jede hilfreiche Antwort!

    MFG
    Pacman
     

  2. Anzeige
    Dealz: stark reduzierte Angebote finden.
  3. #2 5. Januar 2008
    AW: Frage zu "inline"

    "inline" ist nur ein Hinweiß für den Compiler, d.h. er entscheidet immernoch selber ob er eine Funktion inline macht oder nicht (der Compiler macht unter Umständen auch Funktionen inline, die garnicht als inline deklariert wurden).
     
  4. #3 5. Januar 2008
    AW: Frage zu "inline"

    also bringt es garnichts die methoden damit zu deklarieren?
     
  5. #4 5. Januar 2008
    AW: Frage zu "inline"

    Hi !

    Also als Daumenregel kann man sagen das je kleiner die Funktion die du als Inline deklarierst ist umso effizienter ist die inline Anweisung.

    Je mehr Parameter du an eine Funktion übergiebst desto größer wird der Funktionsaufruf. Wenn das dazu noch eine Memberfunktion einer Klasse ist wird immer der "this" Parameter übergeben was den aufruf noch länger macht. <---- prädestiniert für Inline

    Wenn du z.b. aber nur ein Parameter an die Funktion übergiebst und dafür in der Funktion viele IF´s und berechnungen hast. Wird der Körper der Funktion größer als der Aufruf <----- Inline wäre sinnlos.

    Im zweifelsfall rumprobieren und gucken ob der Code länger oder kürzer wird :D


    Hoffentlich wars hilfreich ^^
     
  6. #5 5. Januar 2008
    AW: Frage zu "inline"

    es ist so, wie razor gesagt hat. Es ist ein Hinweis und auch von Compiler zu Compiler unterschiedlich. Manche Compiler deklarieren Kleine Methoden/Funktionen auch von selbst als Inline. Woran er das erkennt, ist Compilerabhängig. Da müssten man die Compilerbauer fragen. Ein Softwareentwickler hat mir mal gesagt, dass inline nicht mehr "aktuell" sei und die Compiler so gut sind, dass die das besser machen, als ein Mensch es könnte ;)

    greez
     
  7. #6 5. Januar 2008
    AW: Frage zu "inline"

    alles klar, denke ihr habt meine Frage beantwortet. Es wird wahrscheinlich unterschiedlich sein von Compiler zu Compiler. Ich denke moderne Compiler (wie z.B. ein aktueller von MS Visual c++) führen eigene Berechnungen durch und entscheiden dann ob inline sinn macht oder nicht. Danke für alle Antworten! bws sind raus!

    MFG
    Pacman
     

  8. Videos zum Thema
Die Seite wird geladen...