Partage
  • Partager sur Facebook
  • Partager sur Twitter

Gestion du processeur

reduire l'utilisation du processeur

Sujet résolu
    9 août 2008 à 14:49:44

    Bonjour,

    Je viens de finir de développer un programme qui détermine la meilleur stratégie d'un jeu suivant la taille d'un échiquier.
    Le problème c'est quand l'échiquier est grand le programme utilise 100 % du processeur et met un certain temps à s'exécuter ce qui fait que mon processeur chauffe beaucoup.

    J'aimerais savoir comment réduire l'utilisation du processeur par mon programme.

    Merci d'avance.
    • Partager sur Facebook
    • Partager sur Twitter
    Anonyme
      9 août 2008 à 15:00:40

      Utilise un thread ?
      • Partager sur Facebook
      • Partager sur Twitter
        9 août 2008 à 15:19:21

        Ne peut-on pas configurer ça à partir de la JVM ?
        • Partager sur Facebook
        • Partager sur Twitter
          9 août 2008 à 16:18:50

          [troll]
          bien coder
          [/troll]

          plus serieusement montre nous les parties critique ?
          a tu profile ton code (JProfiler par exemple)

          et non les Thread c'est toi qui le decide
          la VM ne peux pas tout corriger non plus ...
          • Partager sur Facebook
          • Partager sur Twitter
            9 août 2008 à 16:39:56

            Si tu bouffes 100% de ton processeur, c'est que tu ne codes pas comme il faut.

            Je pense à, par exemple, un thread sauvage mais je doute que tu ais mis de multiples threads dans ton programme.
            • Partager sur Facebook
            • Partager sur Twitter
              9 août 2008 à 17:02:16

              En fait mon programme n'utilise pas 100 % du processeur mais l'ensenble des programme utilise 100 % du processeur (le mien n'en utilise que 80 % environ)

              Je pense que c'est bien coder mais je voudrais en faite le faire tourner au ralentit.

              Pour info je n'utilise pas de thread.
              • Partager sur Facebook
              • Partager sur Twitter
                9 août 2008 à 18:08:25

                Un moyen simple qui vaut ce qu'il faut : Thread.currentThread().sleep(n) où tu choisiras un n petit, idéalement entre 1 et 10, à faire par exemple tous les 1000, 10000, 100000 tours de boucle.

                C'est pas très optimisé ni très propre, mais ça marche.

                D'ailleurs si quelqu'un connaît une façon de savoir combien de % du CPU est utilisé par un programme en faisant appel à une méthode, même native *, je suis preneur.

                * sous windows dans ce cas.
                • Partager sur Facebook
                • Partager sur Twitter
                  9 août 2008 à 18:41:59

                  OK merci beaucoup c'est ce que je voulais.
                  • Partager sur Facebook
                  • Partager sur Twitter
                    10 août 2008 à 20:51:30

                    Citation : QuentinC 2


                    D'ailleurs si quelqu'un connaît une façon de savoir combien de % du CPU est utilisé par un programme en faisant appel à une méthode, même native *, je suis preneur.



                    Ce n'est pas tout à fait ce que tu demandes (et peut être que tu connais). Mais jconsole (qui est dans le jdk) permet de voir ça.
                    • Partager sur Facebook
                    • Partager sur Twitter
                      10 août 2008 à 22:37:18

                      Non je ne connais pas, tu as un lien ?

                      Sinon non, ce n'est pas exactement ce que je demande. Ce à quoi je pensais, dans l'idéal, c'est une méthode genre getCPUUsage que je peux appeler dans mon programme pour savoir si je bouffe trop de CPU en faisant une tâche précise, typiquement, dans une boucle faisant des calculs complexes et/ou du traitement/analyse de données.
                      • Partager sur Facebook
                      • Partager sur Twitter
                        13 août 2008 à 23:46:29

                        Je n'ai pas de lien particulier. (peut être : http://java.sun.com/developer/technica [...] jconsole.html )

                        Si tu as une application qui dure (genre swing, appli web), tu peux essayer en lancant juste la commande "jconsole" qui est dans le JDK/bin/jconsole et tu peux peut voir les stats directement sur ton application (sinon voir le tuto de sun).


                        Il y a un onglet Threads pour voir le nombre de thread utilisés, une partie overview pour voir l'état général d'utilisation de la mémoire, du processeur, le nombre de classe instanciée.
                        Le tuto suivant : http://java.sun.com/developer/technica [...] E/monitoring/ montre comment détecter les fuites mémoires en faisant une image du tas à un moment donné (ça permet de voir l'ensemble des objets instancié par taille et de réparer rapidement les trucs suspects). (même s'il y a souvent des outils plus simple intégré dans certains EDI).

                        Il est également possible (très certainement même) qu'il y a des fonctionnalités de profiling avancé. Mais je n'avais utilisé jconsole que pour détecter une fuite mémoire possible (qui en fait n'en était pas une mais les objets étaient très gros et je n'avais pas pris le temps de calculer leur taille réel à la main).

                        • Partager sur Facebook
                        • Partager sur Twitter
                          14 août 2008 à 2:04:14

                          Petite note: un thread qui ne dort jamais consomme environ 100% du processer, alors qu'un thread qui dort une milliseconde par itération consomme presque 0%.

                          On peut parfois faire dormir un thread plus longtemps. Ainsi, un thread qui se charge de rafraîchir l'affichage d'un écran n'a pas à le faire plus de 40 fois par seconde, étant donné que l'oeil humain ne pourra percevoir la différence de toute façon.
                          • Partager sur Facebook
                          • Partager sur Twitter

                          Gestion du processeur

                          × Après avoir cliqué sur "Répondre" vous serez invité à vous connecter pour que votre message soit publié.
                          × Attention, ce sujet est très ancien. Le déterrer n'est pas forcément approprié. Nous te conseillons de créer un nouveau sujet pour poser ta question.
                          • Editeur
                          • Markdown