Optimiser l'utilisation du CPU

Optimiser l'utilisation du CPU - C - Programmation

Marsh Posté le 02-06-2005 à 13:07:09    

Bonjours,
existe-t-il un moyen en C pour eviter d'utiliser le CPU a fond lorsque l'application est lancee?
D'ailleurs quelles peuvent etre les causes de ce phenomene? (en fait l'appli occupe 25% au depart, puis ca augmente lentement jusqu'a atteindre ~ 98%, le code etant volontairement enferme dans une boucle infinie)
Ca peut venir d'un leak de memoire? Que me conseillez vous comme bon memory-leak tracer sous UNIX (j'en ai besoin d'un de toutes facons)?
Merci d'avance :)


Message édité par Shabang le 02-06-2005 à 13:08:39

---------------
gnature gnature gnature gnature gnature gnature
Reply

Marsh Posté le 02-06-2005 à 13:07:09   

Reply

Marsh Posté le 02-06-2005 à 13:21:08    

Citation :

Que me conseillez vous comme bon memory-leak tracer sous UNIX


valgrind, purify

Reply

Marsh Posté le 02-06-2005 à 13:30:05    

purify :o

Reply

Marsh Posté le 02-06-2005 à 14:12:00    

Pour l'utilisation CPU, je pense que ca vient du fait que le programme a certains moments, ne fait strictement rien, mais continue tout de meme a boucler... je devrais pouvoir m'en sortir avec un sleep, ou quelque chose du genre.

manatane a écrit :

Citation :

Que me conseillez vous comme bon memory-leak tracer sous UNIX


valgrind, purify


merci, je vais regarder ca ;)


---------------
gnature gnature gnature gnature gnature gnature
Reply

Marsh Posté le 02-06-2005 à 14:51:48    

gprof et gcov également

Reply

Marsh Posté le 02-06-2005 à 23:36:10    

Shabang a écrit :

existe-t-il un moyen en C pour eviter d'utiliser le CPU a fond lorsque l'application est lancee?
D'ailleurs quelles peuvent etre les causes de ce phenomene? (en fait l'appli occupe 25% au depart, puis ca augmente lentement jusqu'a atteindre ~ 98%, le code etant volontairement enferme dans une boucle infinie)
Ca peut venir d'un leak de memoire? Que me conseillez vous comme bon memory-leak tracer sous UNIX (j'en ai besoin d'un de toutes facons)?


C'est clair qu'une boucle infinie 'blanche', c'est à dire sans suspension, c'est pas ce qu'on fait de mieux dans le genre programmation coopérative... Heureusement que les interruptions, et notamment celles du time-slicing (Linux, Windows 9x/NT) continuent à faire avancer le monde, sinon, ce serait le blocage définitif (comme sous MS-DOS), ou Windows 3.x. C'était le bon temps...
 
Un programme 'civilisé' ne doit pas faire de boucles de plus de quelques millisecondes (au pif). Il faut donc le suspendre de temps en temps pour que les autres processus puissent récupérer le CPU aussi...
 
La programmation multitâche, c'est pas du bricolage... C'est un métier...
 
Quand aux fuites mémoires éventuelles, elles n'ont rien à voir avec l'occupation du CPU... Ca concerne plutôt les ressources...


Message édité par Emmanuel Delahaye le 02-06-2005 à 23:38:16

---------------
Des infos sur la programmation et le langage C: http://www.bien-programmer.fr Pas de Wi-Fi à la maison : http://www.cpl-france.org/
Reply

Marsh Posté le 03-06-2005 à 04:38:06    

Emmanuel Delahaye a écrit :

C'est clair qu'une boucle infinie 'blanche', c'est à dire sans suspension, c'est pas ce qu'on fait de mieux dans le genre programmation coopérative... Heureusement que les interruptions, et notamment celles du time-slicing (Linux, Windows 9x/NT) continuent à faire avancer le monde, sinon, ce serait le blocage définitif (comme sous MS-DOS), ou Windows 3.x. C'était le bon temps...
 
Un programme 'civilisé' ne doit pas faire de boucles de plus de quelques millisecondes (au pif). Il faut donc le suspendre de temps en temps pour que les autres processus puissent récupérer le CPU aussi...


Pardon j'ai du mal m'exprimer, je parlais d'une boucle infinie qu'on peut trouver dans un jeu ou un daemon par exemple. Du genre:

while (app.alive)
    run(app);


Mon truc est resolu, le select n'etait pas temporise intelligemment, mais je suis curieux de savoir comment proceder dans le cas d'un jeu ou d'une appli graphique basee sur des animations.
 

Citation :

La programmation multitâche, c'est pas du bricolage... C'est un métier...


J'avoue que jusqu'a pas longtemps je codais sur un systeme prehistorique, donc le partage des ressources c'est un peu nouveau pour moi. Par contre le bricolage j'evite  :ange:  

Citation :

Quand aux fuites mémoires éventuelles, elles n'ont rien à voir avec l'occupation du CPU... Ca concerne plutôt les ressources...


Oui oui je m'en suis rendu compte apres avoir poste :)
de toutes facons les reponses d'apres m'ont ete utiles.


---------------
gnature gnature gnature gnature gnature gnature
Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed