18143453325 在线咨询 在线咨询
18143453325 在线咨询
所在位置: 首页 > 营销资讯 > 网络营销 > 推荐一种测试JavaScript执行性能和性能比较的方法

推荐一种测试JavaScript执行性能和性能比较的方法

时间:2022-05-29 14:33:01 | 来源:网络营销

时间:2022-05-29 14:33:01 来源:网络营销

随着越来越多的站长对网站形象方面的关注,js文件也使用的越来越多了,于是乎一些细心的seo优化人员也开始重视JavaScript 的性能问题了,同时也导致了越来越多的 JS 性能测试框架和一些工具诞生,比如说 JSLitmus、jsperf 等等,由于本人对JavaScript方面的知识掌握的也不是太深,所以今天我们在亿企邦上要探讨分享的是一种比较简单、实用、容易上手的 JS 性能测试的方法。

举例来说,现在有一个只包含数字类型的数组,然后我会用两种方法对数组元素求和,比较两个方法的性能。

首先生成这么一个长度是 10000 的 [0, 1, 2, 3, .... 9999] 数组,长度不能太短,否则比较差值不大,效果不是很明显。

var arr = [], // 声明一个空数组
  sum = 0; // 总和初始值
  // 生成一个长度是 10000 的数组
  for (var index = 0, len = 10000; index<len; index++) {
  arr.push(index);
  }

第一种方法是用for循环去累加sum变量,得到最终结果。

// for 循环
  function forLoop(arr) {
  var i = 0,
l = arr.length;
  for (; i<l; i++) {
sum += arr[i];
 }
  }

第二种方法是用递归,用数组的 shift() 方法每次删除数组的第一个元素,并将其累加,递归执行。

// shift 递归
  function shiftLoop(arr) {
 if (!!arr.length) {
sum += arr.shift();
arguments.callee(arr);
 }
  }

分别执行以上这两个方法,其实功能都是一样一样的,而我们肉眼几乎无法分辨这两者到底谁执行的更快,这时候我们就要用事实说话,让数据说话,编写以下简单的性能测试函数,就能知道答案了。

// 最简单的性能测试函数
  function test(fn, param) {
 var s, d;
  // 记录执行的起始时间
 s = new Date().getTime();
 // 执行待测试的方法
 fn(param);
 // 记录执行的结束时间
 d = new Date().getTime();
 // 输出待测试方法所运行的结果和耗时
 alert( ‘计算结果:’ + sum + ‘,耗时:’ + (d-s) + ‘毫秒’ );
  }

最后,再分别执行刚才编写的 test() 方法,其参数就是需要测试的方法名和该方法所用到的参数:

// 分别执行看结果
  // test(forLoop, arr);
  test(shiftLoop, arr);

在我的电脑上测试发现,用for循环仅需 0~1 毫秒,而用shift递归则需要 75 毫秒左右,可见经过比较得知,for循环比 shift 递归执行速度更快,性能更佳!

这个方法测试只是要你了解其中原理,以便在平时写JS 的过程中对性能有犹豫的时候,你也可以编写这么一个简单的方法来帮助你择优录取!希望对你能有所帮助。

关键词:性能,方法,执行

74
73
25
news

版权所有© 亿企邦 1997-2022 保留一切法律许可权利。

为了最佳展示效果,本站不支持IE9及以下版本的浏览器,建议您使用谷歌Chrome浏览器。 点击下载Chrome浏览器
关闭