<div class="blog_content">这篇是nicholas讨论如果防止脚本失控的第二篇,主要讨论了如何重构嵌套循环、递归,以及那些在函数内部同时执行很多子操作的函数。基本的思想和上一节chunk()那个例子一致,如果几个操作没有特定的执行顺序,而且互相不是依赖关系,我们就可以通过异步调用的方式加以执行,不止可以减少执行的次数,还可以防止脚本失控。本文还介绍了通过memoization技术取代递归的方法。
<div>【原文标题】[url=http://www.nczonline.net/blog/2009/01/20/speed-up-your-javascript-part-2/]speed up your javascript, part 2[/url]<br>【原文作者】[url=http://www.nczonline.net/about/]nicholas c. zakas[/url]<br><br>[b]以下是对原文的翻译:[/b]<br><br>上周我在《[url=http://www.nczonline.net/blog/2009/01/13/speed-up-your-javascript-part-1/]too much happening in a loop[/url]》(译文:[url=http://kjah.iteye.com/blog/727204]如何提升javascript的运行速度之循环篇(一)[/url])这篇文章中介绍了javascript运行时间过长的第一个原因。相似的情况有时也出现在函数的定义上,函数也可能因为使用不当而过载使用。通常情况是函数内包含了过多的循环(不是在循环中执行了过多的内容),太多的递归,或者只不过是太多不相干但又要一起执行的操作。<br><br>太多的循环经常是以嵌套的形式出现,这种代码会一直占用javascript引擎直至循环结束。这方面有一个非常著名的例子,就是使用冒泡算法排序。由于 javascript有内置的sort()方法,我们没有必要使用这种方式进行排序,但我们可以借助这个算法理解嵌套循环占用资源的症结所在,从而避免类似情况的发生。下面是一个在javascript使用冒泡排序法的典型例子:<br>
<div>【原文标题】[url=http://www.nczonline.net/blog/2009/01/20/speed-up-your-javascript-part-2/]speed up your javascript, part 2[/url]<br>【原文作者】[url=http://www.nczonline.net/about/]nicholas c. zakas[/url]<br><br>[b]以下是对原文的翻译:[/b]<br><br>上周我在《[url=http://www.nczonline.net/blog/2009/01/13/speed-up-your-javascript-part-1/]too much happening in a loop[/url]》(译文:[url=http://kjah.iteye.com/blog/727204]如何提升javascript的运行速度之循环篇(一)[/url])这篇文章中介绍了javascript运行时间过长的第一个原因。相似的情况有时也出现在函数的定义上,函数也可能因为使用不当而过载使用。通常情况是函数内包含了过多的循环(不是在循环中执行了过多的内容),太多的递归,或者只不过是太多不相干但又要一起执行的操作。<br><br>太多的循环经常是以嵌套的形式出现,这种代码会一直占用javascript引擎直至循环结束。这方面有一个非常著名的例子,就是使用冒泡算法排序。由于 javascript有内置的sort()方法,我们没有必要使用这种方式进行排序,但我们可以借助这个算法理解嵌套循环占用资源的症结所在,从而避免类似情况的发生。下面是一个在javascript使用冒泡排序法的典型例子:<br>