hz(赫兹)

时间:2022-07-23
本文章向大家介绍hz(赫兹),主要内容包括其使用实例、应用技巧、基本知识点总结和需要注意事项,具有一定的参考价值,需要的朋友可以参考一下。

30秒速答:

返回目标函数每秒执行次数。


通过获取循环前后的毫秒数差,将毫秒转换为,以计算循环消耗的时间

循环次数除以循环消耗的时间,可以得到每秒循环次数

默认的循环次数100次

const hz = (fn, iterations = 100) => {
  const before = performance.now();

  for (let i = 0; i < iterations; i++) {
    fn();
  }


  const after = performance.now();
  const time2use = (after - before) / 1000;

  return iterations / time2use;
};

例子

通过hz比较循环reduce的执行速度。

// 创建10000长度递增的数字数组

const numbers = Array(10000)
.fill()
.map((_, i) => i);


// reduce的方式计算数字相加

const sumReduce = () => numbers.reduce(
  (acc, n) => acc + n, 0
);


// 循环的方式计算数字相加
const sumForLoop = () => {
  let sum = 0;

  for (let i = 0; i < numbers.length; i++) {
    sum += numbers[i];
  }

  return sum;
};


// 循环大概比reduce快5倍

// 6202
Math.round(hz(sumReduce));
// 32733
Math.round(hz(sumForLoop));

扩展阅读

hz(赫兹)是国际单位制中频率的单位,用于计量每秒钟的周期性变动重复次数。

performance.now

该方法返回一个精确到毫秒的时间戳

Date.now不同的是,performance.now返回的时间戳没有被限制在一毫秒的精确度内,他使用浮点数来达到微秒级别的精度。

另外一个不同点是,performance.now是以一个恒定的速率慢慢增加的,不受系统时间的影响(可能被其他软件调整)。

performance.timing.navigationStart + performance.now() 约等于 Date.now()