ホームページ  >  記事  >  ウェブフロントエンド  >  JavaScript 文字列接続パフォーマンスの最適化_JavaScript スキル

JavaScript 文字列接続パフォーマンスの最適化_JavaScript スキル

WBOY
WBOYオリジナル
2016-05-16 18:57:221035ブラウズ
コードをコピーします コードは次のとおりです。

var str = "hello"; "world" ;

バックグラウンド作業:
1) "hello" を格納する文字列を作成し、str がそれを指すようにします。
2) 「world」を格納する文字列を作成します。
3) 結果を保存する文字列を作成します。
4) str の現在の内容を結果の文字列にコピーします。
5) world を結果文字列にコピーします。
6) str が結果文字列を指すように str を更新します。
文字列を結合するたびに、2)~6)がループ内で繰り返され、これを数百回、数千回繰り返すと、大量のリソースが消費され、パフォーマンスに影響します。
解決策:
Array オブジェクトを使用して文字列を保存し、join() メソッドを使用して結果を出力します。
Java の StringBuffer クラスをモデルにしています。

コードをコピー コードは次のとおりです。
function StringBuffer(){
this ._strings = 新しい配列;
}
StringBuffer.prototype.append = function (str){
this._strings.push(str);
StringBuffer.prototype.toString = 関数(){
return this._strings.join("");
}


テスト パフォーマンス:
コード 1: "= を使用して文字列を連結します


コードをコピーします コードは次のとおりです。
var d = new Date(); = "";
for(var i=0;istr = "テスト";
var d2 = 新しい Date(); writeln(d2.getTime( )-d.getTime());


コード 2: StringBuffer の使用



コードをコピーします
コードは次のとおりです: var d = new Date(); var str = new StringBuffer(); for(var i=0;i str.append("テスト");
var res = str.toString();
var d2 = new Date(); d2.getTime()-d .getTime());


複数のテスト結果から判断すると、StringBuffer を使用すると時間を 50% 以上節約できます。
声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。