Nachdem die Anzeige eines 1,8 MB Jpeg-Bildes über 7 Sekunden gedauert hat,
habe ich mal ein altes Win7 / D5 zum Vergleich entstaubt.
Vielleicht (hoffentlich) hat jemand von Euch eine Erklärung für die Ergebnisse
(und vor allem, wie ich von den Sekunden runterkomme).
Die Programm-Varianten:
D10P: Das Programm in D10.1/Win 10 erzeugt, Anzeige proprtional
D10Z: wie D10P, nicht proportional (Anzeige verzerrt)
D05Z: Das Programm in D5/Win 7 erzeugt, proportional gabs da noch nicht
Die beiden Systeme:
Win10: Win 10 Pro 64bit 1803 auf einem 8-Core-Ryzen mit 16 GB
RAM
Win7: Win 7 Pro 16bit auf einem Athlon 4850 mit 4 GB
RAM
Das Testbild ist eine 1,8 MB große jpeg-Datei, die Ladezeit ist vernachlässigbar,
(Dauer im Mittel, unabhängig vom System, lokal 3 ms und remote vom NAS 30 ms).
Das sind die gemessenen Anzeige-Zeiten:
|
EXE ----- Win10 --- Win7 |
D10P ----- 7,4 ----- 4,0 |
D10Z ----- 7,4 ----- 4,0 |
D05Z ---- 0,0 ---- 0,0 |
Das mit D5 erzeugte Programm zeigt das Bild auf beiden System verzögerungsfrei (aber verzerrt) an.
Das mit D10 erzeugte ist auf dem lahmen Win7 System fast doppelt so schnell wie auf dem Win10 (!),
egal ob proportional oder nicht. Aber auch die 4 Sekunden sind ja nicht vorzeigbar.
Der Code (identisch auf beiden Systemen):
Delphi-Quellcode:
procedure TForm1.Button1Click(Sender: TObject);
begin
JPegI := TJpegImage.Create;
JPegI.LoadFromFile(_FN_JPG);
Image1.Picture.Assign(JPegI);
end;
In D10 funktioniert ja auch :
- Image1.Picture.Bitmap.Assign(JPegI);
- Image1.Picture.LoadFromFile();
Laufzeitmäßig ist das aber alles gleich.
So, wenn jemand bis hierher gelesen hat: Irgendeine Idee?
Besten Dank
Reinhold