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

 


 Mot :   Pseudo :  
 
 Page :   1  2
Page Suivante
Auteur Sujet :

[C++] Sleep sans avoir 99% de CPU de pris ?

n°554603
BifaceMcLe​OD
The HighGlandeur
Posté le 30-10-2003 à 15:56:26  profilanswer
 

Reprise du message précédent :

*Syl* a écrit :

La fréquence risque d'être modifiée dans ce cas là, à tester..


Je ne pense pas car le CPU reste utilisé à 100% dans tous les cas.

mood
Publicité
Posté le 30-10-2003 à 15:56:26  profilanswer
 

n°554616
bjone
Insert booze to continue
Posté le 30-10-2003 à 16:11:36  profilanswer
 

tetedeiench a écrit :


 
Essaye de mesurer la fréquence du CPU quand celle ci baisse qu'on rigole.
 
Ensuite, relis bien mon message, le kernel entre en mode basse conso si appel a sleep sur P3M, Dixit monsieur CPU-Z :D J'ose pas trop l'contredire tu vois ^^


 
ha bah si franck le dit c'est que c'est vrai, mais à mon avis c'est pas le seul cas. (pi tu peux faire un sleep et le noyau donne le timesclice à un autre process)
 
la fréquence cpu tu la mesures à ce moment là en charge...
 
tu fais une boucle à la con de de while pendant 100ms, et tu fais deux rdtsc et QueryPerformanceCounter(). (tu te sers du QueryPerformancounter pour ton while d'à peu près 100ms)

n°555855
blackgodde​ss
vive le troll !
Posté le 31-10-2003 à 19:55:31  profilanswer
 

sleep != Sleep hein ?
c Sleep l'api windows (ou SleepEx)


---------------
-( BlackGoddess )-
n°556602
Tetedeienc​h
Head Of God
Posté le 02-11-2003 à 10:07:11  profilanswer
 

BJOne a écrit :


 
ha bah si franck le dit c'est que c'est vrai, mais à mon avis c'est pas le seul cas. (pi tu peux faire un sleep et le noyau donne le timesclice à un autre process)
 
la fréquence cpu tu la mesures à ce moment là en charge...
 
tu fais une boucle à la con de de while pendant 100ms, et tu fais deux rdtsc et QueryPerformanceCounter(). (tu te sers du QueryPerformancounter pour ton while d'à peu près 100ms)


les TSC timers c bien, mais ca y en a etre pas bien sur P4C et sur les proco mobiles, mon grand souci justement :cry:

n°557217
bjone
Insert booze to continue
Posté le 02-11-2003 à 23:43:45  profilanswer
 

hein ?
 
le Time Stamp Counter il est là sur tous les cpus depuis le pentium 1...
 
le seul problème avec rdtsc c'est qu'il faut être en ring 0.
 
je vois pas comment tu veux faire une mesure de fréquence exacte autrement :??:

n°557267
Tetedeienc​h
Head Of God
Posté le 03-11-2003 à 08:31:04  profilanswer
 

BJOne a écrit :

hein ?
 
le Time Stamp Counter il est là sur tous les cpus depuis le pentium 1...
 
le seul problème avec rdtsc c'est qu'il faut être en ring 0.
 
je vois pas comment tu veux faire une mesure de fréquence exacte autrement :??:


 
Ben sur les procos a economie d'énergie ca marche moyen :(

n°557901
bjone
Insert booze to continue
Posté le 03-11-2003 à 17:47:38  profilanswer
 

tous les procos actuels sont à économie d'energie... (ils sont tous capables de couper des unitées)
 
tu parles de quoi des cpu speedstep & co ? (variation de la fréquence cpu en fonction de la charge os ?)
 
et en amont de ton sleep tordu, tu veux faire quoi ? mesurer la fréquence cpu sur tout type de cpu ? (supposant qu'il faut au moins l'instruction rdtsc pour faire la mesure)

n°687312
naoyfurieu​x
Posté le 30-03-2004 à 13:46:32  profilanswer
 

je sais pas si ça peut vous aidez mais j'ai trouver cette fonction sleep sur un forum
www.cppfrance.com/code.aspx?ID=9110
 
sinon j'ai moi aussi un pb avec la fonction Sleep de windows.h par exemple

Code :
  1. for (int i=0; i<10 ; i++)
  2. {
  3.    cout <<"attente: " << i << " seconde(s)\n"
  4.    Sleep(1000);
  5. }


et contrairement a toute attente:
1) le message 0 seconde s'affiche après 1 seconde (au lieu d'arriver de suite)
2) tout les autres messages arrivent immédiatement après
(comme si il n'attendait qu'une fois pourtant la bouble fontionne puisque le message est afficher 10 fois)  
 
