用户名: 密码: 忘记密码? 注册
收藏此问题 发表新评论

一个误区(关于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代替+=。
昵称: laruence  时间: 2008-08-18 15:04:40
很好很强大
昵称: fireseno  时间: 2008-12-01 14:10:26
貌似犀牛那本上看到过...  说是很久以前 Firefox  的+= 比 join 要慢很多,后来优化过
昵称: 破鱼缸  时间: 2013-06-07 15:22:38
发表评论
昵称:
内容:
验证: