Visual C++ optimiert double member weg
-
@SoIntMan Nope. Ich kann die nur temporär beantragen... ist immer mit 'nem Mordsaufwand verbunden.
Hab mal 'ne Zeitlang versucht in einer VM zu arbeiten, aber die Performanceeinbußen haben mich davon wieder weggetrieben.
-
In create wird vermutlich NRVO gemacht und der Speicher von n ist da gar nicht vorhanden sondern erst in der main.
-
@Tyrdal Wäre auch meine Vermutung. Hätte aber erwartet, dass das in einem Debug Build nicht passiert.
Erklärt aber auch nicht, warum das nur bei
double
Member passiert und nicht beiint
Member.
-
@Schlangenmensch Geht mir genauso. Aber in clang wird das auch schon vom Frontend gemacht und nicht erst vom Optimierer, von daher ...
-
@Schlangenmensch sagte in Visual C++ optimiert double member weg:
@Tyrdal Wäre auch meine Vermutung. Hätte aber erwartet, dass das in einem Debug Build nicht passiert.
Erklärt aber auch nicht, warum das nur bei
double
Member passiert und nicht beiint
Member.Ok, das ist merkwürdig.
-
@Schlangenmensch probier mal den Schalter "/Zc:nrvo-". Der schaltet NRVO aus.
-
@Tyrdal Ändert nichts an dem Verhalten
-
@Schlangenmensch Hm, Ich habs mit VS 17.4.4 probiert. Ohne den Schalter war das struct tatsächlich nicht initialisiert (in der create), mit aber schon und alles wird normal angezeigt. Bist du sicher, dass du das an der richtigen Stelle gesetzt hast?
-
@Schlangenmensch sagte in Visual C++ optimiert double member weg:
Ändert nichts an dem Verhalten
Eine dumme Frage: Hast du schon ein neues Projekt zu Testzwecken erzeugt und dann den Code hineinkopiert?
So sind mir schon einige falsche Compilerflags aufgefallen.
-
@Quiche-Lorraine Aufgefallen ist mir das in einem "echten" Projekt. Getestet habe ich den Code oben dann in einem Ausprobier/Spielprojekt.
Nochmal ein ganz neues Projekt wäre auch noch eine Idee, aber erst für Montag
-
@Tyrdal hm, ich habe das ins freie Feld für sonstige Compilerflags eingetragen, in den Projektsettings unter dem Feld, in dem der gesamte Kommandozeilenaufruf angegeben ist.
-
@Schlangenmensch Da gehörts auch hin. Ich frage nur, weil ich schon mal versehentlich sowas beim Linker eingetragen hab und das war natürlich Mist.
-
@Quiche-Lorraine Hab gerade eine neue Solution mit einem neuen Projekt erstellt, mit dem selben Ergebnis.
@Tyrdal: Mit dem Flag geht's doch. War am Freitag wohl etwas zu müde und mir ist das "-" bei dem Flag durchgegangen. Ich bin trotzdem verwundert, dass nur bei
double
Membern da optimiert wird.