Le compilateur de fermeture incorpore une fonction, mais la taille du code est plus petite si cette fonction n'est pas insérée (je me soucie uniquement de la taille du code - c'est pour JS1k). Puis-je dire au compilateur que je ne veux pas que cette fonction soit inline?Est-il possible de faire du compilateur Google Closure * pas * en ligne certaines fonctions?
Edit: Juste pour expliquer un peu mieux, voici ma fonction:
function lineTo(x,y) {
a.lineTo(x,y);
}
où a
dans le contexte de la toile. Parce qu'il y a tellement de a.lineTo
s dans le code, avoir cette fonction utilisée en vaut la peine. Comme ceci, mon code est de 1019 octets (et tous les lineTo
sont remplacés par a.lineTo
). Si je change la fonction de:
function lineTo(x,y) {
a.lineTo(x,y);
console.log();
}
la nouvelle ligne oblige en quelque sorte le compilateur de ne pas inline cette fonction, ce qui me donne 993 octets. Donc, si je pouvais me débarrasser de la console.log();
je voudrais enregistrer encore 14 octets.
http://code.google.com/intl/fr/closure/compiler/docs/compilatio n_levels.html "Le compilateur n'introduit des fonctions que lorsqu'il détermine que l'inlining est sûr et économise de l'espace." ... peut-être que le doc est faux ou qu'il y a un bug dans le compilateur. – timdream
@timdream Voir mon edit - il semble qu'il va automatiquement aligner une fonction d'une ligne même si l'inlining augmente la taille par rapport à la quitter. – Skilldrick
J'ai compris! Merci. – timdream