C: Lohnt sich das Inline-Keyword?

8

Lohnt es sich, das Inline-Schlüsselwort zu verwenden, oder der Compiler ist schlau genug, um zu wissen, wann er eine Funktion inline machen muss?

    
Suugaku 06.09.2010, 09:47
quelle

4 Antworten

9

Der Compiler ist ziemlich schlau und hat mehrere Metriken, um herauszufinden, ob etwas inlining ist. Aber manchmal wird der Entwickler wissen, wie die Anwendung ausgeführt wird und weiß, etwas inline zu integrieren, was der Compiler nicht automatisch macht. Allerdings würde ich nie manuell inline stopfen, wenn ich nicht einige Benchmarks gemacht hätte und festgestellt hätte, dass Inline meine Leistung verbessern würde.

Sie können mehr darüber lesen, wie GCC inline verwendet .

    
bramp 06.09.2010, 09:50
quelle
13

Ja, es ist schlau genug. Was aber in den letzten 40 Jahren überhaupt nicht Fortschritte gemacht hat, ist der Aufbau von C-Programmen. Es ist immer noch eine Quellcodedatei.

Um eine Funktion in mehr als einer .c-Datei einzubinden, fügen Sie die Funktionsdefinition in die .h-Datei ein. Und wenn Sie sie nicht inline markieren, wird der Linker über die Mehrfachdefinitionen beschweren.

    
Hans Passant 06.09.2010 10:06
quelle
3

Es ist immer wert, über Absicht explizit zu sein.

Bemerkenswert ist auch, dass der Compiler nicht einmal inline zu schreiben braucht, wenn er nicht auch besser denkt.

    
Goz 06.09.2010 09:50
quelle
0

Der Standard sagt

  

7.1.2 Funktionsbezeichner

     

2. Eine Funktionsdeklaration (8.3.5, 9.3, 11.4) mit einem Inline-Spezifizierer deklariert eine Inline-Funktion. Der Inline-Spezifizierer zeigt der Implementierung an, dass eine Inline-Substitution des Funktionskörpers zum Zeitpunkt des Aufrufs dem üblichen Funktionsaufrufmechanismus vorzuziehen ist. Eine Implementierung ist nicht erforderlich, um diese Inline-Substitution zum Zeitpunkt des Aufrufs durchzuführen; selbst wenn diese Inline-Substitution weggelassen wird, müssen die anderen Regeln für Inline-Funktionen, die in 7.1.2 definiert sind, trotzdem eingehalten werden.

Also würde ich inline mit vielleicht <br /> in HTML vergleichen - es ist eine gute Übung, immer die selbstschließende <br /> zu verwenden. Aber man könnte argumentieren, dass fast alle Browser Implementierungen <br> und <br /> genau gleich behandeln, was IMO den Punkt verfehlt.

Wie andere bereits angemerkt haben, ist dies in diesen Tagen wahrscheinlich nicht sehr relevant für den Leistungswert. Aber ich denke, es dient immer noch gut als semantisches, intentionstragendes Schlüsselwort.

    
kizzx2 21.01.2011 12:29
quelle

Tags und Links