今天有同事问如何能定位哪个js方法执行时间长。依据我的经验,用firebug的Profile可以进行。
打开firebug,在load页面的时候,点击Profile,就会出现如下所示图片,简单列出了本页面所有方法执行情况:
另外,针对具体方法,我们可以用console.profile()。
下面是个例子:
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<title>JS Performance</title><!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<title>JS Performance</title>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<script
src="http://ajax.googleapis.com/ajax/libs/jquery/1.8/jquery.min.js"></script>
<script type="text/javascript">
function createArrayOne() {
for ( var i = 0; i < 1000; i++) {
var arr = new Array();
}
}
function createArrayTwo() {
for ( var i = 0; i < 1000; i++) {
var arr = [];
}
}
function init() {
console.profile('createArrayOne');
createArrayOne();
console.profileEnd('createArrayOne');
console.profile('createArrayTwo');
createArrayTwo();
console.profileEnd('createArrayTwo');
}
</script>
</head>
<body onload="init()">
</body>
</html>
在firebug下查看,显示如下。从这里可以看出创建数组的两种方式的效率差异。
下面的URL列出了firebug的Console的所有API,感兴趣的同学可以好好研究下:)
http://getfirebug.com/wiki/index.php/Console_API