je précise que je débute un peu (j'en suis pas encore a mesurer la fréquence du CPU) et que je dev sur win XP avec VC++
 
merci de votre aide

n°687320
cricri_
Posté le 30-03-2004 à 14:01:58  profilanswer
 

C'est pas plutôt comme ça qu'il faudraut faire ? :
 

Code :
  1. for (int i=0; i<10 ; i++)
  2. {
  3.    cout <<"attente: " << i << " seconde(s)" << endl;
  4.    Sleep(1000);
  5. }


Message édité par cricri_ le 30-03-2004 à 14:03:07
n°688374
naoyfurieu​x
Posté le 31-03-2004 à 13:48:16  profilanswer
 

merci cricri, ca marche bcp mieux maintenant
en revanche j'avais oublier le endl; mais je croyais qu'il permettait d'aller a la ligne et eventuelement de vider le buffer de sortie vers l'écran (a peu pres car je ne suis pas un expert) mais je comprnd pas pourquoi ca met un tel bazar de l'oublier genre pourquoi la fonction sleep ne fonctionne qu'une fois dans la boucle  si on le le met pas


---------------
even if you win the rat's race............you're still a rat
mood
Publicité
Posté le 31-03-2004 à 13:48:16  profilanswer
 

n°688383
Taz
bisounours-codeur
Posté le 31-03-2004 à 13:53:23  profilanswer
 

c'est quoi ce up ?
 
maintenant lequel d'entre vous est capable de dire pourquoi endl marche et pas \n ?

n°688389
*syl*
--&gt; []
Posté le 31-03-2004 à 13:54:59  profilanswer
 

Parce que endl = '\n' + flush

n°688392
Taz
bisounours-codeur
Posté le 31-03-2004 à 13:56:29  profilanswer
 

*syl* a écrit :

Parce que endl = '\n' + flush

putain tu sais pas compté toi :o
si je leur pose la question, c'est pour qu'il réfléchisse et comprenne que endl fait un peu plus que '\n' ... j'ai pas besoin de cake qui répète leur leçon :o


Message édité par Taz le 31-03-2004 à 13:57:15
n°688404
*syl*
--&gt; []
Posté le 31-03-2004 à 14:00:34  profilanswer
 

Taz a écrit :

putain tu sais pas compté toi :o

Toi c'est pas mieux, tu sais pas écrire :p  
 

Taz a écrit :

si je leur pose la question, c'est pour qu'il réfléchisse et comprenne que endl fait un peu plus que '\n' ... j'ai pas besoin de cake qui répète leur leçon :o

Oups, désolé maître Taz, je sors de cette cat' qui ne m'appartient pas ! [:*syl*]

n°688411
kadreg
profil: Utilisateur
Posté le 31-03-2004 à 14:01:44  profilanswer
 

[:cupra] on peut pourrir ce topic ?


---------------
brisez les rêves des gens, il en restera toujours quelque chose...  -- laissez moi troller sur discu !
n°688415
Taz
bisounours-codeur
Posté le 31-03-2004 à 14:03:02  profilanswer
 

je crois que c'est fait pour.
 
J'en profite pour souligner le fabuleux titre :)

n°690568
lecoyote
Posté le 02-04-2004 à 10:23:31  profilanswer
 

Créé un timer lors du lancement de ton prg., et ta fonction, base la sur ce timer ;)


Message édité par lecoyote le 02-04-2004 à 10:23:48
n°885152
pidjot
Posté le 28-10-2004 à 17:53:22  profilanswer
 

quelqu1 pourez me dire pk le code la passa pas a mon compilo :

Code :
  1. Sleep(3000);


n°885158
Taz
bisounours-codeur
Posté le 28-10-2004 à 17:57:47  profilanswer
 

parce que comme le dit ce topic en long et en large, chaque système à ses fonctions de temporisations propress

n°885159
cris56
Posté le 28-10-2004 à 17:57:57  profilanswer
 

tu pourais nous dire c'est quoi ton os et ton compilo ?
 
ca c'est le sleep win32

n°885214
lsdYoYo
gravity powered
Posté le 28-10-2004 à 18:54:42  profilanswer
 

- sleep() avec un 's' minuscule est une fonction standard du C (comme strcpy() ou fopen()). Elle existe avec tous(?) les compilos sur tous(?) les OS.
- Sleep() avec un 'S' majuscule est une fonction de l'API Win32 et donc n'est accessible que sous Windows.
 
Comme beaucoup d'autres, je ne vois pas pourquoi l'appel de "Sleep()" déclencherais d'un coup l'économiseur d'énergie. Dans plusieurs de mes progs j'emploi un mix entre des "Sleep(0)" et des "Sleep(1)" ce qui me donne des temps de latence très court (entre 1/2 et 2 milli-secondes) tout en conservant la charge CPU < 1%, tant que le thread tourne à vide et que les événements surveillés ne s'excitent pas trop.
 


---------------
If I want to fail and succeed, which I have done ?
n°885217
cris56
Posté le 28-10-2004 à 18:56:55  profilanswer
 

sleep() c'est pas standard :o c'est posix

n°885221
lsdYoYo
gravity powered
Posté le 28-10-2004 à 19:00:47  profilanswer
 

Ah, ok.  :)


---------------
If I want to fail and succeed, which I have done ?
mood
Publicité
Posté le   profilanswer
 

 Page :   1  2
Page Suivante

Aller à :
Ajouter une réponse
 

Sujets relatifs
[PHP] le mode_safe n est pas pris en compte[windows thread/processes] Le Sleep sous windows n'est pas précis.
Récupérer le FSB et/ou le coef mult. d'un CPU ...[GetThreadTimes] % CPU utilisé par une appli.. des précisions ?
[visualc++] recuperer nom du CPU ?![Microsoft SDK] fonction de l'API win pour avoir le Load CPU ?
Trouver la valeur de l'id CPUUtilisation du CPU par une application
[PHP] cherche une alternative à SLEEP (problème résolut)[Threads] A t'on un controle quelconque sur le CPU utilise ?
Plus de sujets relatifs à : [C++] Sleep sans avoir 99% de CPU de pris ?


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