|
Trouver une ressource
Vous ne trouvez pas de réponse à votre problème ? Alors posez la question dans le forum. Souvenez-vous qu'il n'y a jamais de question bête, mais rester dans l'ignorance parce que l'on n'ose pas poser une question, ça c'est une erreur !
MANDELBROT MULTI-PROCESSUS
Information sur la source
Description
J'espère que l'idée vous plaira, il s'agit de la fractale de Mandelbrot. Un grand nombre d'applets la dessinent mais l'originalité repose ici sur la gestion de plusieurs threads.
Au lieu d'utiliser un pool de threads j'ai préféré créer un objet FractalPainter implémenté par :
- les ChiefFractalPainter qui ne dessinent rien du tout mais délèguent à deux autres FractalWorker
- les WorkerFractalPainter qui dessinent une partie de la fractale
Lorsque l'on demande à un ChiefFractalPainter de dessiner une partie de fractale, il coupe cette partie en 2 et la donne chacune des parties à ses 2 workers attitrés, en fin de compte, il ne fait pas grand chose. (Je me suis inspiré de la hiérarchie habituelle dans un bureau, lol ;)
Si on choisit de dessiner en //, chaque WorkerFractalPainter se créera un petit thread à lui pour faire le boulot.
Source
Conclusion
Je n'ai pas vraiment pu tester le gain de performance, car chez moi je n'ai qu'un seul coeur sans hyper threading. (A64 3200+)
Mais j'attends vos remarques à ce sujet.
29/05/08 : tests relativement concluants sur un pentium dual core e4600, parfois peu de gain si la complexité de la fractale est mal répartie
Je vais sans doute améliorer un peu la conception de l'IHM qui est un peu rafistolée de ci de là, en revanche je pense que les FractalPainter sont bien foutus.
Animations rajoutées.
Reste à multithreader le rendu.
Historique
- 29 mai 2008 02:00:28 :
- J'ai pas mal modifié le code en séparant le calcul des fractales du rendu des fractales. Pour une question de temps, seul le calcul de la fractale est multithreadé mais sur le même principe, je vais multithreader le rendu.
Grâce à cette amélioration de la structure de l'application, j'ai pu facilement rajouter des animations, il n'y en a que deux pour le moment, mais tout reste possible.
Il reste pas mal de choses à faire :
- améliorer la qualité du code -> au niveau de l'interface, c'est un gros bordel à force de rajouter des composants un peu partout
- documenter le code, pour l'instant les commentaires sont minimaux, et il n'y a pas de javadoc ni d'uml ni rien de tout ça.
- ajouter le multithreading pour le rendu des fractales
- ajouter le dessin de l'évolution d'un point (très joli)
- ajouter quelques animations
- ajouter une applet
- intégrer java webstart
- et pourquoi pas, voir si on ne peut pas utiliser la puissance colossale du GPU pour ce genre de calculs répétitifs
- 29 mai 2008 02:02:58 :
- J'ai pas mal modifié le code en séparant le calcul des fractales du rendu des fractales. Pour une question de temps, seul le calcul de la fractale est multithreadé mais sur le même principe, je vais multithreader le rendu. Grâce à cette amélioration de la structure de l'application, j'ai pu facilement rajouter des animations, il n'y en a que deux pour le moment, mais tout reste possible. Il reste pas mal de choses à faire :
- améliorer la qualité du code -> au niveau de l'interface, c'est un gros bordel à force de rajouter des composants un peu partout
- documenter le code, pour l'instant les commentaires sont minimaux, et il n'y a pas de javadoc ni d'uml ni rien de tout ça.
- ajouter le multithreading pour le rendu des fractales - ajouter le dessin de l'évolution d'un point (très joli)
- ajouter quelques animations
- ajouter une applet
- intégrer java webstart
- et pourquoi pas, voir si on ne peut pas utiliser la puissance colossale du GPU pour ce genre de calculs répétitifs
- 29 mai 2008 02:07:15 :
- hum hum, je me suis planté sur le zip, et le fait de revenir à l'étape précédente après avoir cliqué sur prévisualisation semble conserver la mise à jour prévisualisée...
- 30 mai 2008 01:10:24 :
- J'ai mis en place l'architecture pour le rendu en multithread, mais ça n'est pas encore fonctionnel. On peut sauvegarder et ouvrir des descripteurs de fractales. J'ai aussi réorganisé un peu mes packages.
Beaucoup de choses à faire encore,notamment un compteur de FPS pour les animations, une interface console minimaliste... en plus de ce que je voulais déjà faire avant
- 30 mai 2008 23:39:42 :
- Ajout de bundles, pour l'instant que le français, mais avis aux amateurs pour les traductions
Ajout d'icônes (les chemins sont paramétrables dans le bundle configuration)
Rendering multithreadé suivant le même principe que le computing
Ajout d'un panneau de contrôle des animations
- 31 mai 2008 17:36:30 :
- v2.5.0 - Gestion améliorée des bundles, ajout de l'anglais et de l'espagnol. Ajout d'icônes, gestion centralisée des animations avec un peu d'introspection à condition de spécifier dans le fichier configuration.properties le nom des classes d'animation
- 01 juin 2008 23:38:29 :
- 2.6.0 : Optimisation du rendu des fractales, calcul du FPS et
ajout d'une icône de sablier lors du dessin de la fractale + quelques bricoles
Sources du même auteur
Sources de la même categorie
Sources en rapport avec celle ci
Commentaires et avis
Discussions en rapport avec ce code source dans le forum
Problème multithreading [ par jojolemariole ]
Salut,Depuis quelques temps je m'amuse à refaire tous mes programmes avec plusieurs processus avec un gain évident.Aujourd'hui c'est une application d
Exception in thread "main" java.lang.NullPointerException [ par moooonaaaa ]
Salem, j'ai un code en java qui a plusieurs attributs et qui n'ont pas toujours tous des valeurs. dans une méthode j'ai besoin de vérifier si
Exception in thread "AWT-EventQueue-0" java.lang.NullPointerException [ par diwa ]
bonjour tous le monde, est ce que vous pouvez m'expliquer c quoi cet erreur:Exception in thread "AWT-EventQueue-0" java.lang.NullPointerException
Obtenir la classe qui lance un thread, à partir du thread [ par Hyperpenguin ]
Bonjour a tous,Voilà je vous expose mon probleme, j'ai un JDialog que j'ai modifié pour en faire un écran de connexion, l'utilisateur doit rentrer ses
ecoute des sms avec J2ME [ par yodakassoum ]
Bonjour ,j'écris un programme avec J2ME.J'aimerais ecouter la reception des sms dans un thread qui me permette de déclencher dans mon thread principal
Erreur : Exception in thread "AWT-EventQueue-0" java.lang.OutOfMemoryError: Java heap space [ par Noizet ]
Hello,Dans mon application je peux faire des recherches, si j'effectue plusieurs recherche à la suite, mon programme plante et me met cette erreur : E
les threads en java [ par limalima ]
Bonsoir,je débute en java, je suis sur les threads, mon idé est de calculer les carres de i allant de 1 à 10 000,dites moi si j'ai bien compris:comme
Probleme Thread et repaint [ par Karibou95 ]
Bonjour, J'ai plusieurs questions : Tout d'abord j'ai crée un canvas dans lequel je voudrais faire bouger un point , le probleme c'est que avec repa
Repaint me flachouille les yeux O_o [ par Karibou95 ]
Bonjour, je réalise un radar à l'aide d'un canvas et de thread ( et aussi à grâce aux personnes de ce forum qui mon beaucoup aidés :)) donc mon rad
Exécuter une applcation externe à Java [ par Noizet ]
Hello, Je suis entrain de faire un programme qui me permet d'exécuter une application externe à java, j'ai lu des tutoriaux à se sujet, mais je bloque
|
Téléchargements
Logiciels à télécharger sur le même thème :
Comparez les prix Nouvelle version
|