IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

API standards et tierces Java Discussion :

[ThreadMXBean]problème de la méthode getThreadCpuTime


Sujet :

API standards et tierces Java

  1. #1
    Membre à l'essai
    Inscrit en
    Septembre 2005
    Messages
    30
    Détails du profil
    Informations forums :
    Inscription : Septembre 2005
    Messages : 30
    Points : 13
    Points
    13
    Par défaut [ThreadMXBean]problème de la méthode getThreadCpuTime
    Salut,
    J'ai toujours des problèmes avec le timer .
    mon probleme cette fois concerne la méthode:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    getThreadCpuTime(Thread.currentThread().getId());
    qui me donne à chaque exécution une valeure différente de l'autre
    quelq'un m'explique pourquoi.

    Voici mon code :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    import java.lang.management.ManagementFactory;
    import java.lang.management.ThreadMXBean;
    public class perfor {
        public static void main(String[] args)throws Exception
        {
     
    long     start=System.nanoTime();
          System.out.println("start :"+start);
         int pr=0;
    int     l=300;
    int tab1[][];
    int tab2[][];
    int tab3[][];
     
    tab1=new int[l][l];
    tab2=new int[l][l];
    tab3=new int[l][l];
    for ( int i=0 ; i<l; i++){
     
    for ( int j=0 ; j<l; j++){
    	tab1[i][j]=25 ;
    	tab2[i][j]=10 ;
    }}
    for ( int j=0 ; j<l; j++){
    	for ( int k=0 ; k<l; k++){pr=0;
    		for (int i=0;i<l;i++){
    			pr=pr+tab1[k][i]*tab2[i][j];
    			tab3[k][j]=pr;
     
     
    		}}}
     
            //stop = objPerf.highResCounter() * 1000 / frequency;
     
            long stop=System.nanoTime();
                  System.out.println("stop :"+stop);
             System.out.println((stop-start)/1000000);
             ThreadMXBean threads = ManagementFactory.getThreadMXBean();
      long star = threads.getThreadCpuTime(Thread.currentThread().getId());
      System.out.println("star"+star/1000000);
     
        }  
    }
    Je vous attends

  2. #2
    Expert éminent sénior
    Avatar de Baptiste Wicht
    Homme Profil pro
    Étudiant
    Inscrit en
    Octobre 2005
    Messages
    7 431
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 36
    Localisation : Suisse

    Informations professionnelles :
    Activité : Étudiant
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Octobre 2005
    Messages : 7 431
    Points : 21 324
    Points
    21 324
    Par défaut
    Elle retourne quoi cette méthode ? Le temps que le thread a employé le Cpu, c'est bien ça ?

    Si c'est le cas, c'est normal que tu aie des nombres différents, puisque d'une éxécution à l'autre beaucoup de choses peuvent changer. Surtout que c'est des nanosecondes, donc une toute petite variation suffit à faire bien varier le nombre.

  3. #3
    Membre à l'essai
    Inscrit en
    Septembre 2005
    Messages
    30
    Détails du profil
    Informations forums :
    Inscription : Septembre 2005
    Messages : 30
    Points : 13
    Points
    13
    Par défaut
    merci de votre réponse mais l'ecart entre deux éxécution n'est pas de l'ordre de quelque nanoseconde mais des fois de 30--40 miliseconde , et moi je veux utiliser cet algorithme pour comparer les puissances des machines , alors avec ses résultats je ne peux pas commparer .

  4. #4
    Expert éminent sénior
    Avatar de Baptiste Wicht
    Homme Profil pro
    Étudiant
    Inscrit en
    Octobre 2005
    Messages
    7 431
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 36
    Localisation : Suisse

    Informations professionnelles :
    Activité : Étudiant
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Octobre 2005
    Messages : 7 431
    Points : 21 324
    Points
    21 324
    Par défaut
    Citation Envoyé par elalia
    merci de votre réponse mais l'ecart entre deux éxécution n'est pas de l'ordre de quelque nanoseconde mais des fois de 30--40 miliseconde , et moi je veux utiliser cet algorithme pour comparer les puissances des machines , alors avec ses résultats je ne peux pas commparer .
    Je pense que même 30-40 millisecondes, c'est possible, mais c'est peut-être cette classe qui n'est pas tout à fait au point...

    Essaie en calculant toi-même le temps de l'éxécution, voir ce que ca donnne. Tu prends le temps au départ et le temps à la fin et tu fais une soustraction.

  5. #5
    Membre à l'essai
    Inscrit en
    Septembre 2005
    Messages
    30
    Détails du profil
    Informations forums :
    Inscription : Septembre 2005
    Messages : 30
    Points : 13
    Points
    13
    Par défaut
    oui j'ai fais ça et j'ai le meme probleme de précision .le temps varie d'une exécution à une autre

Discussions similaires

  1. Proble avec un vhosts sous Apache (Mandrake 10.1)
    Par __fabrice dans le forum Apache
    Réponses: 2
    Dernier message: 27/05/2005, 13h11
  2. Aide sur la RS 232
    Par Andr0 dans le forum C
    Réponses: 5
    Dernier message: 12/04/2005, 13h58
  3. Proble capture direct Show
    Par liliemumue dans le forum DirectX
    Réponses: 3
    Dernier message: 13/12/2004, 21h04
  4. Réponses: 2
    Dernier message: 05/10/2004, 22h43
  5. ListView->Items->Clear() !!! Qques probl de perf
    Par Nicolas_a69 dans le forum C++Builder
    Réponses: 3
    Dernier message: 30/08/2002, 11h49

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo