Einzelnen Beitrag anzeigen

Benutzerbild von himitsu
himitsu

Registriert seit: 11. Okt 2003
Ort: Elbflorenz
44.071 Beiträge
 
Delphi 12 Athens
 
#10

AW: Ladezeiten von Modulen ermitteln

  Alt 10. Jan 2023, 14:48
OK, hab'sch irgednwie übersehn.

Wenn es statisch gelinkte DLLs sind, dann wird es schwer,
denn die werden ja geladen, bevor ein Code von deiner EXE ausgeführt wird.

Bei LoadLibrary kann man von vorher zu nachher die Zeit messen.
Manuell oder man hookt den Aufruf.


Extern messen, z.B. mit dem ProcessExplorer ober über's WindowsSystem-Log (live oder gespeichert) ginge auch.


Als Debugger würde man über's Laden informiert, aber sich als Debugger an sich selbst zu hängen ist keine gute Idee.

Im Programm gibt es zwei NotificationsAPI von Windows, wo man über's Laden von DLL/BPL informiert wird,
aber Messen geht da nicht direkt. Sie geben aber zurück was "gerade eben" geladen wurde.
(leider gibt es kein Event für "ich werde jetzt anfangen zu Laden")

Nja, man könnte zumindestens die Zeit zum letzten Event messen und hätte dann in etwa die Zeit für die soeben geloggte DLL.


Bei uns hab ich es nur als Fortschrittsanzeige genommen, ähnlich wie bei Delphi im Splashscreen.
Mit der "alten" API MSDN-Library durchsuchenLdrRegisterDllNotification sieht man zumindestens was zuletzt geladen wurde. (die Neue wird dringend empfohlen, aber die Alte ist wesentlich einfacher)

Schöner wäre es zwar, wenn man sieht was gerade lädt und wo es sozusagen derzeit hängt, aber besser als nichts, wenn das Laden mal wieder ewig dauert.
Neuste Erkenntnis:
Seit Pos einen dritten Parameter hat,
wird PoSex im Delphi viel seltener praktiziert.
  Mit Zitat antworten Zitat