018
30.10.2003, 07:42 Uhr
virtual
Sexiest Bit alive (Operator)
|
Der Standard läßt sich nicht zu Optimierungen aus, IMHO. Also ich denke mal einfach, daß es noch eine Zeit dauern wird, bis Compiler eine derart gute semantische Optimierung machen können. Denn bei den Constructoren, die für die Fragestellung wichtig sind, sind in der Regel nicht trivial, sondern machen viel mit Speicherbelegung usw. Die Entschiedung, daß die Aktionen, die im Constructor gemacht werden. aus semantischer Sicht bedeutungslos sind, sollte schwer sein. Ich komme ja auch durch folgende Überlegung darauf, daß es zwei Copyctor aufrufe sind:
C++: |
int pop() { int temp = top(); // Zwischenspeichern des obersten Elements, 1. copyctor ... // entfernen des obersten Elements return temp; // Wenn Zuweisung an Variable, 2. copyctor }
|
Erste Zeile machtmeiner meiner nach zwei Dinge deutlich: 1. pop macht mehr als das "...", sondern eben auch gleich das top noch mit. Designtechnisch fraglich, weil mehr gemacht wird als gefordert und dafür Aufwandgetrieben werden muß. 2. temp mit dem copyconstructor. erzeugt. Mich darauf zu verlassen, daß der Compiler dieses temp wegoptimiert (was ich nicht glaube), würde ich nicht; vielleicht in 20 Jahren, wenn da mehr Intelligenz in den Optimizern liegt. -- Gruß, virtual Quote of the Month Ich eß' nur was ein Gesicht hat (Creme 21) |