🎶 Sym - 一款用 Java 实现的现代化社区(论坛/BBS/社交网络/博客)平台

📕 思源笔记 - 一款桌面端笔记应用,支持 Windows、Mac 和 Linux

🎸 Solo - B3log 分布式社区的博客端节点,欢迎加入下一代社区网络

♏ Vditor - 一款浏览器端的 Markdown 编辑器

功能 - 执行频率

2020-03-02

描述

返回一个函数每秒执行的次数。hzhertz 的单位,该频率的单位定义为每秒一个周期。

提示

  • 使用 performance.now() 分别获取函数重复执行 iterations 次之前和之后的时间,两个时间相减即可得出所需时间
  • 将毫秒转换为秒后再除以函数执行所花费的时间,就可以得到每秒执行的次数
  • 第二个参数 iterations 的默认值为 100

代码

const hz = (fn, iterations = 100) => {
  const before = performance.now();
  for (let i = 0; i < iterations; i++) fn();
  return (1000 * iterations) / (performance.now() - before);
};

示例

测试同一功能的不同实现:

// 创建一个包含 10000 个元素的数组
const numbers = Array(10000)
  .fill()
  .map((_, i) => i);

// 同一功能的不同实现: 对同一个数组中的元素进行相加
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;
};

// sumForLoop 比 sumReduce 快了将近 5 倍
Math.round(hz(sumReduce)); // 4018
Math.round(hz(sumForLoop)); // 20555

返回总目录

每天 30 秒系列之 JavaScript 代码


欢迎注册黑客派社区,开启你的博客之旅。让学习和分享成为一种习惯!

留下你的脚步