Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Die Delphi-IDE (https://www.delphipraxis.net/62-die-delphi-ide/)
-   -   Schnellere VirtualImageList mit weniger Arbeitsspeicherverbrauch (https://www.delphipraxis.net/212036-schnellere-virtualimagelist-mit-weniger-arbeitsspeicherverbrauch.html)

Thomasl 6. Dez 2022 14:41

Schnellere VirtualImageList mit weniger Arbeitsspeicherverbrauch
 
Liste der Anhänge anzeigen (Anzahl: 1)
Bei der TVirtualImageList habe ich das Problem, das wenn in der ImageCollection viele Bilder sind,
und dann diese TVirtualImageList auf vielen Form´s liegt. Dann wird das schon Langsamer und benötig viel Arbeitsspeicher.
Das ist auch nicht direkt aufgefallen, weil ich die Form´s nicht alle bei Programmstart erstelle.

Wenn ich alle Form´s beim Start erstelle, hatte das dann 45Sec benötigt. (i9-10885H CPU)
Und die ganzen TVirtualImageList haben 300MB mehr Arbeitsspeicher benötigt
Es muss ja je eine TVirtualImageList pro Form sein, wegen der DPI Umschaltung.

Nicht alle Bilder zur TVirtualImageList geht bei mir nicht.

Also habe ich mir den Source der TVirtualImageList angesehen und eine Vereinfachte abgewandelt.
Hier werden immer alle Bilder der Collection hinzugefügt, einzustellen gibt es nichts.
Es wird nur eine Imagelist in Windows "ImageList_Create" pro Größe und ImageCollection erstellt.
Bei Size/DPI Änderung wird nur das Handle auf die andere Liste umgeschaltet.

Ich habe das nur mit VCL probiert,
bis Runter zu XP klappt das auch.
ImageName habe ich noch mal weggelassen.
ReportMemoryLeaksOnShutdown hat auch nichts angezeigt

Verbesserungsvorschläge sind erwünscht.


Alle Zeitangaben in WEZ +1. Es ist jetzt 09:33 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