クロージャコンパイラは関数をインライン展開していますが、その関数がインライン化されていない場合はコードサイズが小さくなります(コードサイズは気になります - これはJS1k用です)。私はその関数をインライン化したくないことをコンパイラに伝えることはできますか?Googleクローズコンパイラを*インラインで特定の関数にすることはできませんか?
編集:キャンバスコンテキストで
function lineTo(x,y) {
a.lineTo(x,y);
}
a
:だけでは少し良く説明し、ここに私の機能です。コードには非常に多くのa.lineTo
があるので、この関数を使用する価値があります。このように、私のコードは1019バイトです(そしてlineTo
はすべてa.lineTo
に置き換えられています)。
function lineTo(x,y) {
a.lineTo(x,y);
console.log();
}
新しい行が何らかの理由でコンパイラにこの関数をインライン化させないようにします。この関数は993バイトを与えます。だから私がconsole.log();
を取り除くことができたなら、別の14バイトを節約するだろう。 the tutorialから
http://code.google.com/intl/ja/closure/compiler/docs/compilatio n_levels.html "コンパイラは、インライン展開が安全であり、領域を節約すると判断した場合にのみ関数をインライン化します。" ...多分ドキュメントが間違っているか、コンパイラにバグがあります。 – timdream
@timdream私の編集を参照してください。インライン展開してもサイズを大きくしても、1行の関数を自動的にインライン展開するようです。 – Skilldrick
ありがとう。 – timdream