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

Java Discussion :

Tester les performances d'un programme Java


Sujet :

Java

  1. #1
    Membre à l'essai
    Homme Profil pro
    Étudiant
    Inscrit en
    Mai 2011
    Messages
    19
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Meurthe et Moselle (Lorraine)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Mai 2011
    Messages : 19
    Points : 11
    Points
    11
    Par défaut Tester les performances d'un programme Java
    Salut tout le monde,

    Je fais souvent des tests de performances de mes applications sous java et ce que je fais d'habitude est basé sur l'utilisation de System.currentTimeMillis(). Un peu comme ci-dessous:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    long start, end;
     
    start = System.currentTimeMillis();
    myProgram();
    end = System.currentTimeMillis() - start;
    Voilà, par contre, d'une expérimentation à une autre les résultats changent, et donc ils ne sont pas stable. En plus, si je lance une page web pendant que l'expérimentation tourne, j'ai l'impression que ceci dégrade les performances (genre un peu de temps en plus dans mes résultats finaux je ne sais pas si cela est vrai).

    Donc, je voudrais savoir s'il y a un outil pour mesurer les performances d'un programme ou d'une application donnée écrite en java. Ou s'il y a autre façon plus au moins exacte pour faire les tests de performances.

    Merci d'avance.

  2. #2
    Modérateur
    Avatar de dinobogan
    Homme Profil pro
    ingénieur
    Inscrit en
    Juin 2007
    Messages
    4 073
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    Localisation : France

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

    Informations forums :
    Inscription : Juin 2007
    Messages : 4 073
    Points : 7 163
    Points
    7 163
    Par défaut
    L'outil absolu n'existe pas.
    Tu sembles associer performances et temps d'exécution. Pour calculer un temps d'exécution, ta méthode reste efficace.
    Quel est l'ordre de grandeur du temps d'exécution que tu cherches à calculer ?
    Idéalement, il faudrait faire une mesure non-intrusive : compteur externe à l'application. Mais selon le contexte, c'est plus ou moins difficile à effectuer.
    N'oubliez pas de consulter les FAQ Java et les cours et tutoriels Java
    Que la force de la puissance soit avec le courage de ta sagesse.

  3. #3
    Membre confirmé

    Homme Profil pro
    Étudiant
    Inscrit en
    Août 2011
    Messages
    181
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Algérie

    Informations professionnelles :
    Activité : Étudiant
    Secteur : High Tech - Électronique et micro-électronique

    Informations forums :
    Inscription : Août 2011
    Messages : 181
    Points : 519
    Points
    519
    Billets dans le blog
    1
    Par défaut
    Pour le calcule du temps d’exécution, c'est la méthode, le résultat que tu vas obtenir sera en millisecondes, il va falloir que tu face les conversions qui s’impose manuellement.
    Mais fait gaffe en cas de l'utilisation d'une application multi-thread
    Amicalement

  4. #4
    Modérateur
    Avatar de kolodz
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Avril 2008
    Messages
    2 211
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 36
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : High Tech - Produits et services télécom et Internet

    Informations forums :
    Inscription : Avril 2008
    Messages : 2 211
    Points : 8 316
    Points
    8 316
    Billets dans le blog
    52
    Par défaut
    Si tu n'as pas une machine dédié spécifiquement à tes benchmarks tu aura toujours des résultats relativement variable.
    Je sais qu'il est de bon goût d'avoir une moyen de temps sur un grand nombre d’exécution.
    Si une réponse vous a été utile pensez à
    Si vous avez eu la réponse à votre question, marquez votre discussion
    Pensez aux FAQs et aux tutoriels et cours.

  5. #5
    Expert éminent sénior
    Avatar de tchize_
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Avril 2007
    Messages
    25 481
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 44
    Localisation : Belgique

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Avril 2007
    Messages : 25 481
    Points : 48 806
    Points
    48 806
    Par défaut
    ca dépend de ce que tu veux tester. Si ce sont des exécution "one shot" (exemple, tu va lancer ton programme toutes les heures et tu veux savoir en combien de temps il traite les données), alors il faut mesurer à l'extérieur (par exemple avec time sous linux) afin de tenir compte du temps d'exécution de la jvm.

    Si ce sont des mesures sur une méthode appelée souvent dans ton programme, il faut l'exécuter une certain nombre de fois afin de laisser le temps à la jvm de faire les optimisations de points chaud. (on peux voir des méthodes, par exemple, mettre 500ms les 500 premières exécution puis tomber à 50ms)

    Donc faut un temps de mesure raisonnable. Ensuite il fafut multiplier les mesures en arrêtant et redémarrant la jvm. Et tu dois ensuite faire une analyse statistique de tes perfs. Genre par exemple 100 ou 200 mesures, chacune sur 1 minute +-

    Même avec une machine dédiée, tes benchmarks ne seront stable que dans la moyenne. Il y a des fluctuation et c'est normal.

Discussions similaires

  1. Réponses: 8
    Dernier message: 21/09/2007, 14h51
  2. Limiter les acces d'un programme Java
    Par Darkdaemons dans le forum Sécurité
    Réponses: 2
    Dernier message: 23/04/2007, 16h48
  3. [Info]Les droits relatifs à la programmation Java
    Par athelinos dans le forum Langage
    Réponses: 8
    Dernier message: 10/02/2006, 11h32
  4. Réponses: 3
    Dernier message: 30/01/2006, 10h52
  5. [Apis]parser les arguments d'un programme Java
    Par sacofan dans le forum API standards et tierces
    Réponses: 4
    Dernier message: 06/08/2005, 14h32

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