阅读 191

性能测试新法宝:performance.now()

1、老方法 console.time

在之前,如果我们要测试性能,通常是用

console.time(str)
console.timeEnd(str)
复制代码

可以参照你所不知道的Chrome调试技巧:5、获取时间段

优点在于:

  1. 精度比较高(单位小于毫秒),连续两行 console.time('1') 和 ··console.timeEnd('1')··,他也能计算出时间差异;
  2. 例如我随便试了一次,返回值是 1: 0.001953125ms

但这个有几个缺点:

  1. 首先只能在控制台显示结果,他本身是没有返回值的;
  2. 不能提交到服务器日志;

因此只能平时用于测试一下大致性能如何,真正遇见需要上生产环境使用的话,显然就不行了。

2、更老的方法 Date

Date 的使用方法有两种,分别是:new Date()Date.now()

这两个类似,只不过一个返回的是 Date 类型,一个返回的是 number类型的毫秒数。

优点:

  1. 可以获取当前的时间,并且被变量保存;

但也有缺点:

  1. 精度太低,小于 1ms 的测试不出来结果;

3、新方法 performance.now

新方法具有以上两者的优点:

  1. 精确度高,低于 1ms(实际情况视浏览器的不同,精度大约在 0.1ms ~ 0.005ms 之间);
  2. 记录的时间可以被变量所保存,因此可以用于生产环境使用;

示例代码:

console.log(a)  // 6.32
console.log(b)  // 6.325000000000001
console.log(b - a)  // 0.005000000000000782
复制代码

缺点:

  1. 返回的值,跟打开网页的时间有关(至少chrome如此),并不像 Date.now() 那样直接返回现在距离 1970 年那个起始时间的毫秒数。
评论