Einzelnen Beitrag anzeigen

Thomasl

Registriert seit: 19. Jun 2006
Ort: Vreden
66 Beiträge
 
Delphi 11 Alexandria
 
#1

Schnellere VirtualImageList mit weniger Arbeitsspeicherverbrauch

  Alt 6. Dez 2022, 14:41
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.
Angehängte Dateien
Dateityp: pas SimpleVirtualImageList.pas (7,4 KB, 7x aufgerufen)
Thomas Levering
  Mit Zitat antworten Zitat