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

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Inscrit en
    Septembre 2005
    Messages
    30
    Détails du profil
    Informations forums :
    Inscription : Septembre 2005
    Messages : 30
    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 confirmé
    Avatar de Baptiste Wicht
    Homme Profil pro
    Étudiant
    Inscrit en
    Octobre 2005
    Messages
    7 431
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 37
    Localisation : Suisse

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

    Informations forums :
    Inscription : Octobre 2005
    Messages : 7 431
    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 averti
    Inscrit en
    Septembre 2005
    Messages
    30
    Détails du profil
    Informations forums :
    Inscription : Septembre 2005
    Messages : 30
    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 confirmé
    Avatar de Baptiste Wicht
    Homme Profil pro
    Étudiant
    Inscrit en
    Octobre 2005
    Messages
    7 431
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 37
    Localisation : Suisse

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

    Informations forums :
    Inscription : Octobre 2005
    Messages : 7 431
    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 averti
    Inscrit en
    Septembre 2005
    Messages
    30
    Détails du profil
    Informations forums :
    Inscription : Septembre 2005
    Messages : 30
    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