javascript组合字符串的效率比较测试

在脚本开发过程中,一大串往往是组合输出按照一定的规则,比如写脚本来控制整个控制HTML标签输出的外观,如Ajax在服务器后返回值的动态分析来创建一个HTML标签,但我不是来讨论字符串的具体应用,我只是想谈谈拼接这里的效率。

字符串拼接时我们写的代码都是用这个操作符+ =,s =字符串;这是我们最熟悉的方式,不知道如果你没有注意到,当几十甚至几百K K在字符串容量组合,脚本执行缓慢,CPU使用率高得疯狂。例如:

复制代码代码如下所示:

var str =01234567891123456789212345678931234567894123456789 ;

STR + =51234567896123456789712345678981234567899123456789 / ;

var结果;

对于(var i = 0;i < 2000;+;;



这一步,得到的字符串的结果是200K,用时1.1秒(这是计算机配置有关),和CPU的峰值是100%。(为了更直观的看到效果的,我已经做了一些更多的周期)。可以想象,这一步会消耗更多的比二我的时间,加上其他代码的消耗,和整个脚本块的执行时间是不能容忍的。有一个优化的方案吗还有别的办法吗答案当然是,或者我要写这篇文章。

最快的方法是使用数组。当循环被拼接时,它们不会连接到一个字符串。相反,字符串放在一个数组中。最后,结果字符串是通过数组获得的。

复制代码代码如下所示:

var str =01234567891123456789212345678931234567894123456789 ;

STR + =51234567896123456789712345678981234567899123456789 / ;

var结果

对于(var i = 0;i < 2000;i +);

结果:a.join();a = null;



你可以测试的组合,随着时间的消耗同样大小的字符串,我测试了它在这里:< 15毫秒,请注意,它是以毫秒为单位的,这样的组合字符串200000说,两模型的时间消耗了近两个数量级。这意味着什么这意味着,后者已经在午饭后和前还在努力。我写一个测试页面,你可以使用下面的代码复制下来,保存为htm文件打开自己的网页中,检验两者之间的差异的效率,我测试的前半分钟完成后0.07秒钟固定(10000个周期)。



复制代码代码如下所示:



字符串拼接的时候













<!——

这是一长串/拼接是100字节的作者:meizz

var str =01234567891123456789212345678931234567894123456789 ;

STR + =51234567896123456789712345678981234567899123456789 / ;

方法

功能:()

{

var结果;

无功总= parseInt(document.getelementbyid(总)的价值。);

var n =新的日期()GetTime();

对于(var i = 0;i <总;i++)

{

结果= STR;

}

document.getelementbyid(秀)价值=结果;

var s =字符串拼接:拼接后的长字符串的长度,+ result.length +字节+

拼接时间+ +(New Date()GetTime()N)+毫秒!;

document.getelementbyid(方法).innerHTML = S;

}

两种方法

函数法()

{

var结果;

无功总= parseInt(document.getelementbyid(总)的价值。);

var n =新的日期()GetTime();

var =新数组();

对于(var i = 0;i <总;i++)

{

一个{ = };

}

结果:a.join();a = null;

document.getelementbyid(秀)价值=结果;

var s =数组赋值方法:大字符串长度拼接后的+ result.length +字节+

拼接时间+ +(New Date()GetTime()N)+毫秒!;

document.getelementbyid(法).innerHTML = S;

}







最后,我说几句话,是否可以使用数组连接来进行后续的字符串拼接这取决于你的实际需要。不需要使用数组方法来组合几个普通的或K级的字节,因为数组变量也被消耗。如果有几个字符串组合超过k,那就是数组的效率。

IE 6:

字符串拼接:拼接后长1010000字节,拼接22089毫秒。

数组赋值连接方法:拼接后长1010000字节,拼接218毫秒。

火狐1:

字符串拼接:拼接后长1010000字节,拼接1044毫秒。

数组赋值连接方法:拼接后长1010000字节,拼接1044毫秒。

Mozilla 1.7:

字符串拼接:拼接后长1010000字节,拼接1045毫秒。

数组赋值连接方法:拼接后长1010000字节,拼接1044毫秒。

Netscape 7:

字符串拼接:拼接后长1010000字节,拼接10273毫秒。

数组赋值连接方法:拼接后长1010000字节,拼接1138毫秒。

歌剧7.54:

字符串拼接:拼接后长1010000字节,拼接6968毫秒。

数组赋值连接方法:拼接后长1010000字节,拼接6922毫秒。

10000个周期的测试结果表明,在伊江和网景公司,效率可以大大提高,而在Firefox Mozilla Opera中,这两种方法几乎消耗了相同的时间。这些数据可以判断数组连接方法优于传统的字符串拼接方法。