Bonjour à toutes et à tous,

Comme évoqué dans l'intitulé, je viens vers vous non pas pour un problème technique mais plutôt pour recueillir votre avis sur une possible optimisation entre JS et l'actualisation d'affichage d'éléments (HTML/CSS).


Prenons un exemple :

Soit une grille de taille 100 par 200 où chaque cellules contient une couleur.
Cette grille pourrait être affichée en HTML/CSS via une <table> (et les balises qui en découlent tel que <tr> ou encore<td>), dans chaque cellule de cette table on appliquerait le style, le background-color par exemple, représentant notre grille de départ présent dans notre script JS sous forme de tableau classique (Array).

Imaginons à présent une fonction modifiant zéro, une ou plusieurs cellule(s), on entend par là "modifier sa couleur". Cette fonction peut être un automate cellulaire par exemple.
Une telle fonction peut donc, dans notre cas, modifier de 0 à 20'000 cellules.

La problématique pour obtenir la meilleure optimisation (de temps) étant :
Doit-on mettre à jour (modification du style) une à une chaque cellule même si sa couleur est inchangée
ou bien
Doit-on mémoriser les cellules ayant subi des changements puis mettre uniquement ces dernières à jour ?

Autrement dit, en reprenant notre exemple de grille, imaginons que notre fonction modifie réellement la couleur de 1'000 de nos 20'000 cellules. Est-il plus rentable de (re)modifier chaque cellule avec potentiellement une même couleur que la précédente (le cas pour 19'000 de nos cellules) ou bien serait-il plus rentable de mémoriser ces 1'000 cellules, dans une liste temporaire par exemple, pour ne modifier qu'elles. De même, quant est-il si l'on modifie réellement 19'000 de nos 20'000 cellules ?

Dans l'idée, d'un côte on applique systématiquement une modification visuelle (même inutile) de l'autre côté on nécessite de créer une liste temporaire, de vérifier s'il y a bien changement d'état/de couleur pour ajouter la cellule dans la liste des "modifiées", puis à la fin on re-parcourt cette liste de "modifiées" pour appliquer une modification visuelle.