Closure Compiler ist eine Funktion inlining, aber die Code-Größe ist kleiner, wenn diese Funktion nicht inline ist (ich interessiere mich nur für die Code-Größe - das ist für JS1k). Kann ich dem Compiler mitteilen, dass diese Funktion nicht inline sein soll?Ist es möglich, Google Closure-Compiler * nicht * bestimmte Funktionen inline zu machen?
Edit: Nur ein bisschen besser zu erklären, hier ist meine Funktion:
function lineTo(x,y) {
a.lineTo(x,y);
}
wo a
in der Leinwand Kontext. Da es so viele s im Code gibt, lohnt es sich, diese Funktion zu verwenden. So ist mein Code 1019 Bytes (und alle lineTo
s werden durch a.lineTo
ersetzt).
function lineTo(x,y) {
a.lineTo(x,y);
console.log();
}
die neue Linie zwingt den Compiler irgendwie diese Funktion nicht inline, die mir 993 Bytes gibt: Wenn ich die Funktion zu ändern. Wenn ich also die console.log();
loswerden könnte, würde ich weitere 14 Bytes sparen.
http://code.google.com/intl/de/closure/compiler/docs/compilatio n_levels.html "Der Compiler funktioniert nur, wenn er feststellt, dass Inlining sicher und platzsparend ist." ... vielleicht ist das Dokument falsch oder es ist ein Bug im Compiler. – timdream
@timdream Sehen Sie meine Bearbeitung - es sieht so aus, als würde es automatisch eine einzeilige Funktion inline, auch wenn Inlining die Größe im Vergleich zu verlassen erhöht. – Skilldrick
Bekam es! Vielen Dank. – timdream