Inline-Funktion Mitglieder in einer Klasse
Ich weiß, dass das deklarieren einer Funktion (normale Funktion, nicht als Methode innerhalb einer Klasse) als inline ist eine gute Praxis, wenn die definition der Funktion klein ist für die Leistung und sparen Zeit für die Zusammenstellung. Aber wie wäre es mit inline-Methoden innerhalb einer Klasse
Ich verstehe nicht das Konzept der inline-Methoden innerhalb einer Klasse? Wie Sie definiert werden und wie Sie funktionieren.
Kommentar zu dem Problem
"ist eine gute Praxis, wenn die funtion definition klein ist für die Leistung und sparen Zeit für die compilation" - wo hast du das gelesen?
@OliCharlesworth : ich meine, wenn die Funktion enthält ein oder zwei Aussagen, dann deklarieren Sie diese Funktion als inline spart Zeit Sprünge, die das kompilieren tun, um die definition und speziell, wenn diese Funktion aufgerufen wurde, eine Menge Zeit.
Bedenken Sie, dass, da der compiler generiert code für die inline-Funktionen bei jedem Aufruf der Seite, Ihr wahrscheinlich nicht helfen, Ihre compile-Zeit. Übermäßige inlining beeinträchtigen die compile-Zeit und erhöhen Sie Ihre ausführbare Datei Größe.
Nur eine Klarstellung. Die inline-Deklaration nicht sparen Zeit bei der Zusammenstellung. Es spart die Zeit, während der code-Ausführung auf Kosten der Größe. Lassen Sie uns sagen, dass der code, die Sie in eine Funktion benötigt, die 500 byte. Ohne die inline-Funktion verwenden 500 byte, aber die cpu wird "Abfall" - Zeit für den "Sprung" auf die Funktion. Mit dem inline-code verwenden 500 Byte für jeden Anruf, der aber schneller ist. Grundsätzlich ist die inline schlage vor, den compiler zu bevorzugen, die Geschwindigkeit über Größe werden. Wirklich hilfreich in einer embedded-Umgebung, wo die ausführende Zeit ist kritisch (also unterbrechen)
InformationsquelleAutor der Frage AlexDan | 2012-02-21
Du musst angemeldet sein, um einen Kommentar abzugeben.
Beide Syntaxen für das inlining von Funktionen mit expliziter
inline
und der Definition der member-Funktion innerhalb der Klasse definition) liefert nur Hinweise für compiler inlining. Von Leistung Sicht, sind Sie gleich.Im Fall der Definition einer member-Funktion innerhalb einer Klasse Erklärung, die Lesbarkeit der letzteren sollte Ihr Hauptanliegen: es tut richtig weh, zu verunreinigen Klasse interface mit mehreren line von Einzelheiten der implementation. So vermeiden Sie, dass, wenn Sie Ihre member-Funktion ist mehr als eine Anweisung:
return stuff
oder eine einfache Weiterleitung sollte OK sein, aber in der Regel nicht mehr als das.InformationsquelleAutor der Antwort Alexander Poluektov
Angabe einer Funktion/Prozedur als
inline
innerhalb einer Klasse ist ein fingerzeig an den compiler, dass anstelle der Erstellung von code, um die Funktion aufrufen und Parameter übergeben, wird der Inhalt der Funktion sollte sich an der Stelle des Aufrufs.Kann es zur Verbesserung der Leistung von der kompilierten binären Wann wird es effizienter, führen Sie die Funktion ohne Parameter übergeben. Es kann auch ein Nachteil für die Leistung, da die Wiederholung der code, der in der Funktion bei jedem Aufruf die Lage kann die Ursache für aufblasen vermindert die liklihood, dass Ihr code befindet sich im schnelleren cache-Speicher.
InformationsquelleAutor der Antwort John
Gibt es zwei Optionen für den compiler, um eine Klasse-Funktion inline:
(1) Wenn eine Funktion definieren, in der Deklaration der Klasse (In einer Header-Datei)
(2) verwenden Sie die inline-Schlüsselwort explicit in der definition der Funktion (In einer Header-Datei)
InformationsquelleAutor der Antwort Jan Koester