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 :

Comment les éditeurs gèrent-ils les documents de grande taille ?


Sujet :

JavaScript

  1. #1
    Membre expert
    Homme Profil pro
    Inscrit en
    Octobre 2011
    Messages
    2 872
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Octobre 2011
    Messages : 2 872
    Points : 3 716
    Points
    3 716
    Par défaut Comment les éditeurs gèrent-ils les documents de grande taille ?
    Salut,

    En voulant faire un petit éditeur avec numéros de ligne je me suis aperçu qu'au bout d'un certain nombre de ligne il y a un fort ralentissement (j'en ai discuté ici : Ralentissement important au bout de quelques lignes). Et pourtant ces lignes ne contiennent pas grand chose alors que les éditeurs gèrent des documents longs avec bien plus de balises dues notamment à la surbrillance syntaxique...

    Je pense que cela devient lent lorsque la div éditable possède trop d'enfants... J'ai fait un test avec deux div éditables : une contenant le code entier et une autre dans laquelle on peut travailler sur seulement une partie du code eh bien là ça va vite, cela fonctionne normalement...

    Du coup je pense que certains éditeurs ne travaillent que sur une portion du code à la fois mais l'utilisateur a l'impression de travailler sur tout le code.

    On aurait donc le code entier dans une div à part ou dans des strings (ce qui éviterait de charger trop le DOM, je suppose aussi que travailler avec des strings est plus rapide et moins gourmand en mémoire ?) et seule une petite partie du code serait dans la zone éditable (cette partie dépendrait de la position de la srollbar).

    Qu'en pensez-vous ?


    ------------------

    Exemple d’éditeur : http://codepress.sourceforge.net - On voit bien qu'il devient lent quand le document devient important...

  2. #2
    Membre expert
    Homme Profil pro
    Inscrit en
    Octobre 2011
    Messages
    2 872
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Octobre 2011
    Messages : 2 872
    Points : 3 716
    Points
    3 716
    Par défaut
    Salut,

    Je reviens pour me répondre à moi-même...

    Citation Envoyé par Beginner. Voir le message
    Du coup je pense que certains éditeurs ne travaillent que sur une portion du code à la fois mais l'utilisateur a l'impression de travailler sur tout le code.

    On aurait donc le code entier dans une div à part ou dans des strings (ce qui éviterait de charger trop le DOM, je suppose aussi que travailler avec des strings est plus rapide et moins gourmand en mémoire ?) et seule une petite partie du code serait dans la zone éditable (cette partie dépendrait de la position de la srollbar).
    Bon alors j'ai regardé plusieurs éditeurs "modernes" comme Ace, CodeMirror2, Orion... Et apparemment comme je le soupçonnais ils ne travaillent que sur une portion du code à la fois, c'est-à-dire seule une partie du code à la fois est injectée dans le DOM, le code entier étant stocké en mémoire (objet,tableau, strings...).

    Du coup on doit gérer beaucoup plus de choses (comme par exemple afficher la bonne partie du code en fonction de la position de la scrollbar...), on ne peut plus utiliser certaines fonctionnalités toutes faites pour le DOM, il faut refaire l'équivalent pour la nouvelle structure en mémoire...

    Et moi qui pensais me débrouiller avec une zone éditable ben c'est raté... Enfin ça marchait mais pour des document de petite tailles sinon ça devient trop lent comme expliqué dans l'autre fil...

    ...

  3. #3
    Membre expert
    Homme Profil pro
    Inscrit en
    Octobre 2011
    Messages
    2 872
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Octobre 2011
    Messages : 2 872
    Points : 3 716
    Points
    3 716
    Par défaut
    Salut,

    J'ai trouvé une confirmation de l’auteur de CodeMirror...
    Apparemment CodeMirror1 mettait tout le code dans le DOM mais plus dans CodeMirror2 :

    Okay, reading that over, I feel I should actually market this more.

    So:

    * CodeMirror 2 deals with huge documents without trouble, because it
    only puts the visible content in the DOM tree
    .

    * Highlighting is now much, much faster because it doesn't directly
    manipulate the DOM, and because the parser API is much less indirect.

    * There is now an API for highlighting arbitrary pieces of text. The
    highlighted text will deal well with being edited.

    * There is also support for marking lines by putting stuff in the
    line-number gutter.

    * CodeMirror 2 support tabs. Supports them pretty well.

    * The new API is much cleaner than the old one.

    * The code is only 30k when put through UglifyJS. Take that, ACE.
    Source : https://groups.google.com/forum/#!to...or/Wo6JQCSp9YA

Discussions similaires

  1. Les développeurs détestent-ils les antivirus ?
    Par Hinault Romaric dans le forum Débats sur le développement - Le Best Of
    Réponses: 38
    Dernier message: 30/09/2019, 20h14
  2. Les éditeurs doivent-ils écouter leurs clients ?
    Par Hinault Romaric dans le forum Actualités
    Réponses: 20
    Dernier message: 08/08/2013, 10h48
  3. Réponses: 1
    Dernier message: 30/08/2012, 14h43
  4. Les européens boudent-ils les PC ?
    Par FirePrawn dans le forum Actualités
    Réponses: 107
    Dernier message: 23/04/2012, 10h09
  5. Réponses: 6
    Dernier message: 01/02/2009, 03h44

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