C++ zu hohe Last bei vielen Objekten

Nai schrieb:
Wenn der Compiler nicht optimieren würde, so würde er sich bei jedem for-Durchlauf 4 Byte für test auf dem Stack allokieren; er müsste also jedes mal den Stackpointer inkrementieren, wodurch er eine Integeroperation benötigen würde. Würde man das test aus dem for rausziehen, so bräuchte er dies nicht zu tun.
Ich hab's gerade mal im GCC ausprobiert mit unoptimierten Build (-O0), der Stackpointer wird innerhalb der Schleife nicht modifiziert, es wird bereits am Funktionsanfang der Speicher dafür reserviert. Der Assemblercode ist in beiden Fällen mit einem Minimalbeispiel identisch. Dafür musste ich feststellen, das er in unoptimierten Builds nichtmal die Speicherstelle der Variable in der Schleife nach der Schleife nicht wiederverwendet - was ich mir erhofft hatte und somit die Variante mit Variable innerhalb der Schleife im Vorteil gewähnt hatte. Ich hatte es nicht für möglich gehalten, weil so ja jede Menge Speicher unnütz verballert wird.
 
Zurück
Oben