0

質問 1:多数の変数と関数がある場合、JavaScript オブジェクトを初期化するのに非常に多くの時間がかかりますか?

質問 2:大きな JavaScript (.js) ファイル サイズはパフォーマンスの問題ですか?

例: Prototype を使用して JavaScript オブジェクトを作成しています。サンプル コードは次のとおりです。

function SimpleObject(){
     // no variables and functions attached to it
}
function RootObject(){
   var one = "one";
   var two = "two";
   .
   .
   var one_thousand = "One Thousand";
}
function Child_1_Object(){
    // n number of variables
}
.
.
function Child_1000_Object(){
    // n number of variables
}

RootObject.prototype.get_Child_1_Object = function(){
   return new Child_1_Object();
}
.
.
RootObject.prototype.get_Child_1000_Object = function(){
   return new Child_1000_Object();
}

上記のコードはすべて、10,000 行のコード (10KLOC) を含む 1 つの .js ファイルにあります。
私の質問は、いつオブジェクトを作成RootObjectするSimpleObjectかということです。

4

3 に答える 3

1
  1. 絶対。高速で最新のブラウザーでは、これらはミリ秒 (またはそれ以下) ですが、すべての変数を初期化する必要があるため、10k は常に 1 より悪くなります。

  2. これは、ブラウザーによってダウンロードされる必要があり (大きいほど遅い)、js エンジンによって解析されるよりも (大きいほど遅い) 必要があるためです。

これは単純な計算ですが、前に述べたように、変数を初期化するだけであれば、遅延は無視できるほど小さいので、心配する必要はありません。

于 2013-07-25T11:52:27.677 に答える
1
  1. いいえ。新しいオブジェクトをインスタンス化するのに必要な時間のほとんどは、コンストラクターで何が行われるかによって決まります。
  2. 大量の JavaScript (10k は遠く離れた大きな JavaScript ファイルではありません) を持つことの主な問題は、それが実際に何をしているのかということです。確かに、JavaScript が 10 MB あると、一部の JavaScript VM でパフォーマンスの問題が発生する可能性があります。

ダウンロード速度は問題になるかもしれませんが、JavaScript の解析はそうではありません。これらはすべて C または C++ で記述されており、非常に高速に実行されます。JavaScript でオブジェクト型を宣言しているだけの場合、そのほとんどは、コードを解析して、プロトタイプを JavaScript VM 内の既知の型として割り当てるだけです。その時点で実際にコンストラクターを実行する必要はないので、おそらくオブジェクトの初期化を開始するまで、上記のコードはすぐに実行されます。

JavaScript の構文解析に関するもう 1 つの点は、構文解析は他の言語が行う手順の 1 つにすぎないということです。Java、C#、C、C++ などにも、少なくとも解析ツリーを何らかの形のオブジェクト コードに変換する段階があります。Java と C# はそこで停止します。そのランタイムは追加の JIT コンパイルと最適化をオンザフライで行う必要があるためです。C/C++ などは、使用可能なマシン コードを生成する前に、リンクと最適化を行う必要があります。プログラミング言語では決して「解析が簡単」というわけではありませんが、パフォーマンスが最も重視される部分ではありません。

于 2013-07-25T11:52:37.977 に答える
1

質問 1:

メンバー、関数などを使用してオブジェクトをより複雑にすると、インスタンス化に必要な時間が長くなります。ポイントを証明するために、ここに簡単なjsPerfテストを書きました:http://jsperf.com/simple-vs-complex-object

ただし、1 秒間に何十万ものオブジェクトを作成していることに注意してください。非常に複雑なオブジェクトであっても、それほど遅くはありません。

質問 2:

大きなファイルが問題になるのは、クライアントがファイルをダウンロードする必要があるという点だけです。コードを縮小すると、これに役立ちます。例http://javascript-minifier.com/

于 2013-07-25T12:10:05.147 に答える