CPU Usage

gribouillex Messages postés 172 Date d'inscription lundi 10 octobre 2005 Statut Membre Dernière intervention 16 mai 2011 - 30 oct. 2006 à 17:05
PCPT Messages postés 13272 Date d'inscription lundi 13 décembre 2004 Statut Membre Dernière intervention 3 février 2018 - 31 oct. 2006 à 13:08
Bonjour,

J'ai créé un programme (lecteur de fichiers MIDI) .
Dès que je lance la lecture d'un fichier MIDI, le CPU Usage atteint les 70 - 80 % et les tient tout au long de la lecture..
Comme je suis débutant, j'ai peut-être fait des choses à ne pas faire...
Par exemple, j'ai trois timers qui se mettent en route à chaque lecture... je fais de l'affichage plein écran en 1024*768... mais je ne sais pas si ça pose problème...

Qui peut me dire ce qu'il faut éviter de faire en programmation pour que le CPU reste dans la "norme" pour ce type de programme (et que mon PC portable arrête de souffler comme ça ?).

9 réponses

PCPT Messages postés 13272 Date d'inscription lundi 13 décembre 2004 Statut Membre Dernière intervention 3 février 2018 47
31 oct. 2006 à 00:38
salut,

si peu détaillé, dur dur....


essaye de voir comment te passer de tes timers?...
<hr size="2" width="100%" />Prenez un instant pour répondre à ce sondage svp
0
gribouillex Messages postés 172 Date d'inscription lundi 10 octobre 2005 Statut Membre Dernière intervention 16 mai 2011
31 oct. 2006 à 10:56
Je suis obligé d'utiliser les timers (peut-être que je peux les regrouper dans un seul, cela étant...) mais j'ignore si c'est ce genre de choses qui augmente drastiquement le CPU Usage....
Petite précision : mon programme utilise DirectX
0
gribouillex Messages postés 172 Date d'inscription lundi 10 octobre 2005 Statut Membre Dernière intervention 16 mai 2011
31 oct. 2006 à 11:06
Bon, même en regroupant mes trois timers dans un seul, j'arrive toujours au même pourcentage d'utilisation du CPU...

Peut-être est-ce parceque je sollicite DirectX en permanence dans mes timers :

[...]
mtTime = dmPerf.GetMusicTime()
    s = dmPerf.GetTempo(mtTime, 0)
[...]

Bon, de toutes façons, c'est pas si grave, quand j'utilise ce soft, je n'ai rien qui tourne à côté....
0
PCPT Messages postés 13272 Date d'inscription lundi 13 décembre 2004 Statut Membre Dernière intervention 3 février 2018 47
31 oct. 2006 à 11:16
directx juste pour lire un midi?
regarde dans mes sources (lire wav mp3 midi etc...)

forcément directx, çà consomme! alors avec un timer, pour peu que son intervalle soit de moins de 100...

++
<hr size="2" width="100%" />Prenez un instant pour répondre à ce sondage svp
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
gribouillex Messages postés 172 Date d'inscription lundi 10 octobre 2005 Statut Membre Dernière intervention 16 mai 2011
31 oct. 2006 à 11:37
Oui oui, c'était un programme existant que j'ai modifié et qui fonctionne très très bien (pour tout dire, je ne souhaite pas le reprendre complètement pour changer son mode de lecture, je garde le DirectX).


Cela dit ça m'éclaire sur le fait que cela consomme, car en plus de ça les intervalles sont à 1 !!!!

Je vais voir si je peux diminuer ça...

Merci pour ces infos.
0
gribouillex Messages postés 172 Date d'inscription lundi 10 octobre 2005 Statut Membre Dernière intervention 16 mai 2011
31 oct. 2006 à 11:51
J'ai diminué les intervalles, et effectivement ça change carrément le niveau d'utilisation du CPU.
Néanmoins ça change aussi la façon dont s'effectue l'affichage.

J'ai trois fenêtres liées à trois timers :     
- un pour les paroles (affichage aléatoire)
- un pour les accords (affichage à 1/4 càd un accord à tous les temps)
- un pour la batterie (affichage à 1/32 càd une note à tous les huitièmes de temps)

J'ai changé les intervalles des trois timers à 100. Pour la première et la seconde fenêtre : aucun changement. pour la troisième, l'intervalle n'est pas assez petit.

Comment régler les intervalles en fonction de mon besoin ? sachant que je peux le caler en dur sur les deux dernières fenêtres, mais pour la première qui est aléatoire, je devrai sans doute garder l'intervalle "1"....
0
PCPT Messages postés 13272 Date d'inscription lundi 13 décembre 2004 Statut Membre Dernière intervention 3 février 2018 47
31 oct. 2006 à 12:09
umm...
tu peux les régler dynamiquement, non? en sachant le nombre de temps par seconde en début de piste, tu règles l'intervalle
(le timer VB accepte ce changement en cours de fonctionnement)

ps :  intervalle min = 18ms (en dessous c'est 18 quand même)

++
<hr size="2" width="100%" />Prenez un instant pour répondre à ce sondage svp
0
gribouillex Messages postés 172 Date d'inscription lundi 10 octobre 2005 Statut Membre Dernière intervention 16 mai 2011
31 oct. 2006 à 12:16
Je viens de faire des changements à tatons en regardant le résultat.

Pour la seconde fenêtre, pas moyen d'aller en dessous de 80
Pour la première et la dernière, pas moyen d'aller en dessous de 20.

j'ai viré les requêtes DirectX de 2 timers pour utiliser uniquement celle du premier timer pour les trois.

Maintenant je suis aux alentours de 60 % d'utilisation du CPU...

C'est encore beaucoup non ? Mais je ne peux plus réduire côté intervalles...
0
PCPT Messages postés 13272 Date d'inscription lundi 13 décembre 2004 Statut Membre Dernière intervention 3 février 2018 47
31 oct. 2006 à 13:08
malheureusement il n'y a pas de secret... directx consomme!
et si tu ne veux pas y toucher, il ne reste pas beaucoup d'options....

essaye avec un nouveau projet, juste pour tester ton code directx (au cas ou d'autres éléments seraient en jeu)...
<hr size="2" width="100%" />Prenez un instant pour répondre à ce sondage svp
0
Rejoignez-nous