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

JavaScript Discussion :

Optimisation d'affichage possible ?


Sujet :

JavaScript

  1. #1
    Futur Membre du Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Avril 2015
    Messages
    12
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Manche (Basse Normandie)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Avril 2015
    Messages : 12
    Points : 9
    Points
    9
    Par défaut Optimisation d'affichage possible ?
    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.

  2. #2
    Membre chevronné

    Homme Profil pro
    Ingénieur Hospitalier
    Inscrit en
    Juillet 2004
    Messages
    993
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Ingénieur Hospitalier
    Secteur : Santé

    Informations forums :
    Inscription : Juillet 2004
    Messages : 993
    Points : 1 768
    Points
    1 768
    Billets dans le blog
    1
    Par défaut
    Pour être honnête, je vois pas l'intérêt de mettre 20 000 cellules dans une page sachant que la pagination sert pour éviter cela "page trop lourde a charger". Si c'est une contrainte niveau exécutif alors ils feront chemin en arrière après quelques utilisation.

    Doit-on mémoriser les cellules ayant subi des changements puis mettre uniquement ces dernières à jour ?
    si ça impacte qu'une dizaine oui sinon il est parfois plus rapide de régénérer tout le tableau que de cibler avec variables temporaires les cellules modifiées.

  3. #3
    Futur Membre du Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Avril 2015
    Messages
    12
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Manche (Basse Normandie)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Avril 2015
    Messages : 12
    Points : 9
    Points
    9
    Par défaut
    Merci pour cette rapide réponse !

    Ce n'est pas tant le fait de mettre des cellules dans une page qui importe, ici j'ai parlé d'une grille de 100 par 200 mais plutôt que de parler de <table> nous pourrions parler d'image ou de dessin (Canvas JS ?) si tu préfères, ce qui est, sauf erreur de ma part, tout à fait acceptable.
    Après une petite recherche, j'ai pu trouver que la résolution moyenne (enfin la plus utilisée) des écrans semble être de 1366x768 (suivi de 1920x1080), pour notre exemple, en adaptant l'image à l'écran et sa rotation (portrait/paysage), on aurait des cellules de 6px de largeur, autant dire une image pas très haute qualité en plein écran. Bref, je m'écarte un peu, ce que je voulais dire c'est que 20'000 cellules ne semble pas être bien dramatique, sauf erreur de ma part.

  4. #4
    Membre chevronné

    Homme Profil pro
    Ingénieur Hospitalier
    Inscrit en
    Juillet 2004
    Messages
    993
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Ingénieur Hospitalier
    Secteur : Santé

    Informations forums :
    Inscription : Juillet 2004
    Messages : 993
    Points : 1 768
    Points
    1 768
    Billets dans le blog
    1
    Par défaut
    Si tu n'a pas de perte de performance, pourquoi pas, si les events js sont pas trop gourmands en CPU, si tout est bien optimisé, tu pourrais aussi implémenter du cache pour soulager le server selon la cible (backoffice privé pas nécessaire si il y a édition alors oubli, grand public plus que nécessaire) ... etc

  5. #5
    Expert éminent
    Avatar de Watilin
    Homme Profil pro
    En recherche d'emploi
    Inscrit en
    Juin 2010
    Messages
    3 093
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 35
    Localisation : France, Ille et Vilaine (Bretagne)

    Informations professionnelles :
    Activité : En recherche d'emploi

    Informations forums :
    Inscription : Juin 2010
    Messages : 3 093
    Points : 6 754
    Points
    6 754
    Par défaut
    J’ai l’intuition que dessiner des rectangles dans un canevas sera plus performant que d’afficher une <table>… Mais c’est juste une intuition, il faudrait tester intensivement pour confirmer. Selon moi, le rendu d’une table est un calcul lourd, même si des années de mauvaises pratiques (tableaux imbriqués, contenus complexes, etc) ont forcé les développeurs de navigateurs à bien optimiser cette opération.

    table-layout: fixed peut aider.

    Qu’on choisisse canevas ou table, le problème de la mise à jour est le même : doit-on tout remplacer, ou réafficher seulement les modifications locales ? Si on peut connaître à moindre coût le nombre de cellules modifiées, personnellement je partirais sur une valeur arbitraire, disons 10 000 pour couper la poire en deux ; au-dessus de cette valeur, on remplace tout, en-dessous on fait seulement des mises à jour locales.

    Dans le cas du canevas, il pourrait être intéressant de connaître la « proximité » des modifications (voisinage en x ou y) pour regrouper les modifications par zones géométriques. Mais peut-être que le calcul de proximité serait coûteux, je n’en sais rien. Encore une fois, il faut faire des tests.
    La FAQ JavaScript – Les cours JavaScript
    Touche F12 = la console → l’outil indispensable pour développer en JavaScript !

Discussions similaires

  1. [C++ .Net 1.1] Comment optimiser l'affichage ?
    Par juliano_bipso dans le forum C#
    Réponses: 5
    Dernier message: 03/08/2006, 18h54
  2. Optimiser l'affichage
    Par loic_86 dans le forum 2D
    Réponses: 5
    Dernier message: 29/04/2006, 16h52
  3. [VB.NET] Gérer 2 affichages possible
    Par pmithrandir dans le forum ASP.NET
    Réponses: 8
    Dernier message: 13/05/2005, 10h48
  4. Optimiser l'affichage d'un fichier XML de grosse taille...
    Par UnPeuPerdu dans le forum XML/XSL et SOAP
    Réponses: 11
    Dernier message: 03/06/2004, 16h01

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