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

WinDev Discussion :

Optimisation d'une appli JAVA sur Raspberry


Sujet :

WinDev

  1. #1
    Nouveau Candidat au Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Octobre 2016
    Messages
    3
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 29
    Localisation : France, Savoie (Rhône Alpes)

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Industrie

    Informations forums :
    Inscription : Octobre 2016
    Messages : 3
    Points : 1
    Points
    1
    Par défaut Optimisation d'une appli JAVA sur Raspberry
    Bonjour à tous !

    J'ai besoin de votre aide cher(e)s devs pour optimiser mon application développée sur WinDev et déployée en mode "archive java" sur un Raspberry pi 3 qui pour le moment a pour OS Raspbian 2.0 (avec la nouvelle interface graphique PIXEL ).

    Cette appli a juste pour but de lire des données provenant d'une base MySQl (en général située sur un autre poste), de remplir deux combos à partir de ces données et ensuite de pouvoir valider celles-ci avec un bouton. Il y a donc difficilement plus simple

    Tout a fonctionné sur mon "appli-test": Le lancement de l'appli Java, lecture du ficier Ini, connexion à MySQL, lecture et écriture des données.
    Les problèmes sont apparus lorsque j'ai voulu créer l'appli finale:

    - D'abord, j'ai lancé la lecture du fichier INI, la connexion à la BDD et le remplissage des combos à l'initialisation de la fenêtre. Ces tâches effectuées "seules" sur l'appli-test sont quasi-instantanées, or lancement de l'appli finale met une quarantaine de secondes. Je ne vois donc pas comment améliorer cela. Peut-être trop de ressources demandées au démarrage ? Pourtant le CPU du Raspberry ne tourne qu'à 25% et la mémoire vive à 18%...

    - Le deuxième problème apparaît lorsque je clique sur une des combos pour la dérouler. Là l'appli se bloque et met encore 30 à 50 secondes avant que la combo ne soit affichée. Pendant ce temps, la CPU est encore à 25% et la RAM occupée augmente doucement jusqu'à 20%. Et rebelote lorsque je clique sur la seconde combo... ce qui n'est pas du tout présentable pour un projet industriel.

    Après ces attentes interminables, l'appli fonctionne à merveille: Ouverture, navigation et fermeture des combos très fluide, requête d'écriture instantanément successful.

    Autres infos, qui pourraient peut être aider...
    Pour chaque combo, une centaine de lignes est affichée. c'est peut-être trop ?
    La connexion à MySQL est très rapide sur l'"appli test", qu'elle soit locale ou sur le poste distant
    La version de Raspbian est belle graphiquement, mais es ce que ça ne "freinerait" pas un peu certaines applications ? Personnellement je ne pense pas.
    Pour me connecter à la base, j'utilise le code suivant:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    SQLConnecte("jdbc:mysql://" + gsAdresseServeur + "/" + gsmabase, gslogin, gsmotdepasse, "", "JDBC", "com.mysql.jdbc.Driver")
    La connexion passe donc par le JDBC (Connector-J) permettant de faire dialoguer Java avec MySQL.

    Auriez-vous des idées, suppositions pour optimiser tout ça ?
    J'espère avoir assez détaillé le problème.

    Merci mille fois d'avance !

  2. #2
    Membre expert

    Homme Profil pro
    Développeur informatique
    Inscrit en
    Juin 2004
    Messages
    2 329
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 49
    Localisation : France, Calvados (Basse Normandie)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Juin 2004
    Messages : 2 329
    Points : 3 841
    Points
    3 841
    Par défaut
    Bonjour,

    As-tu essayé de voir combien de temps prenait :
    - la connexion au serveur MySQL
    - l'exécution des différentes requêtes
    - le traitement du résultat de la requête

    Avec cela, tu devrais pouvoir pointer plus facilement d''où vient la lenteur, et donc finalement pointer plus facilement la cause.

  3. #3
    Nouveau Candidat au Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Octobre 2016
    Messages
    3
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 29
    Localisation : France, Savoie (Rhône Alpes)

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Industrie

    Informations forums :
    Inscription : Octobre 2016
    Messages : 3
    Points : 1
    Points
    1
    Par défaut
    Bonjour, et merci pour la réponse.

    J'ai trouvé une partie de la solution à mon problème: L'appli avec le style "neo-light" démarre en 30 secondes alors qu'avec le style de base cela met moins de 10 secondes. Mais cela n'a pas d'impact sur le reste du fonctionnement...

    J'ai donc explosé le code qui était automatisé au lancement de la fenêtre dans plusieurs boutons.
    Les boutons ont les fonctions suivantes:

    -Le premier lit les données du fichier INI. Cela se fait instantanément.
    -Le second se connecte à la base distante. Il y a un petit chargement d'une seconde ou moins.
    -Le troisième envoie les requêtes de lecture et remplit les combos. Cela prend environ 5 secondes par combo, soit 10 secondes au total pour moi. C'est encore acceptable.

    Mais le problème persistant, c'est l'attente de 40 secondes lors du clic sur une des combos avant que celle-ci n'affiche les données et devienne fluide. C'est étrange parce que les données sont (sauf erreur de ma part) déjà écrites dans les combo, et celles-ci ne lancent aucun code...

    Je tiens à rappeler que l'appli est destinée à tourner sur un Raspberry Pi 3. Je l'ai exécutée sur mon PC Windows, et cela fonctionne à merveille.

    Merci d'avance

  4. #4
    Nouveau Candidat au Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Octobre 2016
    Messages
    3
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 29
    Localisation : France, Savoie (Rhône Alpes)

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Industrie

    Informations forums :
    Inscription : Octobre 2016
    Messages : 3
    Points : 1
    Points
    1
    Par défaut Le problème se situe dans l'affichage des données de la combo
    Après maints essais sur mon appli, j'ai remarqué ce qui suit:

    - Si je remplis la combo avec des données similaires à celles de la BDD mais provenant d'une boucle, le problème de temps de chargement est le même.
    - Lorsque je limite le remplissage de ma combo à 50 lignes (au lieu d'une centaine) le temps d'ouverture passe à 6-7 secondes (au lieu de 40).

    Selon moi, le problème vient donc du fait que les données ne sont pas vraiment "affichées" dans la combo tant qu'on ne clique pas dessus pour la dérouler. Et ce quelle que soit la source des données.

    La question devient par conséquent: Comment initialiser complètement les données des champs combo, afin qu'ils soient immédiatement disponibles au clic ?

    Du coup je me demande si je crée une nouvelle discussion pour repartir sur cette question plus précise ?

Discussions similaires

  1. Réponses: 3
    Dernier message: 23/09/2013, 18h30
  2. Déployer une appli java sur un serveur
    Par julienAnderson dans le forum Langage
    Réponses: 0
    Dernier message: 27/03/2012, 21h39
  3. Sujet de mémoire sur une appli Java
    Par Hanoni dans le forum Sujets
    Réponses: 1
    Dernier message: 13/04/2011, 15h51
  4. Réponses: 5
    Dernier message: 21/11/2007, 11h06

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