JavaScript高级教程 - 第五课
作者: Thau
第六页:按速度优化JavaScript代码一旦你的JavaScript能运行, 你就会想到使其运行得更快。 在讲解加速代码的方法之前, 让我先讲讲“80/20规则”:
百分之八十的优化是由最初百分之二十的工作所完成的。 竭力实现剩余百分之二十的速度优化是一种巨大的痛苦, 而且经常导致完全不能读和难以管理的代码。 简言之, 如果你的JavaScript运行得很慢, 你可以用很多简单的方法来加速它, 但是除非你的代码确实运行得很慢, 我不会对它进行再优化。 下面是一些使你的代码轻松运行的方法。
限制循环内的工作量
程序运行慢的最常见原因是循环内的重复工作。 如果一
条命令只需要执行一次, 就没有必要把它放在循环内。
例如:
var index = 0;
while (index <10)
{
var the_date = new Date();
var the_day = the_date.getDay();
var the_name = prompt("what's the kid's name? " ,"");
alert("On " + the_day + " " + the_name + " is a very special person.");
index++;
}
此程序循环执行10次。 每次得到当天的日期,询问小孩
的名字,然后打印出“On Monday,so-and-so is a
very special person.”。
但是日期是不会改变的,总是今天。 所以没有必要把前
两行放在循环中。 把它们从循环中拿出来,让其只执行
一次而不是10次,这样会节省时间:
var index = 0;
var the_date = new Date();
var the_day = the_date.getDay();
while (index <10)
{
var the_name = prompt("what's the kid's name? " ,"");
alert("On " + the_day + " "
+ the_name + " is a very special person.");
index++;
}
定制if-then-else语句,按最可能到最不可能的顺序
因为if-then-else语句在遇到条件为真时结束,你可以
通过把最有可能的条件放到最开始来减少需要判断的语
句的数量。 例如:
var pet = prompt("what kind of pet do you have?", "");
if (pet == "cat")
{
doCatStuff();
} else if (pet == "dog")
{
doDogStuff();
} else if (pet == "bird")
{
doBirdStuff();
} else if (pet == "lizard")
{
doLizardStuff();
}
一般来说,程序中的if子句比从lizard到dog需要执行的
逻辑判断要少。
最小化重复执行的表达式
如果你发现需要重复计算一个特定的表达式,如
var pi=22/7,只计算一次并把它放在一个全局变量中或
许是个好主意。 例如,不象下面程序这样:
function theArea(radius)
{
var pi = 22/7;
var area = pi * radius * radius;
return area;
}
function theCircumference(radius)
{
var pi = 22/7;
var circumference = 2 * pi * radius;
return circumference;
}
而是这样做:
var pi = 22/7;
function theArea(radius)
{
var area = pi * radius * radius;
return area;
}
function theCircumference(radius)
{
var circumference = 2 * pi * radius;
return circumference;
}
我知道我在用一个全局变量,我也说过这不是一个好主意。
然而,一些数字,如pi,其值在程序中永远不会改变,是
此规则的特例。 通过只计算pi一次,可以省去额外的计算。
或许时间上的一些小的节省?奂悠鹄椿岷芄苡谩?
如果你发现代码运行很慢,你只要注意一些事情。 这些都
很明显,但是当你发现你经常忽略象这样简单的优化技巧
时,你会很吃惊。
还有,我的朋友,让我们结束今天的课程,这也是整个
JavaScript高级教程的结束。 如果你已经进行到这儿,
并且你至少读过过去五天课程中的一半,那么你已经看
过很多JavaScript代码了。 实际上,如果你能理解跨越
第一部分和第二部分的10课的大部分内容,你就可以很
安全地把自己称为“JavaScript助手”。 通往神秘真知
的路就在你的脚下。 >>
JavaScript高级教程
第一页JavaScript高级教程- 第5天
第二页 打印变量
第三页 一般性程序错误
第四页 修正错误
第五页 好的编程实践
第六页 按速度优化JavaScript代码
第七页 下面讲什么?
[第1课][第2课][第3课][第4课][第5课]
来源: Wired Digital Inc.
|