Calcul simultanné de moyennes en temps réel. [Résolu]

cs_zinZ 21 Messages postés vendredi 15 juin 2007Date d'inscription 14 septembre 2007 Dernière intervention - 6 août 2007 à 11:38 - Dernière réponse : cs_jojolemariole 519 Messages postés mercredi 21 mars 2007Date d'inscription 19 décembre 2016 Dernière intervention
- 22 avril 2008 à 11:05
Bonjour,
Je travail sur une application graphique qui affiche 6 courbes super posées. Deux curseurs peuvent être déplacé par l'utilisateur sur l'axe des abscisses.

Mon probleme :
Je voudrais calculer et afficher, en temps réel, la moyenne entre les deux curseurs pour chacune des courbes, à mesure que les curseurs sont déplacés.

Je commence me débrouiller en interface graphique (enfin je crois), mais je suis totalement débutant pour ce qui est du calcul en Java, ainsi que tout ce qui est thread.

Comme j'ai 6 courbes et donc 6 moyenne a calculer est ce que je dois utiliser les threads. Quel est leur avantage? Comment ca marche en gros ?

Merci à vous, J'aurais peut être d'autre question mais pour l'instant c'est tout ce qui me vient.
Afficher la suite 

Votre réponse

6 réponses

Meilleure réponse
cs_GodConan 2116 Messages postés samedi 8 novembre 2003Date d'inscriptionContributeurStatut 6 octobre 2012 Dernière intervention - 6 août 2007 à 16:21
3
Merci
Perso je ne suis meme pas sur que l utilisation de thread soit necessaire!!!!
En fait tout dépend du taux de rafraichissement de tes courbes...

Sinon 1 seul thread pour tout tes calcule me parait une meilleur solution ;o) par experience, la multiplication des threads ralenti pas mal les traitements ...

GodConan ;o)

Merci cs_GodConan 3

Avec quelques mots c'est encore mieux Ajouter un commentaire

Codes Sources a aidé 85 internautes ce mois-ci

Commenter la réponse de cs_GodConan
the_wwt 177 Messages postés jeudi 5 octobre 2006Date d'inscription 16 janvier 2009 Dernière intervention - 6 août 2007 à 14:44
0
Merci
Bonjour,
Tu peux tout a fait calculer ces moyennes dans un thread... C'est une bonne solution car sinon pendant le calcul ton ihm sera bloquée. Une fois le calcul terminé tu met a jours le champs graphique mais pas depuis le thread sinon tu vas te prendre une exception du genre illégal access exception.
Avec la SWT il existe une méthode qui permet de faire ça depuis un autre thread Display#asyncExec(Runnable r) mais avec la swing je ne sais pas.
Bon courage, en tout cas avec les threads il faut se méfier de l'interblocage.
Cordialement,
Pierrick HYMBERT
Commenter la réponse de the_wwt
cs_zinZ 21 Messages postés vendredi 15 juin 2007Date d'inscription 14 septembre 2007 Dernière intervention - 6 août 2007 à 15:17
0
Merci
Ok merci, ca me donne une première idées.

Tu dis " Tu peux tout a fait calculer ces moyennes dans un thread..."

Je pensais plutôt calculer chaque moyenne dans un thread séparé. En fait j'ai d'autre valeurs statistiques à calculer de la même manière que la moyenne. Genre la regression linéaire et d'autre trucs plus compliqués, en tout 5 ou 6 calculs différents qui doivent être effectués pour chacune des 6 courbes.

Je pensais faire ca comme ca : un thread de calcul par courbe et chaque thread calcule toute les valeurs statistique pour la courbe qui le concerne.
Ou est ce qu'il vaut mieux faire un thread par type de valeur, et chaque thread calcule pour toute les coubes ?

J'ai l'impression que je m'attaque a un problème plutôt coriace sachant qu'il faut que j'obtienne les meilleur temps de réponse possible.

Qu'est ce que vous en penser.
Commenter la réponse de cs_zinZ
cs_zinZ 21 Messages postés vendredi 15 juin 2007Date d'inscription 14 septembre 2007 Dernière intervention - 10 août 2007 à 09:52
0
Merci
C'est bon mon problème est résolu.

J'ai utilisé un adapter pour chaque courbe. Cette adapter écoute les deux curseur.
Dès qu'il y a du mouvement il demande au modele (contenant les données de la courbe) de calculer les statistiques sélectionnées, puius il les envoie à la vue qui affiche affiche la courbe avec les statistiques calculées.

Ca marche bien, et ce n'est pas trop trop lent, mais je n'ai pas encore éssayé avec toutes les statistiques. Si vous voyez une autre méthode je suis toujours preneur.

J'ai aussi une question, je ne sais pas trop comment fonctionnent les listener.
Dans mon cas, un listener par courbe, est-ce qu'il y'a plusieurs threads de créés, un par listener, ou non ?
Commenter la réponse de cs_zinZ
cs_GodConan 2116 Messages postés samedi 8 novembre 2003Date d'inscriptionContributeurStatut 6 octobre 2012 Dernière intervention - 11 août 2007 à 09:41
0
Merci
non un listener ne creer pas de thread

un listener est un 'ecouteur' que tu abonne a une source, c est la source qui va scanner tout les listener qui se sont abonné et leur donne la main en fournissant l evenement en cour... ;o) donc le temps d execution et pris sur le fonctionnement de la source (le thread)...

j espere avoir etait clair ;o) ?!! c est un mécanisme asser simple mais tres éfficasse ;o) et cela permet bcp de liberté qd à la gestion des ecouteur ;o) tu peux facilement choisir un ecouteur pour toute tes sources ou un ecouteur par sources ;o) ....

GL ++

GodConan ;o)
Commenter la réponse de cs_GodConan
cs_jojolemariole 519 Messages postés mercredi 21 mars 2007Date d'inscription 19 décembre 2016 Dernière intervention - 22 avril 2008 à 11:05
0
Merci
Pour ce qui est du ralentissement dû à l'utilisation de plusieurs threads, je ne suis pas convaincu. De plus en plus de processeurs sont multi-coeurs et donc font tourner plus vite les application multi-threadées. J'ai développé un petit benchmark qui réalise un calcul lourd divisé en petites tâches. On peut choisir le nombre de threads utilisés pour le calcul ainsi que les contraintes de synchronisation. Le résultat à partir de Java 1.5 m'a agréablement surpris : jusqu'à 32 threads les résultats vont en s'améliorant à partir du moment où les synchronisations ne sont pas trop nombreuses (et ce, même sur un simple coeur!). Voilà pourquoi j'encouragerai fortement les programmeurs à utiliser le multi-threading (le pattern Active Object permet une implémentation propre).
Commenter la réponse de cs_jojolemariole

Vous n'êtes pas encore membre ?

inscrivez-vous, c'est gratuit et ça prend moins d'une minute !

Les membres obtiennent plus de réponses que les utilisateurs anonymes.

Le fait d'être membre vous permet d'avoir un suivi détaillé de vos demandes et codes sources.

Le fait d'être membre vous permet d'avoir des options supplémentaires.