Registriert seit: 9. Aug 2003
389 Beiträge
Delphi 7 Professional
|
Re: Durch eigenen Prozess verursachte CPU-Auslastung bekomme
24. Mai 2005, 22:47
wenn es nur um den CPU-Load des eigenen Processes geht, ist dies sehr einfach:
Delphi-Quellcode:
var
LastTick : LongWord;
LastTime : Int64;
CPUCount : Word;
// einmal initialisieren:
Var
CreationTime,
ExitTime,
KernelTime,
UserTime : TFILETIME;
SystemInfo : TSystemInfo
Begin
LastTick:=GetTickCount();
GetProcessTimes(GetCurrentProcess(),CreationTime,ExitTime,KernelTime,UserTime);
LastTime:=Int64(KernelTime) + Int64(UserTime);
GetSystemInfo(SystemInfo);
CPUCount:=SystemInfo.dwNumberOfProcessors;
// periodisch aufrufen (z.B. jede Sekunde):
Var
CreationTime,
ExitTime,
KernelTime,
UserTime : TFILETIME;
TickDelta : LongWord;
TimeDelta : Int64;
begin
TickDelta:=GetTickCount() - LastTick;
Inc(LastTick,TickDelta);
GetProcessTimes(GetCurrentProcess(),CreationTime,ExitTime,KernelTime,UserTime);
TimeDelta:=(Int64(KernelTime) + Int64(UserTime)) - LastTime;
Inc(LastTime,TimeDelta);
Label.Caption:=Format('CPU load: %.1f %%',[TimeDelta / 10000 / CPUCount / TickDelta * 100]);
PS: ev. wäre dies etwas für die Codelib, da diese Frage immer wieder kommt......
|
|
Zitat
|