Rouliann
Messages postés115Date d'inscriptionsamedi 20 décembre 2003StatutMembreDernière intervention23 août 2008
-
2 avril 2005 à 10:39
XenonGP
Messages postés43Date d'inscriptiondimanche 2 novembre 2003StatutMembreDernière intervention 6 septembre 2011
-
3 avril 2005 à 14:07
Salut tout le monde!
J'ai un gros problème : mon prog (qui est en fait un jeu, un pacman) bouffe la moitié des ressources du processeur et je comprends pas pourquoi...
Alors si vous savez comment résoudre ce problème, répondez vite svp!
++
____________________
**Rouliann** Life is short, program more!
XenonGP
Messages postés43Date d'inscriptiondimanche 2 novembre 2003StatutMembreDernière intervention 6 septembre 2011 2 avril 2005 à 11:49
J'ai déjà eu ça aussi et en fait c'était à cause d'une boucle trop longue genre:
do
{
...
}while(true);
Si j'étais toi, j'essaierais de glisser un sleep quelque part, en général cà ramène de 50% à 1% maximum ;)
// ta boucle principale
do
{
...
Sleep(10); // 10 ms par exemple, adapte en fonction de ce que ton jeu demande
}while(true);
Arnaud16022
Messages postés1329Date d'inscriptionvendredi 15 août 2003StatutMembreDernière intervention16 juin 20102 2 avril 2005 à 15:44
en fait le pb est que ton programme exécute une boucle en pemanence.
un prog Windows (genre IE ), par exemple, ne bouffe pas beaucoup de
ressources car il ne "travaille" que quand on clique sur un bouton /
scrolle / ...
Un prog graphique, lui, exécute une boucle en continu... une fois qu'il
est arrivé a la fin de while, il repart au début, pas le temps de
souffler... et c'est comme ca que tu te retrouve avec un fps de 300 et
un processus qui te bouffe 100% de ton CPU (pourquoi seulement 50 %
j'en sé rien...)
il faut effectivement ralentir le progamme...lui laisser le temps de
souffler uun peu. Un trruc genre for(int a=0;a!=10000:a++){} ne sert a
rien, certes ca ralentit le prog mais ca bouffe tjs du CPU.
il faut que l'OS arrete de s'orruper du prog pendant unn certain temps,
50 microsecondes par exempe, et pour ca Sleep(50) est bien, normalement
c'est dans Windows.h mais C pas sur
coucou747
Messages postés12303Date d'inscriptionmardi 10 février 2004StatutMembreDernière intervention30 juillet 201244 2 avril 2005 à 11:25
salut
faut croire qu'on a eu le même problème... j'avais fait un serveur de
tchat qui ne faisait pas plus de 200 lignes, et il n'était vraiment pas
compliqué... seulement, lui me "bouffait" 98/100....
pour résoudre ce problème, le plus simple c'est d'apeler le système de
temps en temps... pour toi, je sais pas si c'est possible...
In a dream, I saw me, drop dead... U was here, U cried... It was just a deam, if I die, U won't cry, maybe, U'll be happy
Arnaud16022
Messages postés1329Date d'inscriptionvendredi 15 août 2003StatutMembreDernière intervention16 juin 20102 2 avril 2005 à 16:09
de rien
plus haut je vois:
do
{
...
Sleep(10); // 10 ms par exemple, adapte en fonction de ce que ton jeu demande
}while(true);
le "
adapte en fonction
de ce que ton jeu demande" , je le changerais juste en " adapte en
fonction du delta temps ( temps entre 2 frames) calculé a la frame
précédente"
comme ca si t'as un intel 286 (looool) ca évitera qu'il attendre 10ms;
et un P5 de la NSA ( je suis sur que ca existe mdr) attendra 20ms
--> meme fps sur tous les PCs