新型SEO思维就是从一个全新的层次上提升seo优化的水平,达到网络信息最佳化的展示效果!
马海祥博客 > 网站制作 > js教程 > 推荐一种测试JavaScript执行性能和性能比较的方法

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

时间:2013-05-12   文章来源:www.mahaixiang.cn   访问次数:

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

推荐一种测试JavaScript执行性能和性能比较的方法-马海祥博客

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

首先生成这么一个长度是 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 的过程中对性能有犹豫的时候,你也可以编写这么一个简单的方法来帮助你择优录取!希望对你能有所帮助。

本文为马海祥博客原创文章,如想转载,请注明原文网址摘自于http://www.mahaixiang.cn/js/210.html,注明出处;否则,禁止转载;谢谢配合!

相关热词搜索: JavaScript js文件 JS性能比较

上一篇:常见JS挂马方法及如何防止网站被黑客挂马?
下一篇:JavaScript是什么?JavaScript功能有哪些?

今日话题更多>

SEO研究院 更多 >>