スクリプトの開発プロセスでは、大きな文字列が特定のルールに従って結合され、結合されて出力されることがよくあります。例えば、スクリプトコントロールを書く場合、コントロール全体の見た目を制御するHTMLタグの出力や、AJAXでサーバー側の戻り値を取得した後に動的に解析してHTMLタグを作成する場合などですが、具体的な応用例については割愛します。ここで文字列のスプライスについて説明したいと思います。スプライシングの効率について説明しましょう。
コードを記述するときは常に「=」演算子を使用します。s = String は、結合された文字列の容量が次のとおりであることに気づいたかどうかはわかりません。数十 K または数百 K がある場合、スクリプトの実行は非常に遅くなり、CPU 使用率は非常に高くなります。次に例を示します。
このワンステップ操作では、結果の文字列は 200K になり、所要時間は 1.1 秒 (これはコンピューターの構成に関連します)、CPU のピーク値は 100% になります。 (エフェクトをより直感的に確認するために、さらにループをいくつか作成しました)。このような操作ステップだけで 1 秒以上の時間が費やされ、他のコードの時間と合わせると、スクリプト ブロック全体の実行時間が耐え難いものになると考えられます。最適化ソリューションはありますか?他に方法はありますか?答えはもちろんイエスです。そうでなければ、私がこの記事を書くのはナンセンスです。
ループ内で結合する場合、配列を使用する方が高速です。代わりに、文字列が配列に入れられ、最後に array.join("") が使用されます。結果の文字列、コード例:
同じサイズの文字列を組み立てるのにかかる時間をテストできます。ここでテストした結果は、
最後に少し言わせてください。将来、配列結合は文字列の結合に使用されるのでしょうか?これは実際のニーズによって異なります。数バイトまたは K レベルのバイトの通常の組み合わせの場合、配列変数を開くのもコストがかかるため、配列メソッドを使用する必要はありません。 K 文字列の組み合わせが複数ある場合、配列の効率は高くなります。
IE 6.0:
文字列の結合方法: 結合された大きな文字列の長さは 1,010,000 バイトで、結合には 22,089 ミリ秒かかります。
配列割り当て結合方法: 結合された大きな文字列の長さは 1,010,000 バイトで、結合には 218 ミリ秒かかります。
Firefox 1.0:
文字列の結合方法: 結合された大きな文字列の長さは 1,010,000 バイトで、結合には 1,044 ミリ秒かかります。
配列割り当て結合方法: 結合された大きな文字列の長さは 1,010,000 バイトで、結合には 1,044 ミリ秒かかります。
Mozilla 1.7:
文字列の結合方法: 結合された大きな文字列の長さは 1,010,000 バイトで、結合には 1,045 ミリ秒かかります。
配列割り当て結合方法: 結合された大きな文字列の長さは 1,010,000 バイトで、結合には 1,044 ミリ秒かかります。
Netscape 7.0:
文字列の結合方法: 結合された大きな文字列の長さは 1,010,000 バイトで、結合には 10,273 ミリ秒かかります。
配列割り当て結合方法: 結合された大きな文字列の長さは 1,010,000 バイトで、結合には 1,138 ミリ秒かかります。
オペラ 7.54:
文字列の結合方法: 結合された大きな文字列の長さは 1010000 バイトで、結合には 6968 ミリ秒かかります。
配列割り当て結合方法: 連結された大きな文字列の長さは 1,010,000 バイトで、連結には 6,922 ミリ秒かかります。
10,000 回ループしたテスト結果は、IE と Netscape では効率が大幅に向上することを示していますが、Firefox Mozilla Opera ではこれら 2 つの方法は基本的に同じ時間がかかります。これらのデータは、配列結合方法が有効であることを判断するのに十分です。従来の文字列のスプライシングよりも優れています。