精华帖 (2) :: 良好帖 (1) :: 新手帖 (0) :: 隐藏帖 (0)
|
|
---|---|
作者 | 正文 |
发表时间:2009-10-23
最后修改:2009-10-23
lifesinger 写道 测试很重要,赞楼主。
另,关于字符串拼接,只有ie6和ie7下,因为内部实现的问题,导致 + 性能低下。 面向未来编程的话,还是推荐用 + 号拼接,只在真有性能问题的地方,针对ie7-用下array中转。 对于纯字符串(无变量)拼接,比如 var s = "dgdhdh" + "hdhs" + .... 用 + 号还可以让压缩优化,压缩后直接变成 s = "dshdhdjfjgfjg". 这样性能无疑是最高的。 面向未来编程的话,还是推荐用 + 号拼接 想知道为什么 能不能详细说说. 谢谢 ================================================== 关于innerHTML的问题 以前我也写过一篇blog: 浅析 innerHTML 性能优化的原理 . |
|
返回顶楼 | |
发表时间:2009-10-23
看来以后优先用 innerHTML
|
|
返回顶楼 | |
发表时间:2009-10-23
|
|
返回顶楼 | |
发表时间:2009-10-23
fins 写道 面向未来编程的话,还是推荐用 + 号拼接 想知道为什么 能不能详细说说. 因为除了 ie6 和 ie7, 其它浏览器下, + 号拼接字符串的性能都非常不错 面向未来中的未来,指的是 ie6 和 ie7 迟早会被淘汰,为了让我们的代码适应未来的主流浏览器,用 + 号比用 Array 好,而且代码上更直观简洁。 |
|
返回顶楼 | |
发表时间:2009-10-23
lifesinger 写道
fins 写道
面向未来编程的话,还是推荐用 + 号拼接 想知道为什么 能不能详细说说. 因为除了 ie6 和 ie7, 其它浏览器下, + 号拼接字符串的性能都非常不错 面向未来中的未来,指的是 ie6 和 ie7 迟早会被淘汰,为了让我们的代码适应未来的主流浏览器,用 + 号比用 Array 好,而且代码上更直观简洁。
|
|
返回顶楼 | |
发表时间:2009-10-24
楼主,我对javascript不熟悉,先不考虑效率,我想知道,innerHTML各个浏览器都支持吗?、只想知道一个各个浏览器都支持的,
|
|
返回顶楼 | |
发表时间:2009-10-24
fykyx521 写道
楼主,我对javascript不熟悉,先不考虑效率,我想知道,innerHTML各个浏览器都支持吗?、只想知道一个各个浏览器都支持的,
现在的主流浏览器都支持这个原来本属于IE的属性,至于具体的浏览器版本才开始支持,我倒不是很清楚,楼上不妨上网搜索一下
|
|
返回顶楼 | |
发表时间:2009-10-24
as3中array.join()在数组长度非常大的情况下,性能消耗也很恐怖。js估计也差不多。
所以自己封装的stringbuilder,全部使用+了。 |
|
返回顶楼 | |
发表时间:2009-10-26
都使用 + 了,你还要stringbuilder干嘛啊。。。
使用 + 的好处:可以被引擎优化。如 "a" + "b",可以被直接优化为"ab",但是"a".concat("b")就不能直接优化(至少难度很高),因为concat方法可能被override 。 |
|
返回顶楼 | |
发表时间:2009-10-26
最后修改:2009-10-26
另外,IE下的问题并不是 + 运算本身的问题,而是垃圾回收低效的问题。即使用Array.join也有同样的问题(当然程度比较低)。所以在极端榨取性能的场合,我写过这样的代码:
while (...) { s3a[s3a.length] = ... /*@if (@_jscript_version <= 5.7) if ((s3a.length % 0x1000) == 0) s3a = [s3a.join('')] @end @*/ ... } 也就是控制对象的数量在一定规模以下,从而节约了无意义垃圾回收的开销。 |
|
返回顶楼 | |