Einzelnen Beitrag anzeigen

Michael II
Online

Registriert seit: 1. Dez 2012
Ort: CH BE Eriswil
721 Beiträge
 
Delphi 11 Alexandria
 
#29

AW: Jpeg Image anzeigen dauert ewig (D10.1)

  Alt 4. Apr 2019, 23:50
Und es gibt wahrscheinlich noch einen weiteren Grund für die massiven Unterschiede zwischen D5 und D10.

Das Laden und Anzeigen des Bildes läuft bei D5 und D10 unterschiedlich ab. (Ich nehme meine Qualitätsbemerkung zurück.)

Wenn du deinen Code

Delphi-Quellcode:
// Starte die Uhr
  JPegI := TJpegImage.Create;
  JPegI.LoadFromFile( filename );
  Image1.Picture.Assign(JPegI);
// Stoppe die Uhr
- mit D5 kompilierst und laufen lässt, dann passiert dies:
Der Inhalt der Datei filename wird in einen Stream geladen, du stoppst die Zeit und nun erst wird das Bild aufgebaut.

- mit D10 kompilierst und laufen lässt, dann passiert dies:
Der Inhalt der Datei filename wird in einen Stream geladen, das Bild wird aufgebaut, du stoppst die Zeit.

Da das Laden in den Stream nur sehr wenig Zeit benötigt, misst du im D5 Fall sehr kleine Zeiten.

Ich weiss, man sollte Application.ProcessMessages; nicht nutzen und ich tu's auch nicht in Programmen, aber hier dürfen wir vielleicht mal eine Ausnahme machen .

Ergänze den Code wie folgt

Delphi-Quellcode:
// Starte die Uhr
  JPegI := TJpegImage.Create;
  JPegI.LoadFromFile( filename );
  Image1.Picture.Assign(JPegI);
  Application.ProcessMessages;
// Stoppe die Uhr
und miss die Zeit mit D5 und D10. Bei D5 wirst du nun weit mehr messen als vorher, bei D10 bleibt der Wert ungefähr gleich. Grund: Auch im mit D5 kompilierten Programm misst du nun das Laden in den Stream und den Aufbau des Bildes.

[Natürlich könntest du noch genauer messen...]

Wenn ich deine Beispielprogramme starte ist gefühlt Synopses Lösung am schnellsten, dann D5 dann D10.

Und falls dein mit D5 kompilierter Code doch schneller laden sollte als Synopses Code, dann könntest du eventuell mit D5 eine DLL erstellen (da der Quellcode der jpeg unit wahrscheinlich fehlt) und in D10 nutzen (?).
Michael Gasser

Geändert von Michael II ( 5. Apr 2019 um 00:55 Uhr)
  Mit Zitat antworten Zitat