国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 語言 > JavaScript > 正文

JS下高效拼裝字符串的幾種方法比較與測試代碼

2024-05-06 14:10:30
字體:
供稿:網(wǎng)友
在使用Ajax提交信息時,我可能常常需要拼裝一些比較大的字符串通過XmlHttp來完成POST提交。盡管提交這樣大的信息的做法看起來并不優(yōu)雅,但有時我們可能不得不面對這樣的需求。那么JavaScript中對字符串的累加速度如何呢?我們先來做下面的這個實驗。累加一個長度為30000的字符串。
測試代碼1 - 耗時: 14.325秒
代碼如下:
var str = "";
for (var i = 0; i < 50000; i++) {
str += "xxxxxx";
}

這段代碼耗時14.325秒,結(jié)果并不理想?,F(xiàn)在我們將代碼改為如下的形式:
測試代碼2 - 耗時: 0.359秒
代碼如下:
var str = "";
for (var i = 0; i < 100; i++) {
var sub = "";
for (var j = 0; j < 500; j++) {
sub += "xxxxxx";
}
str += sub;
}

這段代碼耗時0.359秒!同樣的結(jié)果,我們做的只是首先拼裝一些較小的字符串然后再組裝成更大的字符串。這種做法可以有效的在字符串拼裝的后期減小內(nèi)存復(fù)制的數(shù)據(jù)量。知道了這一原理之后我們還可以把上面的代碼進一步拆散以后進行測試。下面的代碼僅耗時0.140秒。
測試代碼3 - 耗時: 0.140秒
代碼如下:
var strArray = new Array();
for (var i = 0; i < 100; i++) {
var sub = "";
for (var j = 0; j < 500; j++) {
sub += "xxxxxx";
}
strArray.push(sub);
}
str = String.prototype.concat.apply("", strArray);

不過,上面這種做法也許并不是最好的!如果我們需要提交的信息是XML格式的(其實絕大多數(shù)情況下,我們都可以設(shè)法將要提交的信息組裝成XML格式),我們還能找能更高效更優(yōu)雅的方法—利用DOM對象為我們組裝字符串。下面這段代買組裝一個長度為950015的字符串僅須耗時0.890秒。
利用DOM對象組裝信息 - 耗時: 0.890秒
代碼如下:
var xmlDoc;
if (browserType == BROWSER_IE) {
xmlDoc = new ActiveXObject("Msxml.DOMDocument");
}
else {
xmlDoc = document.createElement("DOM");
}
var root = xmlDoc.createElement("root");
for (var i = 0; i < 50000; i++) {
var node = xmlDoc.createElement("data");
if (browserType == BROWSER_IE) {
node.text = "xxxxxx";
}
else {
node.innerText = "xxxxxx";
}
root.appendChild(node);
}
xmlDoc.appendChild(root);
var str;
if (browserType == BROWSER_IE) {
str = xmlDoc.xml;
}
else {
str = xmlDoc.innerHTML;
}
發(fā)表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發(fā)表

圖片精選

主站蜘蛛池模板: 峡江县| 察哈| 化州市| 开阳县| 板桥市| 宣恩县| 乌鲁木齐市| 通州市| 汝城县| 淮滨县| 东兴市| 陈巴尔虎旗| 石门县| 乌拉特后旗| 安国市| 荥经县| 平塘县| 新巴尔虎右旗| 海兴县| 合川市| 集安市| 深圳市| 承德市| 西乌珠穆沁旗| 灵山县| 绥中县| 大足县| 凭祥市| 佛坪县| 兰西县| 吉林省| 永康市| 扎鲁特旗| 杨浦区| 越西县| 永春县| 德令哈市| 福鼎市| 泸州市| 石渠县| 高雄市|