一个误区(关于javascript的字符串拼接)
时间:2008-08-18
来源:互联网
・ 作者: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代替+=。
・ 本文地址: 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
相关阅读 更多
热门阅读
-
office 2019专业增强版最新2021版激活秘钥/序列号/激活码推荐 附激活工具
阅读:74
-
如何安装mysql8.0
阅读:31
-
Word快速设置标题样式步骤详解
阅读:28
-
20+道必知必会的Vue面试题(附答案解析)
阅读:37
-
HTML如何制作表单
阅读:22
-
百词斩可以改天数吗?当然可以,4个步骤轻松修改天数!
阅读:31
-
ET文件格式和XLS格式文件之间如何转化?
阅读:24
-
react和vue的区别及优缺点是什么
阅读:121
-
支付宝人脸识别如何关闭?
阅读:21
-
腾讯微云怎么修改照片或视频备份路径?
阅读:28