WEB开发网
开发学院网页设计JavaScript 如何提升JavaScript函数的运行速度 阅读

如何提升JavaScript函数的运行速度

 2010-09-14 13:48:04 来源:WEB开发网   
核心提示: 回 忆一下你在学校学习的计算机知识,你可能记得冒泡排序法是效率最低的排序算法之一,如何提升JavaScript函数的运行速度(2),原因是对于一个包含n个元素的数组,必须要进行n的平方次的循环操作,如果你要将嵌套的循环拆解成若干个小步骤,以达到 解放浏览器的目的, 如果数组中的元素数非常大

回 忆一下你在学校学习的计算机知识,你可能记得冒泡排序法是效率最低的排序算法之一,原因是对于一个包含n个元素的数组,必须要进行n的平方次的循环操作。 如果数组中的元素数非常大,那么这个操作会持续很长时间。内循环的操作很简单,只是负责比较和交换数值,导致问题的最大原因在于循环执行的次数。这会导致 浏览器运行异常,潜在的直接结果就是那个脚本失控的警告对话框。

几年前,Yahoo的研究员Julien Lecomte写了一篇题为《Running CPU Intensive JavaScript Computations in a Web Browser》的文章,在这篇文章中作者阐述了如何将很大的javaScript操作分解成若干小部分。其中一个例子就是将冒泡排序法分解成多个步骤,每个步骤只遍历一次数组。我对他的代码做了改进,但方法的思路还是一样的:

function bubbleSort(array, onComplete) {
var pos = 0; (function() {
var j, value;
for (j = array.length; j > pos; j--) {
if (array[j] < array[j - 1]) {
value = data[j];
data[j] = data[j - 1];
data[j - 1] = value;
}
}
pos++;
if (pos < array.length) {
setTimeout(arguments.callee, 10);
} else {
onComplete();
}
})();
}

这 个函数借助一个异步管理器来实现了冒泡算法,在每次遍历数组以前暂停一下。onComplete()函数会在数组排序完成后触发,提示用户数据已经准备 好。bubbleSort()函数使用了和chunk()函数一样的基本技术(参考我的上一篇帖子),将行为包装在一个匿名函数中,将 arguments.callee传递给setTimeout()以达到重复操作的目的,直至排序完成。如果你要将嵌套的循环拆解成若干个小步骤,以达到 解放浏览器的目的,这个函数提供了不错的指导意见。

上一页  1 2 3 4  下一页

Tags:如何 提升 JavaScript

编辑录入:爽爽 [复制链接] [打 印]
赞助商链接