AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Thema durchsuchen
Ansicht
Themen-Optionen

Codeoptimierung lieber abschalten

Ein Thema von Michael Ebner · begonnen am 3. Jan 2023 · letzter Beitrag vom 9. Jan 2023
Antwort Antwort
Seite 2 von 3     12 3      
Andreas13

Registriert seit: 14. Okt 2006
Ort: Nürnberg
719 Beiträge
 
Delphi XE5 Professional
 
#11

AW: Codeoptimierung lieber abschalten

  Alt 4. Jan 2023, 13:12
Zitat von Benmik:
Delphi-Quellcode:
{$IFDEF DEBUG}
  {$OPTIMIZATION OFF}
{$ENDIF}
Ist das nicht zu riskant? Wir unterdrücken damit eventuelle Fehler im Debug-Modus, lassen sie jedoch in der endgültigen Release-Version zu...
Grüße, Andreas
Grüße, Andreas
Wenn man seinem Nächsten einen steilen Berg hinaufhilft, kommt man selbst dem Gipfel näher. (John C. Cornelius)
  Mit Zitat antworten Zitat
Benutzerbild von dummzeuch
dummzeuch

Registriert seit: 11. Aug 2012
Ort: Essen
1.623 Beiträge
 
Delphi 10.2 Tokyo Professional
 
#12

AW: Codeoptimierung lieber abschalten

  Alt 4. Jan 2023, 13:55
Zitat von Benmik:
Delphi-Quellcode:
{$IFDEF DEBUG}
  {$OPTIMIZATION OFF}
{$ENDIF}
Ist das nicht zu riskant? Wir unterdrücken damit eventuelle Fehler im Debug-Modus, lassen sie jedoch in der endgültigen Release-Version zu...
Aber wir haben doch gerade von allen Seiten gehört, dass der Compiler beim Optimieren keine Fehler macht. Selbst mein Hinweis, dass ich solche Fehler schon mehrfach gesehen habe, wurde abgebügelt mit "das Problem war bestimmt in Deinem Code" (nicht dass das falsch wäre, schließlich war es mein Code, der optimiert wurde, ohne ihn wäre kein Fehler aufgetreten, aber es ist nicht hilfreich).

OK, ernsthaft: Das mache ich auch so, allerdings nicht durch ifdef im Sourcecode sondern durch Setzen der Option in der Release-Config. Das ifdef hat den Nachteil, dass es nicht so simpel ist, die Optimierung einzuschalten, weil man dafür den Sourcecode ändern muss.
Thomas Mueller
  Mit Zitat antworten Zitat
Benutzerbild von Uwe Raabe
Uwe Raabe

Registriert seit: 20. Jan 2006
Ort: Lübbecke
11.475 Beiträge
 
Delphi 12 Athens
 
#13

AW: Codeoptimierung lieber abschalten

  Alt 4. Jan 2023, 14:02
Das ifdef hat den Nachteil, dass es nicht so simpel ist, die Optimierung einzuschalten, weil man dafür den Sourcecode ändern muss.
Der gravierendste Nachteil ist aber wohl, dass es in jeder Unit stehen muss.
Uwe Raabe
Certified Delphi Master Developer
Embarcadero MVP
Blog: The Art of Delphi Programming
  Mit Zitat antworten Zitat
Benutzerbild von jaenicke
jaenicke

Registriert seit: 10. Jun 2003
Ort: Berlin
9.648 Beiträge
 
Delphi 11 Alexandria
 
#14

AW: Codeoptimierung lieber abschalten

  Alt 4. Jan 2023, 14:03
Selbst mein Hinweis, dass ich solche Fehler schon mehrfach gesehen habe
Ich habe dazu lediglich geschrieben, wie meine Erfahrungen mit solchen Meldungen waren. Das heißt nicht, dass das bei dir kein Compilerfehler war.

Konkrete Beispiele fände ich aber interessant.
Sebastian Jänicke
AppCentral
  Mit Zitat antworten Zitat
Benutzerbild von Uwe Raabe
Uwe Raabe

Registriert seit: 20. Jan 2006
Ort: Lübbecke
11.475 Beiträge
 
Delphi 12 Athens
 
#15

AW: Codeoptimierung lieber abschalten

  Alt 4. Jan 2023, 14:28
Konkrete Beispiele fände ich aber interessant.
Da kann ich mich nur anschließen! Zum einen kann man testen, ob es im aktuellen Delphi noch vorhanden ist, und zum anderen einen Bugreport schreiben, damit es behoben werden kann.
Uwe Raabe
Certified Delphi Master Developer
Embarcadero MVP
Blog: The Art of Delphi Programming
  Mit Zitat antworten Zitat
Benutzerbild von dummzeuch
dummzeuch

Registriert seit: 11. Aug 2012
Ort: Essen
1.623 Beiträge
 
Delphi 10.2 Tokyo Professional
 
#16

AW: Codeoptimierung lieber abschalten

  Alt 4. Jan 2023, 14:48
Konkrete Beispiele fände ich aber interessant.
Hm, ich habe gerade mal den Sourcecode unserer internen Bibliothek nach {$OPTIMIZATION OFF} ge-grep-t. Das einzige Beispiel, das ich dort gefunden habe ist etwas zu komplex, um es hier sinnvoll posten zu können:

