10

JavaScript の「コンパイル」についての私の理解では、最終的にバイト数を節約するためにコードを圧縮および縮小します。

圧縮または縮小によって JavaScript の実行速度は速くなりますか?

次の例を考慮してください。

var abcdefghijklmnopqrstuvwxyz = 1;
// vs.
var a=1;
var b = function() {
    // Here is a comment
    // And another
                                                                                                                        // White space
    return true;
};

// vs.

var b=function(){return true}

これらの例を jsPerfで実行しましたが、違いはほとんどまたはまったくありませんでした。

バイトを節約するだけでなく、JavaScript のコンパイルを高速化または低速化することはできますか?

4

2 に答える 2

17

はい、Google Closure Compilerなどによって適用される変換という意味でのコンパイルは、スクリプトの実行を高速化できます。次の非常に単純な例を考えてみましょう。

var x = ["hello", "james"].join(" ");

コンパイルすると次のようになります。

var x="hello james";

これにより、コードが少なくなり、実行が速くなります。明らかにそれはばかげた例です。コンパイルされたバージョンを自分で作成していただければ幸いです。ただし、Closure がファイル サイズの改善だけでなく、パフォーマンスの改善も可能であることを示しています。

Closure docs から(強調を追加):

Closure Compiler は、JavaScript のダウンロードと実行を高速化するためのツールです。これは、JavaScript の真のコンパイラーです。ソース言語からマシン コードにコンパイルする代わりに、JavaScript からより優れた JavaScript にコンパイルします。

編集

Closure コンパイラが実際にJavaScript ファイルのサイズを増やしてパフォーマンスを向上させた例については、この質問に対する私の回答 を参照してください。

于 2012-11-20T13:07:27.017 に答える
1

縮小されたものと縮小されていないものでは、実行速度に違いはありません。唯一の違いは、縮小版の方が解析が高速であることですが、ファイルが非常に大きい場合でも (実行したテストとの違いは見られません。サイズが小さすぎるだけです)。

編集:基本的な「縮小」のみを行っている場合、私が行った最初のステートメントは有効です。Jamesが示したようにClosureコンパイラを使用している場合、Closureツールがコードを最適化すると、いくつかの違いが生じる可能性があります...

于 2012-11-20T13:08:32.520 に答える