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 :

Optimiser un programme java


Sujet :

Java

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé
    Inscrit en
    Juin 2006
    Messages
    80
    Détails du profil
    Informations forums :
    Inscription : Juin 2006
    Messages : 80
    Par défaut Optimiser un programme java
    Bonjour,

    Pour mon travail je dois réaliser un outil de simulation multi-agent, en physique.
    Imaginez un grand nombre de particules dans un espace en 2D. Chaque particule à ses coordonnés (x,y) et se déplace au hasard sur le plan.
    Chaque fois qu'une particule se rapproche d'une autre elle est repoussé suivant une fonction mathematique assez lourde (avec des exponentielles).

    Comment j'ai procédé :
    En gros j'ai un Thread principal qui contient une boucle. Cette boucle calcul la prochaine position de chaque particule en fonction de toute les autre (il faut les comparer une à une). Lorsque toutes les particules sont mise à jour, j'incremente le temps de simulation et je recommence.

    Apres quelques semaines de boulot mon programme JAVA est pret. Mais malheurs, dès que le nombre de particule dépasse une soixantaine, le programme rame comme pas possible (avec ou sans affichage graphique). L'utilisation normal c'est au moins avec 500 voir 1000 agents en meme temps.
    Je peux pas rendre ce prog, il faut que je l'optimise un peu, mais je ne sais pas du tout comment faire. Est ce que vous pourriez me donner quelques conseils ?
    Quel genre d'operations est le plus lourd ?
    y a t il des 'trucs' pour aller plus vite?
    Est ce que j'ai bien fait de choisir Java?
    Est ce que c'est plutot lié au pc moyennement performant ou au programme mal codé ?
    Existe t il des outils qui permette d'optimiser automatiquemnt un code?
    Existe t il des outils qui permette de mesurer la "lourdeur du code" ?

    MErci pour votre aide.
    a+

  2. #2
    Membre chevronné
    Profil pro
    Inscrit en
    Mars 2005
    Messages
    429
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2005
    Messages : 429
    Par défaut
    Bonjour,

    Cette boucle calcul la prochaine position de chaque particule en fonction de toute les autre (il faut les comparer une à une).
    Peux-tu nous donner plus d'informations sur la façon dont tu fais cela ? Tu compares vraiment toutes les particules avec toutes les autres, soit n² opérations ?

    N'est-il pas possible de "négliger" l'influence des particules loin de celle qu'on étudie ?

    Nicolas

    PS - voir aussi le forum algorithmique de ce site.

  3. #3
    Expert confirmé
    Avatar de sinok
    Profil pro
    Inscrit en
    Août 2004
    Messages
    8 765
    Détails du profil
    Informations personnelles :
    Âge : 45
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Août 2004
    Messages : 8 765
    Par défaut
    Tu pourrais également passer ton programme dans un Profiler afin de voir quelles sont les parties de ton code qui font office de golet d'étranglement, et pouvoir réagir en conséquence...


    Tu as par exemple le profiler de netbeans qui est parfait pour ce genre d'opérations:

    http://profiler.netbeans.org/

  4. #4
    Membre confirmé
    Inscrit en
    Juin 2006
    Messages
    80
    Détails du profil
    Informations forums :
    Inscription : Juin 2006
    Messages : 80
    Par défaut
    Merci pour vos réponses, peux tu m'en dire plus sur les Profilers? c'est un soft? ça se telecharge ?

  5. #5
    Membre chevronné
    Profil pro
    Inscrit en
    Mars 2005
    Messages
    429
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2005
    Messages : 429
    Par défaut
    C'est un module de l'environnement de programmation (IDE) Netbeans. Dans quoi codes-tu ?

  6. #6
    Membre Expert
    Avatar de ®om
    Profil pro
    Inscrit en
    Janvier 2005
    Messages
    2 815
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2005
    Messages : 2 815
    Par défaut
    Si tu pouvais nous montrer quelques bouts de codes susceptibles d'être longs (le calcul en lui-même, et la méthode paintComponent(Graphics) de ton composant d'affichage des particules).

Discussions similaires

  1. [Avis] Les meilleurs programmes Java ?
    Par christopheJ dans le forum ImageJ
    Réponses: 69
    Dernier message: 07/10/2008, 01h12
  2. [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
  3. [votre avis m'interesse] Interface avec un programme Java
    Par LineLe dans le forum Interfaces Graphiques en Java
    Réponses: 29
    Dernier message: 11/12/2004, 11h39
  4. Lancement d'un programme java depuis un script php
    Par gexti dans le forum Développement Web en Java
    Réponses: 8
    Dernier message: 07/05/2004, 17h40
  5. [JVM][OPTIONS][OPTIMISATION]pc dédié à Java
    Par narmataru dans le forum Général Java
    Réponses: 7
    Dernier message: 16/04/2003, 17h12

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