论坛首页 Web前端技术论坛

再探讨innerHTML和createElement

浏览 16668 次
精华帖 (2) :: 良好帖 (1) :: 新手帖 (0) :: 隐藏帖 (0)
作者 正文
   发表时间:2009-10-23   最后修改:2009-10-23
lifesinger 写道
测试很重要,赞楼主。

另,关于字符串拼接,只有ie6和ie7下,因为内部实现的问题,导致 + 性能低下。
面向未来编程的话,还是推荐用 + 号拼接,只在真有性能问题的地方,针对ie7-用下array中转。

对于纯字符串(无变量)拼接,比如 var s = "dgdhdh" + "hdhs" + ....
用 + 号还可以让压缩优化,压缩后直接变成 s = "dshdhdjfjgfjg".  这样性能无疑是最高的。



面向未来编程的话,还是推荐用 + 号拼接

想知道为什么 能不能详细说说.

谢谢

==================================================

关于innerHTML的问题 以前我也写过一篇blog:

浅析 innerHTML 性能优化的原理



.
0 请登录后投票
   发表时间:2009-10-23  
看来以后优先用 innerHTML
0 请登录后投票
   发表时间:2009-10-23  
fins 写道
...

关于innerHTML的问题 以前我也写过一篇blog:

浅析 innerHTML 性能优化的原理

 

楼上研究精神赞一个!希望能和您多交流!

0 请登录后投票
   发表时间:2009-10-23  
fins 写道


面向未来编程的话,还是推荐用 + 号拼接

想知道为什么 能不能详细说说.



因为除了 ie6 和 ie7, 其它浏览器下, + 号拼接字符串的性能都非常不错

面向未来中的未来,指的是 ie6 和 ie7 迟早会被淘汰,为了让我们的代码适应未来的主流浏览器,用 + 号比用 Array 好,而且代码上更直观简洁。
1 请登录后投票
   发表时间:2009-10-23  
lifesinger 写道
fins 写道


面向未来编程的话,还是推荐用 + 号拼接

想知道为什么 能不能详细说说.



因为除了 ie6 和 ie7, 其它浏览器下, + 号拼接字符串的性能都非常不错

面向未来中的未来,指的是 ie6 和 ie7 迟早会被淘汰,为了让我们的代码适应未来的主流浏览器,用 + 号比用 Array 好,而且代码上更直观简洁。

 

0 请登录后投票
   发表时间:2009-10-24  
楼主,我对javascript不熟悉,先不考虑效率,我想知道,innerHTML各个浏览器都支持吗?、只想知道一个各个浏览器都支持的,
0 请登录后投票
   发表时间:2009-10-24  
fykyx521 写道
楼主,我对javascript不熟悉,先不考虑效率,我想知道,innerHTML各个浏览器都支持吗?、只想知道一个各个浏览器都支持的,

现在的主流浏览器都支持这个原来本属于IE的属性,至于具体的浏览器版本才开始支持,我倒不是很清楚,楼上不妨上网搜索一下

 

0 请登录后投票
   发表时间:2009-10-24  
as3中array.join()在数组长度非常大的情况下,性能消耗也很恐怖。js估计也差不多。

所以自己封装的stringbuilder,全部使用+了。
0 请登录后投票
   发表时间:2009-10-26  
都使用 + 了,你还要stringbuilder干嘛啊。。。


使用 + 的好处:可以被引擎优化。如 "a" + "b",可以被直接优化为"ab",但是"a".concat("b")就不能直接优化(至少难度很高),因为concat方法可能被override 。
0 请登录后投票
   发表时间: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 @*/
        ...
}


也就是控制对象的数量在一定规模以下,从而节约了无意义垃圾回收的开销。

0 请登录后投票
论坛首页 Web前端技术版

跳转论坛:
Global site tag (gtag.js) - Google Analytics