<?xml version="1.0" encoding="utf-8"?>
<!DOCTYPE wml PUBLIC "-//WAPFORUM//DTD WML 1.1//EN" "http://www.wapforum.org/DTD/wml_1.1.xml">
<wml>
<head><meta forua="true" http-equiv="Cache-Control" content="max-age=0" /></head>
<card title="JavaScript优化方案二" id="card1">
<p> 游客</p><p>
标题:JavaScript优化方案二<br/>
正文:<br/>
JS优化已经讨论了很多了，最近又看到aimingoo的一篇。大体上，aimingoo的说法都是非常正确的。 除了像aimingoo做个案研究外，这里我想从更一般的角度总结在浏览器编程中JS优化的几个原则。 首先，与其他语言不同，JS的效率很大程度是取决于JS engine的效率。除了引擎实现的优劣外，引擎自己也会为一些特殊的代码模式采取一些优化的策略。例如FF、Opera和Safari的JS引擎，都对字符串的拼接运算（+）做了特别优化。显然，要获得最大效率，就必须要了解引擎的脾气，尽量迎合引擎的口味。所以对于不同的引擎，所作的优化极有可能是背道而驰的。 而如果做跨浏览器的web编程，则最大的问题是在于IE6（JScript 5.6）！因为在不打hotfix的情况下，JScript引擎的垃圾回收的bug，会导致其在真实应用中的performance跟其他浏览器根本不在一个数量级上。因此在这种场合做优化，实际上就是为JScript做优化！ 所以第一原则就是只需要为IE6（未打补丁的JScript 5.6或更早版本）做优化！ 如果你的程序已经优化到在IE6下可以接受的性能，那基本上在其他浏览器上性能就完全没有问题。 因此，注意我下面讲的许多问题在其他引擎上可能完全不同，例如在循环中进行字符串拼接，通常认为需要用Array.join的方式，但是由于SpiderMonkey等引擎对字符串的&amp;ldquo;+&amp;rdquo;运算做了优化，结果使用Array.join的效率反而不如直接用&amp;ldquo;+&amp;rdquo;！但是如果考虑IE6，则其他浏览器上的这种效率的差别根本不值一提。 JS优化与其他语言的优化也仍然有相同之处。比如说，不要一上来就急吼吼的做优化，那样毫无意义。优化的关键，仍然是要把精力放在最关键的地方，也就是瓶颈上。一般来说，瓶颈总是出现在大规模循环的地方。这倒不是说循环本身有性能问题，而是循环会迅速放大可能存在的性能问题。 所以第二原则就是以大规模循环体为最主要优化对象。 以下的优化原则，只在大规模循环中才有意义，在循环体之外做此类优化基本上是没有意义的。 目前绝大多数JS引擎都是解释执行的，而解释执行的情况下，在所有操作中，函数调用的效率是较低的。此外，过深的prot<br/><a href="http://camnpr.com/wap.asp?mode=WAP&amp;act=View&amp;id=485&amp;Page=1">[&lt;&lt;]</a><a href="http://camnpr.com/wap.asp?mode=WAP&amp;act=View&amp;id=485&amp;Page=1">[[1]]</a><a href="http://camnpr.com/wap.asp?mode=WAP&amp;act=View&amp;id=485&amp;Page=2">[2]</a><a href="http://camnpr.com/wap.asp?mode=WAP&amp;act=View&amp;id=485&amp;Page=3">[3]</a><a href="http://camnpr.com/wap.asp?mode=WAP&amp;act=View&amp;id=485&amp;Page=7">[&gt;&gt;]</a><br/>
<br/>
<a href="wap.asp?act=Com&amp;id=485">查看评论(0)</a><br/>
<a href="wap.asp?act=AddCom&amp;inpId=485">发表评论</a><br/><br/>

<br/>

<br/>
<a href="http://camnpr.com/wap.asp">首页</a>
</p>
</card>
</wml>