003
12.05.2008, 16:41 Uhr
0xdeadbeef
Gott (Operator)
|
Was der Compiler genau daraus macht, hängt vom Compiler ab - der C++-Standard definiert in Bezug auf das inline-Schlüsselwort hauptsächlich Linkage-Eigenschaften.
Wie dem auch sei, realistisch kannst du erwarten, dass der Unterschied zwischen einer Inline- und einer normalen Methode darin besteht, dass die Inline-Methode öfter in der Binary auftaucht (und sie dementsprechend vergrößert), und dafür beim Ausführen ein klein wenig Laufzeit einspart - nämlich das, was es normalerweise kostete, die Funktion aufzurufen. Verlassen kannst du dich darauf allerdings nicht, das inline-Schlüsselwort ist mehr so was wie eine Empfehlung.
Unter der Annahme, dass du den g++ benutzt, der hat eine Option -save-temps, die u.a. die Assembly-Zwischenergebnisse des Compilers aufbewahrt, darin kannst du das vergleichen. Ansonsten bietet sich gprof zur Laufzeitanalyse an. Von einem ganz praktischen Standpunkt aus gesehen würde ich mir darum allerdings nicht besonders viele Sorgen machen - Mikrooptimierungen bringen nur höchst selten einen merkbaren Unterschied, der Compiler beherrscht sie im Zweifel besser als du. Und wenn sich am Ende doch noch ein Flaschenhals auftut, ist am Ende, wenn er sich aufgetan hat, auch die beste Zeit, ihn wegzuoptimieren. -- Einfachheit ist Voraussetzung für Zuverlässigkeit. -- Edsger Wybe Dijkstra |