Ajax を使用して情報を送信する場合、XmlHttp を介して POST 送信を完了するために比較的大きな文字列をいくつか組み立てる必要がある場合があります。このような大量の情報を送信するのは上品ではないように思えるかもしれませんが、場合によってはそのような必要に直面しなければならないことがあります。では、JavaScript での文字列の蓄積はどれくらいの速度で行われるのでしょうか?まずは次の実験をしてみましょう。長さ 30000 の文字列を蓄積します。
テスト コード 1 - 所要時間: 14.325 秒
var str = "";
for (var i = 0; i str = "xxxxxx";
このコードには 14.325 秒かかり、結果は理想的ではありません。次に、コードを次の形式に変更します:
テスト コード 2 - 所要時間: 0.359 秒
var str = "";
for (var i = 0; i var sub = " ";
for (var j = 0; j sub = "xxxxxx";
}
str = sub;
}
このコードには 0.359 秒かかります。結果は同じで、最初に小さな文字列をいくつかアセンブルしてから、より大きな文字列にアセンブルするだけです。このアプローチにより、文字列アセンブリの後の段階でメモリにコピーされるデータの量を効果的に削減できます。この原則を理解した後、テストのために上記のコードをさらに分解することができます。以下のコードは 0.140 秒しかかかりません。
テスト コード 3 - 所要時間: 0.140 秒
var strArray = new Array();
for (var i = 0; i var sub = ""; j = 0 ; j sub = "xxxxxx";
strArray.push(sub);
str = String.prototype.concat apply(" ", strArray);
ただし、上記のアプローチは最善ではない可能性があります。送信する必要がある情報が XML 形式である場合 (実際、ほとんどの場合、送信する情報を XML 形式に組み立てることができます)、DOM オブジェクトを使用して組み立てる、より効率的で洗練された方法を見つけることもできます。それは私たちのために文字列です。次の段落では、長さ 950015 の文字列を組み立てるのにわずか 0.890 秒しかかかりません。
DOM オブジェクトを使用して情報を組み立てる - 所要時間: 0.890 秒
コードをコピー
xmlDoc = new ActiveXObject("Msxml.DOMDocument");
xmlDoc = document.createElement("DOM");
}
var root = xmlDoc.createElement("root");
for (var i = 0; i var node = xmlDoc.createElement("data");
if (browserType == BROWSER_IE) {
node.text = "xxxxxx"
}
else {
ノード.innerText = "xxxxxx";
root.appendChild(ノード);
var
if (ブラウザタイプ ==) BROWSER_IE) {
str = xmlDoc.xml;
}
else {
str = xmlDoc.innerHTML;