![]() |
Codeoptimierung lieber abschalten
In der Hilfe zu Delphi findet man zur Optimierung die folgenden Aussagen:
Zitat:
Das Bemerkenswerte daran: Das trat jetzt gerade nicht in einem Fall auf, in dem Timing-Geschichten oder so etwas $DINGE beeinflussen könnten, nicht um Threads, nicht um irgendwelche eingebundenen Bibliotheken, die möglicherweise sehr krude programmiert wurden. Sondern um simple String-Bearbeitung mit den Delphi-Standard-Units. Von daher meine Empfehlung: Die Codeoptimierung sollte immer deaktiviert sein. |
AW: Codeoptimierung lieber abschalten
hm. Kann ich in der Pauschalität nicht bestätigen. Man mag dem Delphi-Compiler einiges vorwerfen können, doch die klassischen String-Operationen hat er definitiv gut im Griff.
Kannst Du dies auf ein handhabbares Beispiel reduzieren? |
AW: Codeoptimierung lieber abschalten
Zitat:
Ich vermute, der Fehler wurde innerhalb einer bestehenden Anwendung beobachtet, die möglicherweise bereits Fehler enthält, die zu einem Seiteneffekt geführt haben. Das ist in der Praxis leicht möglich, wenn z.B. Speicherkorruption ausgelöst wird, oder Speichermangel besteht. |
AW: Codeoptimierung lieber abschalten
FUD.
Sherlock |
AW: Codeoptimierung lieber abschalten
Ja, es kann natürlich sein, dass die Optimierung irgendwo einen Bug hat
und dann doch dadurch etwas kapput geht. "vorübergehend" kann man dann die Optimierung global oder besser nur lokal abschalten und wendet sich dann dann an den Support -> ![]() Aber auch kann es ein Bug in Funktionen von Delphi sein, also RTL, VCL, usw. (wäre nicht das erste Mal), wo man dann eben auf andere Funktionen ausweichen könnte. So lange es keinen halbwegs reproduzierbaren Testfall gibt, oder jemand überhaupt erstmal verrät, was eigentlich das Problem sein soll, kann aber schlecht irgendjemand eine Lösung finden. Zitat:
NEIN |
AW: Codeoptimierung lieber abschalten
Ich hatte das definitiv schon mehrfach, dass ich für einige Codezeilen die Optimierung ausschalten musste, weil der Compiler sonst fehlerhaften Code erzeugte. Das war reproduzierbar:
Solche Fälle hatte ich bei Delphi 2006, 2007, XE2 und Delphi 10.2, wenn auch nicht notwendigerweise an denselben Code-Stellen. Da ich Delphi 11 so gut wie nicht benutze, kann ich dazu nichts sagen. Ich habe keine Bugreports geschrieben, da es sich nie um die aktuelle Delphi-Version handelte und meiner Erfahrung nach Bugreports für ältere Versionen einfach ignoriert werden. Keiner prüft, ob der Fehler bei der aktuellen Version vielleicht auch noch auftritt. |
AW: Codeoptimierung lieber abschalten
Zitat:
|
AW: Codeoptimierung lieber abschalten
Zitat:
Ein paarmal waren es aber echte Compilerprobleme, die aber alle schnell behoben wurden, und auch alle die jeweils aktuelle Version betrafen. |
AW: Codeoptimierung lieber abschalten
Zitat:
Bei Schleifen ist es schön, dass es nun die Inlinevariablen gibt. Da kann man danach garnicht erst auf soeine blöde Idee kommen.
Delphi-Quellcode:
Jo, auch zwinschen Platformen und sogar zwischen Win32 und Win64 gibt es solche Problemchen.
for var i: Byte := 0 to 123 do
for var i := 0 to 123 do for var S in SL do ... Wo z.B. Result plötzlich "null" ist, wenn man es vergessen hat, oder eben wo Variablen unterschiedliche "Initial"-Werte haben, jenachdem ob sie auf dem Stack oder in den Registern liegen, bzw. ob sie über die ganze Funktion oder nur den genutzen Zeitraum vorhanden sind usw. Ebenso, wie bei gemangten Results, wäre es bei Schleifen gut, wenn nach dem Ende der Compiler "vergessen" würde, dass die Variable "eigentlich" schon initialisiert ist. Dann gäbe es bei nachfolgenden Lesezugriffen auch eine entsprechende Warnung. |
AW: Codeoptimierung lieber abschalten
Zitat:
Ich finde übrigens
Delphi-Quellcode:
praktisch.
{$IFDEF DEBUG}
{$OPTIMIZATION OFF} {$ENDIF} |
Alle Zeitangaben in WEZ +1. Es ist jetzt 06:33 Uhr. |
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz