Einzelnen Beitrag anzeigen

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