Abadianet
Messages postés40Date d'inscriptionmercredi 2 novembre 2005StatutMembreDernière intervention19 juin 2006
-
22 avril 2006 à 16:06
jace1975
Messages postés81Date d'inscriptionmardi 31 mai 2005StatutMembreDernière intervention12 octobre 2007
-
26 avril 2006 à 00:24
J'utilise la fonction ci-dessous pour calculer le pourcentage d’occupation du processeur
Su une machine classique, le résultat est conforme au taux d’occupation, mais la fonction retourne une valeur quasi nulle sur une machine équipée d’un processeur Centrino Duo – Ah les double-cœur !
Existe-il un remède ?
function ValeurOccupationProcesseur: double;
{ Cette fonction retourne le taux d'occupation du processeur }
var Info: TSYSTEM_PROCESSOR_PERFORMANCE_INFORMATION;
Long: Cardinal;
TickTotal, TickIdle, DiffTotal, DiffIdle: Integer;
begin
NtQuerySystemInformation($2,@Info,SizeOf(Info),Long);
TickIdle := Info.IdleTime Div 10000;
TickTotal := GetTickCount;
DiffIdle := TickIdle - MemTickIdle;
DiffTotal := max(TickTotal - MemTickTotal, 1);
result := 100 - DiffIdle / DiffTotal * 100;
If result < 0 Then
result := 0;
MemTickIdle := TickIdle;
MemTickTotal := TickTotal;
end;
avec
function NtQuerySystemInformation(SystemInfoClass: Integer; Info: Pointer; InfoLength: Cardinal; var ReturnLength: Cardinal): Integer; StdCall; External 'NTDLL.DLL' Name 'NtQuerySystemInformation';
jace1975
Messages postés81Date d'inscriptionmardi 31 mai 2005StatutMembreDernière intervention12 octobre 20071 26 avril 2006 à 00:24
salut,
je te conseillerai de tester via pdh.dll (ne marche pas avec W95 et W98). dans la documentation, il est en effet écrit que les stats processeurs supportent le dual core,etc...
tu trouveras sur le site un exemple d'utilisation de cette dll, mais si moi je l'utilise un peu différemment, mais qui devrait te satisfaire.
Abadianet
Messages postés40Date d'inscriptionmercredi 2 novembre 2005StatutMembreDernière intervention19 juin 20061 22 avril 2006 à 16:07
J'utilise la fonction ci-dessous pour calculer le pourcentage d’occupation du processeur
Su une machine classique, le résultat est conforme au taux d’occupation, mais la fonction retourne une valeur quasi nulle sur une machine équipée d’un processeur Centrino Duo – Ah les double-cœur !
Existe-il un remède ?
function ValeurOccupationProcesseur: double;
{ Cette fonction retourne le taux d'occupation du processeur }
var Info: TSYSTEM_PROCESSOR_PERFORMANCE_INFORMATION;
Long: Cardinal;
TickTotal, TickIdle, DiffTotal, DiffIdle: Integer;
begin
NtQuerySystemInformation($2,@Info,SizeOf(Info),Long);
TickIdle := Info.IdleTime Div 10000;
TickTotal := GetTickCount;
DiffIdle := TickIdle - MemTickIdle;
DiffTotal := max(TickTotal - MemTickTotal, 1);
result := 100 - DiffIdle / DiffTotal * 100;
If result < 0 Then
result := 0;
MemTickIdle := TickIdle;
MemTickTotal := TickTotal;
end;
avec
function NtQuerySystemInformation(SystemInfoClass: Integer; Info: Pointer; InfoLength: Cardinal; var ReturnLength: Cardinal): Integer; StdCall; External 'NTDLL.DLL' Name 'NtQuerySystemInformation';