Delphi-Quellcode:
finally
// Wenn Optimization on ist, gibt es in Delphi 2007 eine AccessViolation in TLaserData.Done bei
// der Freigabe von FReader. Ohne passiert das nicht.
// -- 2021-04-16 twm
{$OPTIMIZATION OFF}
    for LaserNo := Low(LaserData) to High(LaserData) do
      LaserData[LaserNo].Done;
    FreeAndNil(TrigStream);
    FreeAndNil(OutStream);
  end;
  Result := FRes;
end;
{$IFDEF OPTIMIZATION_IS_ON}
// Ab hier kann man Optimization wieder einschalten. Frueher - also z.B. direkt nach der
// for-schleife ging es nicht.
// -- 2021-04-16 twm
{$OPTIMIZATION ON}
{$ENDIF}

procedure TLaserData.Done;
begin
  FreeAndNil(FReader);
end;
Das sagt ziemlich wenig, ohne den Rest der Methode, aber selbst wenn ich die hier poste könnte, wäre sie ohne Kontext nur sehr schwer verständlich. Laserdata ist ein Array of TLaserData-Records, die optional initialisiert werden, wenn es die entsprechenden Dateien gibt. FReader wurde vor dem zugehörigen try mit NIL initializiert.

Andere Beispiele (ich meine es waren noch zwei weitere), finde ich nicht, die müssen im Source von einzelnen internen Tools gewesen sein, und davon haben wir zuviele um den mal eben zu grep-en.

Obiges Beispiel kann ich noch nicht auf Delphi 10.2 portieren, da es immernoch einen Rechner mit Windows XP gibt, auf dem es laufen muss, deshalb weiß ich nicht, ob der Fehler dort noch auftreten würde.
Thomas Mueller
  Mit Zitat antworten Zitat
Benutzerbild von Sherlock
Sherlock

Registriert seit: 10. Jan 2006
Ort: Offenbach
3.800 Beiträge
 
Delphi 12 Athens
 
#17

AW: Codeoptimierung lieber abschalten

  Alt 4. Jan 2023, 15:01
Also ich kann nur sagen, ich benutze die Optimierung immer und bin bisher noch nicht damit gegen eine Wand gefahren. Aber natürlich gibt es immer und überall Fehler, darum testet man ja - sowohl automatisiert als auch mit Menschen.

Hier mal ein paar Beispiele wie Fehler zu handhaben sind:
https://quality.embarcadero.com/browse/RSP-16456
https://quality.embarcadero.com/browse/RSP-34668
https://quality.embarcadero.com/browse/RSP-13831


Sherlock
Oliver
Geändert von Sherlock (Morgen um 16:78 Uhr) Grund: Weil ich es kann
  Mit Zitat antworten Zitat
Benmik

Registriert seit: 11. Apr 2009
560 Beiträge
 
Delphi 12 Athens
 
#18

AW: Codeoptimierung lieber abschalten

  Alt 4. Jan 2023, 16:44
Ist das nicht zu riskant? Wir unterdrücken damit eventuelle Fehler im Debug-Modus, lassen sie jedoch in der endgültigen Release-Version zu...
Ich hatte bisher ja noch nie von diesen Compiler-Fehlern gehört und um die Relevanz wird hier ja auch etwas gestritten. Was ich damit erreichen möchte, ist, dass ich nicht vergesse, die Optimierung wieder einzuschalten, was für mich persönlich das größere Problem ist. Uwe hat recht, dass man das in jede Unit eintragen muss; da es bei mir aber nahezu die Regel ist, dass mich die Optimierung schwerst beim Debuggen stört, steht das tatsächlich in sehr vielen Units drin. Aber man lernt ja dazu, zum Beispiel durch
... durch Setzen der Option in der Release-Config.

Geändert von Benmik ( 4. Jan 2023 um 16:49 Uhr)
  Mit Zitat antworten Zitat
Benutzerbild von himitsu
himitsu

Registriert seit: 11. Okt 2003
Ort: Elbflorenz
44.184 Beiträge
 
Delphi 12 Athens
 
#19

AW: Codeoptimierung lieber abschalten

  Alt 4. Jan 2023, 16:49
Einfach noch eine Config hinzufügen?

Release
Debug (wie Release, nur ohne Debuginfos)

Und dann kann man nochmal davon ableiten und Varianten mit/ohne Codeoptimierung hinzufügen,
oder, wie bereits erwähnt, dann das wenigstens in beiden Configs abschalten, damit man auch das debuggt, was auch der Kunde bekommt.

Alternativ mit externen Debuginfos kompilieren ... jenachdem ob die Debuginfodateien (TDS) daneben liegen, ist es mit oder ohne, aber die Programmdateien selber sind immer identisch.
$2B or not $2B

Geändert von himitsu ( 4. Jan 2023 um 16:52 Uhr)
  Mit Zitat antworten Zitat
TomyN

Registriert seit: 8. Nov 2006
Ort: Bayreuth
252 Beiträge
 
Delphi 10.3 Rio
 
#20

AW: Codeoptimierung lieber abschalten

  Alt 4. Jan 2023, 17:41
Ich meine gehört zu haben , dass im Optimierungsfalle Schleifen ggf. in die andere Richtung abgearbeitet werden, was zu 'Seiteneffekten' führen kann.
Thomas Neumann
Meine Projekte
www.satlive.audio
www.levelcheck.de
  Mit Zitat antworten Zitat
Antwort Antwort
Seite 2 von 3     12 3      


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 17:22 Uhr.
Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz