Autor |
Beitrag |
uranop
      
Beiträge: 149
Win XP, Win 7, Slackware 11, FreeBSD
D6E, php
|
Verfasst: Fr 10.07.09 17:18
Hallo Leute,
Ich bin gerade dabei so Späße wie RAM Auslastung, CPU Auslastung und eine Prozessliste per WMI zurealisieren.
Die Funktion ist gegeben, nur leider dauert das so lange ...
Ich habe den Timer zum Auslesen der 3 Querys auf 10 Sek gestellt. Das ist mir ehrlich gesagt zu lang.
Kann man es nicht irgendwie realisieren, das man die WMI parallel abfrägt ?
um beispielsweise eine tickrate von 1 Sek zusammen zu bekommen ?
Wär interessant zu wissen.
Thx in advance Moderiert von Narses: Topic aus Sonstiges (Delphi) verschoben am Mo 13.07.2009 um 18:26
|
|
BenBE
      
Beiträge: 8721
Erhaltene Danke: 191
Win95, Win98SE, Win2K, WinXP
D1S, D3S, D4S, D5E, D6E, D7E, D9PE, D10E, D12P, DXEP, L0.9\FPC2.0
|
Verfasst: Fr 10.07.09 20:58
Wenn jede dieser Aktionen separat eine Verbindung zur WMI herstellt, kannst Du allein dadurch bereits Zeit sparen, dass du die Verbindung nur einmalig herstellst und dann alle Abfragen über die gleiche Verbindung realisierst.
Für nähere Aussagen solltest Du aber einmal explizit schauen, was bei Dir die meiste Zeit braucht, da es sich nicht lohnt, an Stellen zu optimieren, die im Vergleich zu anderen nur wenig Zeit benötigen.
_________________ Anyone who is capable of being elected president should on no account be allowed to do the job.
Ich code EdgeMonkey - In dubio pro Setting.
|
|
jaenicke
      
Beiträge: 19313
Erhaltene Danke: 1747
W11 x64 (Chrome, Edge)
Delphi 11 Pro, Oxygene, C# (VS 2022), JS/HTML, Java (NB), PHP, Lazarus
|
Verfasst: Fr 10.07.09 21:51
Man kann da schon sehr viel optimieren, ich habe selbst mit einem entsprechenden Systeminfotool herumprobiert.
Dort habe ich nicht nur die Verbindung nur einmal hergestellt, sondern auch alle Werte einer Ergebniszeile direkt hintereinander ausgelesen statt mehrfach die Zeile abzufragen. Relativ gut einbauen lässt sich so etwas in diesen Quelltext:
www.delphi-forum.de/....php?p=551899#551899
|
|
uranop 
      
Beiträge: 149
Win XP, Win 7, Slackware 11, FreeBSD
D6E, php
|
Verfasst: So 12.07.09 00:01
hallo,
mit genao dem code frage ich ab ...
ich habe mittlerweile rausgefunden das die WMI durchaus schnell ist.
ich kann beispielsweise die 3 klassen Win32_Process, _OperatingSystem, _ComputerSystem im 500ms Takt abfragen.
Ohne Probleme.
Nur die Prozessorlast spielt da nicht mit.
da bedarf es noch etwas Tuning kA wie aber mal sehen.
|
|
jaenicke
      
Beiträge: 19313
Erhaltene Danke: 1747
W11 x64 (Chrome, Edge)
Delphi 11 Pro, Oxygene, C# (VS 2022), JS/HTML, Java (NB), PHP, Lazarus
|
Verfasst: So 12.07.09 11:26
Also ich kann ja einmal das Projekt anhängen. Allerdings ist da noch ein Speicherleck drin. Aber die Idee hinter dem Konzept sollte klar werden. Richtig funktionieren und aussehen tut es noch nicht, aber darum geht es hier ja auch nicht.
Ich trenne die Teile der Abfrage um nicht jedesmal das gleiche immer wieder ausführen zu müssen um verschiedene Werte oder so abzufragen. Die Prozessorlast ist so sehr gering. Wobei ich die CPU-Auslastung nicht via WMI hole, sondern nur die anderen Infos.
Du kannst dir ja exemplarisch einmal Units\InfoModules\CustomInfo.pas und Units\InfoModules\HardDiskInfo.pas oder so anschauen.
Einloggen, um Attachments anzusehen!
|
|
uranop 
      
Beiträge: 149
Win XP, Win 7, Slackware 11, FreeBSD
D6E, php
|
Verfasst: So 12.07.09 14:52
nettes prog, dem ist nichts auszusetzen.
aber, so wie ich das sehe ziehst du die cou info vom lokalen rechner.
das bekomme ich auch hin, mit gehts dabei vielmehr um den remote rechner den ich abfragen will .
deswegen der umweg über die wmi.
über die registry gehts ja nur bis win98 und das ist schon lange kein standart mehr bei uns : P
|
|
jaenicke
      
Beiträge: 19313
Erhaltene Danke: 1747
W11 x64 (Chrome, Edge)
Delphi 11 Pro, Oxygene, C# (VS 2022), JS/HTML, Java (NB), PHP, Lazarus
|
Verfasst: So 12.07.09 14:54
Das sollte ja auch nur ein Beispiel dafür sein, das Auslesen der WMI-Informationen zu verteilen um nicht den ganzen Code immer wieder auszuführen. 
|
|
|