一个误区(关于javascript的字符串拼接)

作者:laruence(http://www.laruence.com/)
・ 本文地址: http://www.laruence.com/2007/11/15/10.html
・ 转载请注明出处                                      

    前段时间听说了一个问题,说是,javascript中使用+=来拼接字符串会比使用Array的join方法慢几十倍以上,今天在工作间歇,就写了个例子验证了一下,结果确完全相反,使用+=比join要快(在50000个简单拼接循环)200多milliseconds,真是很意外,最后经过仔细研究,发现原因再于,我使用的测试环境,Firefox(Ubutun), 呵呵,原来是这样的。在IE下,确实使用Join要比+=快几十倍,但,在IE下它们整体要比firofox慢1个数量级;在ie下解释为什么+=比join慢的原因,是因为,在IE下,String是固定内存的,每次+=都会重新分配内存。而使用Array的join方法则不会。而为什么IE下整体要比firefox慢,是因为,IE的垃圾回收机制,每次重新分配内存以后,都会回收废弃的内存,目前只是猜测,因为IE的整体内存使用要比firefox少很多,firefox的垃圾回收机制是和IE完全不一样的。还没有经过验证,但知道这个结论就够了。不过,目前来说,因为绝大多数网民还是使用IE系列的浏览器多点,所以在大型的js工作中,还是可以考虑用Array的join代替+=。

你可能感兴趣的:(JavaScript,firefox)