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

Langage Java Discussion :

Conseil pour optimisation


Sujet :

Langage Java

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre habitué
    Profil pro
    Inscrit en
    Novembre 2006
    Messages
    11
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2006
    Messages : 11
    Par défaut Conseil pour optimisation
    Bonjour,

    Je travail actuellement sur un programme Java permettant de créer des pavages de Penrose (c'est juste un ensemble de losanges assemblés selon certains critères).

    Mon programme fonctionne bien, seulement maintenant je cherche un moyen pour le faire tourner plus vite. Deux solutions me viennent à l'esprit : tenté de paralléliser mon programme à l'aide des threads Java (avec toutes les difficultés que cela implique...) ou traduire les zones critiques de mon code source en C et y faire appel avec JNI/JNA.

    Qu'en pensez-vous ? Laquelle pourrait être la plus efficace ? Le C est-il toujours beaucoup plus rapide que le Java ? ...

    Toute autre idée est également la bienvenue (même les mauvaises c'est pas grave ^^).

    Merci d'avance !

  2. #2
    Expert éminent
    Avatar de adiGuba
    Homme Profil pro
    Développeur Java/Web
    Inscrit en
    Avril 2002
    Messages
    13 938
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Développeur Java/Web
    Secteur : Transports

    Informations forums :
    Inscription : Avril 2002
    Messages : 13 938
    Billets dans le blog
    1
    Par défaut
    Salut,


    La première solution consisterait plutôt à analyser l’algorithme et l'exécution du programme pour en déterminer les points faibles et les zones critiques.


    L'utilisation du multi-threading permettra d'améliorer cela sur des machines multi-processeurs (ou multi-cores), mais pas sur du mono-process.


    Quand à l'utilisation de code natif, je doute qu'il apporte grand chose (à moins que le code ne soit mieux pensé pour le langage utilisé)


    a++

  3. #3
    Membre émérite

    Homme Profil pro
    Architecte technique
    Inscrit en
    Juin 2005
    Messages
    588
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Essonne (Île de France)

    Informations professionnelles :
    Activité : Architecte technique
    Secteur : High Tech - Opérateur de télécommunications

    Informations forums :
    Inscription : Juin 2005
    Messages : 588
    Par défaut
    Avant tout, tu pourrais passer ton soft dans un outil de profiling... pour déterminer les sections critiques !

    Ensuite, saches que le multi-thread n'apporte pas nécessairement une amélioration des performances... mieux vaut repenser son algo dans bien des cas !

  4. #4
    Membre habitué
    Profil pro
    Inscrit en
    Novembre 2006
    Messages
    11
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2006
    Messages : 11
    Par défaut
    Premièrement, dsl pour le temps de réponse... Ensuite merci a vous.

    Pour ce qui est de l'algorithme, je le pense fiable et relativement rapide dans son principe (j'ai eu pas mal le temps d'y penser ^^).

    Apparemment les deux solutions que j'envisageais ne sont pas miraculeuse. D'où les questions suivantes :
    - le code natif n'est il pas, bien plus rapide que du code Java exécuté sur la JVM ?
    - dans quelles conditions le multi-threading est intéressant (ou inversement) ?

    Merci à vous !

  5. #5
    Membre très actif
    Profil pro
    Inscrit en
    Février 2010
    Messages
    768
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2010
    Messages : 768
    Par défaut
    - le code natif n'est il pas, bien plus rapide que du code Java exécuté sur la JVM ?
    Non maintenant les jvm optimisés pour une machine précise sont plus rapide que le code compilé pour toute une famille de processeur.


    multi-threading est intéressant
    Déjà dit, si ton architecture physique est multi-core oui, sinon le multi-threading n'apporte rien.


    Après en java il y a des bests practices et des astuces pour aller plus vite.

  6. #6
    Membre Expert
    Homme Profil pro
    Inscrit en
    Décembre 2010
    Messages
    734
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Décembre 2010
    Messages : 734
    Par défaut
    Citation Envoyé par Jimmy_ Voir le message
    Déjà dit, si ton architecture physique est multi-core oui, sinon le multi-threading n'apporte rien.
    Pas toujours vrai, ça. Ca vaut le coup d'analyser ce qui limite la vitesse d'exécution, parce que meme si on n'a qu'un seul proc il existe des cas ou on peut gagner du temps en spécialisant des threads. Par exemple, si tu as des moments où le proc se tourne les pouces pendant une I/O, tu peux parfois paralléliser les opérations d'I/O avec les calculs sur certaines parties des données et gagner du temps.

Discussions similaires

  1. PreparedStatment : conseils pour optimiser mon code
    Par Monkey_D.Luffy dans le forum JDBC
    Réponses: 8
    Dernier message: 30/05/2008, 13h49
  2. Quelques conseils pour optimiser ma base
    Par Kaimite dans le forum Débuter
    Réponses: 0
    Dernier message: 11/05/2008, 10h14
  3. Conseils pour optimiser une PS
    Par PickEpique dans le forum MS SQL Server
    Réponses: 4
    Dernier message: 10/08/2007, 11h49
  4. Réponses: 2
    Dernier message: 17/08/2006, 11h49
  5. Réponses: 4
    Dernier message: 26/01/2006, 10h35

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