前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >hz(赫兹)

hz(赫兹)

作者头像
公众号@魔术师卡颂
发布2020-08-26 09:53:28
1.2K0
发布2020-08-26 09:53:28
举报
文章被收录于专栏:魔术师卡颂魔术师卡颂

30秒速答:

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


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

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

默认的循环次数100次

代码语言:javascript
复制
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的执行速度。

代码语言:javascript
复制
// 创建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()

本文参与 腾讯云自媒体分享计划,分享自微信公众号。
原始发表:2020-08-07,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 魔术师卡颂 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 例子
  • 扩展阅读
    • performance.now
    领券
    问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档