AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Sprachen und Entwicklungsumgebungen Die Delphi-IDE Delphi .RES Resourcen - grundsaetzliche Funktionsweise

Delphi .RES Resourcen - grundsaetzliche Funktionsweise

Ein Thema von hzzm · begonnen am 19. Jun 2019 · letzter Beitrag vom 27. Jun 2019
Antwort Antwort
hzzm

Registriert seit: 8. Apr 2016
103 Beiträge
 
Delphi 10 Seattle Professional
 
#1

AW: Delphi .RES Resourcen - grundsaetzliche Funktionsweise

  Alt 27. Jun 2019, 14:37
Vielen Dank an alle fuer die nuetzlichen Informationen!

Da die Antworten aber so detailiert sind, stellt sich mir weiterhin die Frage:

Wenn ich alle Bild-Resourcen (.png's) beim Programmstart aus den Resourcen in eine Feldvariable TImageList o.ae. lade, laden diese dann beim Anfragen der Bilddaten beim ersten mal schneller als mit LoadFromResourceName?

Die EXE wird immer komplett in den Speicher geladen?
Nein, nicht wirklich. Windows verwendet hier seine virtuelle Speicherverwaltung: Die Datei wird (wie ein memory mapped file) mit einem Speicherbereich im Addressraum des Prozesses verknüpft. Der ist in Seiten fester Größe aufgeteilt, und wenn auf eine Addresse zugegriffen wird wird die Seite (wenn noch nicht geschehen) aus der Datei in den physischen Arbeitsspeicher geladen. Es werden also aus einer Programmdatei (oder DLL) nur die Teile geladen, die auch verwendet werden.
Also werden die .RES-Inhalte vor Erst-Verwendung direkt in den RAM geladen, weil aufgrund der ASM-Zugriffe klar wird, dass sie spaeter eh gelesen werden, oder landen sie erst in der Pagefile und beim Erstzugriff dann im RAM?
  Mit Zitat antworten Zitat
peterbelow

Registriert seit: 12. Jan 2019
Ort: Hessen
716 Beiträge
 
Delphi 12 Athens
 
#2

AW: Delphi .RES Resourcen - grundsaetzliche Funktionsweise

  Alt 27. Jun 2019, 16:09
Vielen Dank an alle fuer die nuetzlichen Informationen!

Da die Antworten aber so detailiert sind, stellt sich mir weiterhin die Frage:

Wenn ich alle Bild-Resourcen (.png's) beim Programmstart aus den Resourcen in eine Feldvariable TImageList o.ae. lade, laden diese dann beim Anfragen der Bilddaten beim ersten mal schneller als mit LoadFromResourceName?
Es ist völlig egal, wann Du die Resource lädst; der erste Zugriff lädt sie ins RAM und beim nächsten kann es dann sehr viel schneller gehen. Es gibt keine Art von prefetch oder so, Windows kann doch nicht wissen, wann, oder ob überhaupt, eine Resource verwendet wird. Das würde ja eine vollständige Analyse des Programms erfordern, und das wäre trotzdem zumeist für die Katz, da ein Programm mit Benutzerinteraktion eine Vielzahl von möglichen "Pfaden" durch den Kode hat, je nach Aktionen des Benutzers. Branch execution prediction machen die modernen CPUs nur in einem sehr limitierten Scope mit dem Inhalt der CPU Cache, das ist nicht Aufgabe des Betriebssystems.
Peter Below
  Mit Zitat antworten Zitat
Benutzerbild von Uwe Raabe
Uwe Raabe

Registriert seit: 20. Jan 2006
Ort: Lübbecke
11.652 Beiträge
 
Delphi 12 Athens
 
#3

AW: Delphi .RES Resourcen - grundsaetzliche Funktionsweise

  Alt 27. Jun 2019, 16:23
Wenn ich alle Bild-Resourcen (.png's) beim Programmstart aus den Resourcen in eine Feldvariable TImageList o.ae. lade, laden diese dann beim Anfragen der Bilddaten beim ersten mal schneller als mit LoadFromResourceName?
Das hört sich jetzt so an, als steckt ein konkretes Performance-Problem hinter deiner allgemein gehaltenen Frage. Dass die TImageList explizit aus einer Resource geladen wird, könnte auch ein Zeichen einer grundsätzlich falschen Herangehensweise sein.
Uwe Raabe
Certified Delphi Master Developer
Embarcadero MVP
Blog: The Art of Delphi Programming
  Mit Zitat antworten Zitat
Antwort Antwort

Themen-Optionen Thema durchsuchen
Thema durchsuchen:

Erweiterte Suche
Ansicht

Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 12:06 Uhr.
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz