JEU DE LA VIE

Signaler
Messages postés
233
Date d'inscription
jeudi 18 janvier 2007
Statut
Membre
Dernière intervention
3 novembre 2011
-
Messages postés
83
Date d'inscription
samedi 21 mai 2005
Statut
Membre
Dernière intervention
22 mars 2011
-
Cette discussion concerne un article du site. Pour la consulter dans son contexte d'origine, cliquez sur le lien ci-dessous.

https://codes-sources.commentcamarche.net/source/53719-jeu-de-la-vie

Messages postés
83
Date d'inscription
samedi 21 mai 2005
Statut
Membre
Dernière intervention
22 mars 2011

Pour Color je ne pense pas que ça vienne d'un problème de mémoire / collection, mais plutôt du fait que les valeurs RVB y sont stockées sous formes de propriétés et non d'attributs. Du coup on récupère la valeur via un accesseur (qui est une fonction) ce qui est sensiblement plus long que de lire directement un attribut, comme dans le cas de ma classe 'Couleur'.

Pour la classe Task je l'avais survolée un moment mais apparemment il s'agit juste d'un 'emballage' autour des ThreadPool, et les objets 'Task' semblent à usage unique. Je vais quand même faire un essai au cas où.

Quand à l'assembleur c'est le langage que j’utilisai (x86) avant de me mettre au C#. Ça laisse des habitudes reconnaissables on dirait ;-)
Messages postés
2
Date d'inscription
lundi 26 novembre 2007
Statut
Membre
Dernière intervention
7 novembre 2011

C'est intéressant, même sans P.O.O !
En tout cas, j'ai appris quelque chose, c'est l'essentiel.

Ca me rapelle un jeu de la vie écrit en assembleur Z80, écrit en 1986 ... j'avais touché 300F(et oui, pas de problèmes avec l'euro en ce temps là...) de la revue "Amstrad CPC"!
Messages postés
233
Date d'inscription
jeudi 18 janvier 2007
Statut
Membre
Dernière intervention
3 novembre 2011
1
Si ton objectif était d'obtenir les meilleurs performances possibles alors c'est assez réussi. Au passage, je salue le soin que tu as apporté à ton code (d'où ma note assez positive). Je trouve juste un peu frustrant que ce code soit si fastidieux à comprendre et à s’approprier pour d'éventuelles modifications. Mais si selon toi cette approche est la plus approprié pour obtenir des performances robustes alors je te fais confiance ;)

Concernant System.Drawing.Color, c'est assez surprenant que cela entraîne une chute des performances. System.Drawing.Color étant une structure elle devrait justement optimiser les performances du fait qu'elle ne laisse aucun déchet (pas de pointeur) et du coup, ne fait jamais intervenir le Garbage Collector.

Un petit conseil : As-tu déjà exploré les solutions du namespace System.Threading.Task ? Il fournit des méthodes pour le traitement parallèle sur plusieurs cores. Cela pourrait éventuellement accroître d'avantage les perf de ton logiciel.

Simon
Messages postés
83
Date d'inscription
samedi 21 mai 2005
Statut
Membre
Dernière intervention
22 mars 2011

J'ai l'impression que tu te fait une fausse idée de l'objectif de cette source ... J'ai clarifié la présentation, qui n'était peut être pas assez explicite. Le but n'est pas de publier un FrameWork d'automate cellulaire, ou de montrer l'application de la POO sur une problématique qui ne s'y prête pas, mais de montrer comment gagner en vitesse d’exécution en C#.

Concernant ma méthode 'obèse', le contenu de cette boucle est appelé 480.000 fois toutes les 10 millisecondes ... vouloir insérer des appels de fonction ou d'interface dedans pour le seul plaisir d'avoir découpé le code reviendrait à se tirer une balle dans le pied quand on connait le coût réel d'un appel de fonction.

De même, j'ai testé l'utilisation de la classe 'Color' : l'utilisation d'accesseurs (donc de fonctions) pour récupérer les valeurs RVB rallonge de plus de 20% le temps de création total de l'image ... donc je vais rester sur ma version 'Maison'.

Concernant le CheckForIllegalCrossThreads, oui c'était nécessaire dans la mesure où l'architecture du logiciel fait qu'un seul thread à la fois accède à un élément donné de la WinForm. On s'épargne ainsi de devoir accéder à chaque label à travers des 'InvokeRequired + Delegate', qui est une approche relativement lourde.
Afficher les 7 commentaires