JS下高效拼装字符串的几种方法比较与测试代码_Javascript教程-查字典教程网
JS下高效拼装字符串的几种方法比较与测试代码
JS下高效拼装字符串的几种方法比较与测试代码
发布时间:2016-12-30 来源:查字典编辑
摘要:在使用Ajax提交信息时,我可能常常需要拼装一些比较大的字符串通过XmlHttp来完成POST提交。尽管提交这样大的信息的做法看起来并不优雅...

在使用Ajax提交信息时,我可能常常需要拼装一些比较大的字符串通过XmlHttp来完成POST提交。尽管提交这样大的信息的做法看起来并不优雅,但有时我们可能不得不面对这样的需求。那么JavaScript中对字符串的累加速度如何呢?我们先来做下面的这个实验。累加一个长度为30000的字符串。

测试代码1 - 耗时: 14.325秒

复制代码 代码如下:

var str = "";

for (var i = 0; i < 50000; i++) {

str += "xxxxxx";

}

这段代码耗时14.325秒,结果并不理想。现在我们将代码改为如下的形式:

测试代码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秒!同样的结果,我们做的只是首先拼装一些较小的字符串然后再组装成更大的字符串。这种做法可以有效的在字符串拼装的后期减小内存复制的数据量。知道了这一原理之后我们还可以把上面的代码进一步拆散以后进行测试。下面的代码仅耗时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格式的(其实绝大多数情况下,我们都可以设法将要提交的信息组装成XML格式),我们还能找能更高效更优雅的方法—利用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;

}

相关阅读
推荐文章
猜你喜欢
附近的人在看
推荐阅读
拓展阅读
  • 大家都在看
  • 小编推荐
  • 猜你喜欢
  • 最新Javascript教程学习
    热门Javascript教程学习
    编程开发子分类