Forum |  HardWare.fr | News | Articles | PC | S'identifier | S'inscrire | Shop Recherche
1212 connectés 

  FORUM HardWare.fr
  Programmation
  Delphi/Pascal

  [GetThreadTimes] % CPU utilisé par une appli.. des précisions ?

 


 Mot :   Pseudo :  
 
Bas de page
Auteur Sujet :

[GetThreadTimes] % CPU utilisé par une appli.. des précisions ?

n°522664
Tetedeienc​h
Head Of God
Posté le 24-09-2003 à 21:39:03  profilanswer
 

Bonjour !
 
j'ai quelques problemes avec getthreadtimes.
 
Cette fonction permet d'obtenir des stats sur le thread en question.
 
Elle me sert a monitorer le % CPU utilisé par mon thread.
 
j'utilise une fonction du type :
 

Code :
  1. function Tbenchs.GetTheThreadTimes(PID: integer) : Double;
  2. var
  3.   lpLocalFileTime : TFileTime;
  4.   lpSystemTime    : TSystemTime;
  5.   lpCreationTime,
  6.   lpExitTime,
  7.   lpKernelTime,
  8.   lpUserTime      : TFileTime;
  9.   KernelTime,
  10.   UserTime   : TDateTime;
  11.   SecRunning,SecCPU : Int64;
  12. begin
  13.       GetThreadTimes(PID, lpCreationTime, lpExitTime, lpKernelTime,
  14. lpUserTime);
  15.       FileTimeToLocalFileTime(lpCreationTime, lpLocalFileTime);
  16.       //Get the kernel time and format it
  17.       FileTimeToSystemTime(lpKernelTime, lpSystemTime);
  18.       KernelTime := SystemTimeToDateTime(lpSystemTime);
  19.       //Get the user time and format it
  20.       FileTimeToSystemTime(lpUserTime, lpSystemTime);
  21.       UserTime := SystemTimeToDateTime(lpSystemTime);
  22.       SecCPU := MilliSecondsBetween(TimeOf(Usertime+Kerneltime),0);
  23.       SecRunning := MilliSecondsBetween(TimeOf(Now()),TimeOf(StartTime));
  24.       Result  := (SecCPU / SecRunning) * 100.0;
  25. end;


 
avant de lancer le thread, la ligne juste au dessus, je fais un :  
StartTime := now();
 
Ca marche bien.
 
Mais deux questions suivent :
-Que ce passera t'il apres 24h ? ca va forcément bugguer, nan ? Sans le timeof, j'ai pas réussi a avoir une valeur correcte... une idée ?
-Y a t'il moyen de s'en sortir avec getprocesstimes pour avoir le temps CPU + GUI en meme temps ? si oui, comment ? J'ai déjà essayé d'enregistrer les valeurs de départ et de les soustraire aux valeurs que j'obtenais... sans succès.
 

Code :
  1. function Tbenchs.GetTheProcessTimes():Double;
  2. var
  3.   lpLocalFileTime : TFileTime;
  4.   lpSystemTime    : TSystemTime;
  5.   lpCreationTime,
  6.   lpExitTime,
  7.   lpKernelTime,
  8.   lpUserTime      : TFileTime;
  9.   PH : THandle;
  10.   KernelTime,
  11.   UserTime   : TDateTime;
  12.   SecRunning,SecCPU : Int64;
  13. begin
  14. PH := OpenProcess(PROCESS_QUERY_INFORMATION, FALSE, GetCurrentProcessId());
  15.   if PH <> 0 then
  16.       GetProcessTimes(PH, lpCreationTime, lpExitTime, lpKernelTime, lpUserTime);
  17.       FileTimeToLocalFileTime(lpCreationTime, lpLocalFileTime);
  18.       //Get the kernel time and format it
  19.       FileTimeToSystemTime(lpKernelTime, lpSystemTime);
  20.       KernelTime := SystemTimeToDateTime(lpSystemTime);
  21.       KernelTime := KernelTime - StartKernelTime;
  22.       //Get the user time and format it
  23.       FileTimeToSystemTime(lpUserTime, lpSystemTime);
  24.       UserTime := SystemTimeToDateTime(lpSystemTime);
  25.       UserTime := UserTime - StartUserTime;
  26.       SecCPU := MilliSecondsBetween(TimeOf(Usertime+Kerneltime),0);
  27.       SecRunning := MilliSecondsBetween(TimeOf(Now()),TimeOf(StartTime));
  28.       Result  := (SecCPU / SecRunning) * 100.0;
  29.       CloseHandle(PH);
  30. end;


 
des idées ? des précisions ? de l'aide ? :(


Message édité par Tetedeiench le 24-09-2003 à 21:42:11

---------------
L'ingénieur chipset nortiaux : Une iFricandelle svp ! "Spa du pâté, hin!" ©®Janfynette | "La plus grosse collec vivante de bans abusifs sur pattes" | OCCT v12 OUT !
mood
Publicité
Posté le 24-09-2003 à 21:39:03  profilanswer
 

n°522671
Tetedeienc​h
Head Of God
Posté le 24-09-2003 à 21:41:10  profilanswer
 

Suite a une mauvaise blague "ta fonction getthreadtimes marche mal mais nan en fait elle est bien ct du photoshop" j'edite le premier post, la seconde question est encore d'actualité, et une autre me tordslapine...


---------------
L'ingénieur chipset nortiaux : Une iFricandelle svp ! "Spa du pâté, hin!" ©®Janfynette | "La plus grosse collec vivante de bans abusifs sur pattes" | OCCT v12 OUT !

Aller à :
Ajouter une réponse
  FORUM HardWare.fr
  Programmation
  Delphi/Pascal

  [GetThreadTimes] % CPU utilisé par une appli.. des précisions ?

 

Sujets relatifs
[linux] commication avec une appli java depuis le kernel[Vb.Net/MySQL] Comment accéder à une base MySQL via une appli Vb.Net ?
[VB] Modifier les propriétés d'un document word depuis appli vb[architecture] appli-web
Appli PHP de gestion d'emails[visualc++] recuperer nom du CPU ?!
Lancer une appli externe dans un prog Java[installeur et mise a jour d'une appli]
Profilage d'appli en java[ODBC] Déploiement d'appli utilisant ODBC pour une base ACCESS
Plus de sujets relatifs à : [GetThreadTimes] % CPU utilisé par une appli.. des précisions ?


Copyright © 1997-2022 Hardware.fr SARL (Signaler un contenu illicite / Données personnelles) / Groupe LDLC / Shop HFR