时间:2022-05-29 14:33:01 | 来源:网络营销
时间:2022-05-29 14:33:01 来源:网络营销
随着越来越多的站长对网站形象方面的关注,js文件也使用的越来越多了,于是乎一些细心的seo优化人员也开始重视JavaScript 的性能问题了,同时也导致了越来越多的 JS 性能测试框架和一些工具诞生,比如说 JSLitmus、jsperf 等等,由于本人对JavaScript方面的知识掌握的也不是太深,所以今天我们在亿企邦上要探讨分享的是一种比较简单、实用、容易上手的 JS 性能测试的方法。var arr = [], // 声明一个空数组第一种方法是用for循环去累加sum变量,得到最终结果。
sum = 0; // 总和初始值
// 生成一个长度是 10000 的数组
for (var index = 0, len = 10000; index<len; index++) {
arr.push(index);
}
// for 循环第二种方法是用递归,用数组的 shift() 方法每次删除数组的第一个元素,并将其累加,递归执行。
function forLoop(arr) {
var i = 0,
l = arr.length;
for (; i<l; i++) {
sum += arr[i];
}
}
// shift 递归分别执行以上这两个方法,其实功能都是一样一样的,而我们肉眼几乎无法分辨这两者到底谁执行的更快,这时候我们就要用事实说话,让数据说话,编写以下简单的性能测试函数,就能知道答案了。
function shiftLoop(arr) {
if (!!arr.length) {
sum += arr.shift();
arguments.callee(arr);
}
}
// 最简单的性能测试函数最后,再分别执行刚才编写的 test() 方法,其参数就是需要测试的方法名和该方法所用到的参数:
function test(fn, param) {
var s, d;
// 记录执行的起始时间
s = new Date().getTime();
// 执行待测试的方法
fn(param);
// 记录执行的结束时间
d = new Date().getTime();
// 输出待测试方法所运行的结果和耗时
alert( ‘计算结果:’ + sum + ‘,耗时:’ + (d-s) + ‘毫秒’ );
}
// 分别执行看结果在我的电脑上测试发现,用for循环仅需 0~1 毫秒,而用shift递归则需要 75 毫秒左右,可见经过比较得知,for循环比 shift 递归执行速度更快,性能更佳!
// test(forLoop, arr);
test(shiftLoop, arr);
关键词:性能,方法,执行