• [^] # Re: Plus léger ?

    Posté par (site web personnel) . En réponse à la dépêche Sortie de GNU LibreJS 4.7. Évalué à 3.

    Les différences sont normales, ou plutôt peuvent s'expliquer : le premier exemple que j'ai indiqué utilise vraiment et de manière très propre la library closure alors que le deuxième bench est plus ancien et sur du code "de bench" moins propre et n'utilisant pas tout ce qui est à dispo (oui c'est dommage pour un bench).
    Il faut bien comprendre que les outils Google donnent leur plein potentiel lorsqu'ils sont tous utilisés ensemble.
    Et l'utilisation de la library closure permet, lorsque associée au compilateur, d'avoir des gains vraiment important. L'utilisation du compilateur seul est bonne mais on peut mieux faire.

    Par exemple, jamais avec la lib closure on ne fait utiliser document.getElementById. Tout simplement car c'est un appel natif donc on ne peut pas le renommer. On utilise donc goog.dom.getElement. Et à la compilation c'est transformé en quelque chose de beaucoup plus court, comme c. Si on répète ça souvent et pour un peu tous les cas, on obtient des différences significatives.
    Après ça va plus loin, certains comportement de la lib ou du compilateur sont là dans le but de créer des portions similaires afin de pouvoir mieux être compressées par gzip (qui utilise un dictionnaire).

    Je peux pas faire une étude vraiment précise mais les meilleurs gains sont vraiment lorsqu'on utilise la totalité des éléments. Et par contre, dernier point de variation, la suppression du code mort peut expliquer de nombreuses différences. Si dans les deux codes j'utilise une lib, mais dans un cas j'en exploite 20% et dans l'autre 80% le résultat sera totalement différent. Dans le premier cas la compilation supprime 80% du code, dans l'autre seulement 20.