函数计时的方法

1. console 对象

可以调⽤ console 对象的 time 和 timeEnd ⽅法来对⼀段程序进⾏时间计算。例如:

function fib(n) {
  if (n === 0) return;
  let a = arguments[1] || 1;
  let b = arguments[2] || 1;
  [a, b] = [b, a + b];
  fib(--n, a, b);
}
console.time(); // 记时开始
fib(100); // ⽤上述函数计算 100 个斐波那契数
console.timeEnd(); // 计时结束并输出时⻓

注意:该方法虽然简单,但可能不如专门的性能分析库精确。 

2. Date 对象 

使用 Date 对象的 getTime 方法获取 从 1970 年 1 月 1 日 0 时 0 分 0 秒(UTC,即协调世界时)距离该日期对象所代表时间的毫秒数 进行记时操作。

function timeExecution(callback) {
  const start = new Date().getTime();
  callback(); // 执行代码
  const end = new Date().getTime();
  const timeTaken = end - start;
  console.log(`Execution took ${timeTaken} milliseconds.`);
}
// 使用示例
timeExecution(function () {
  let sum = 0;
  for (let i = 0; i < 100000000; i++) {
    // 模拟耗时操作
    sum += i;
  }
  console.log("sum = ", sum);
});

3. performance.now()

在大多数现代浏览器中,performance.now() 比 Date.getTime() 更加准确,因为它提供了更精确的时间测量(以毫秒为单位,但具有微秒级别的精度),并且它不受系统时钟调整的影响。

function timeExecution(callback) {
  const start = performance.now();
  callback(); // 执行代码
  const end = performance.now();
  const timeTaken = end - start;
  console.log(`Execution took ${timeTaken.toFixed(2)} milliseconds.`);
}
timeExecution(function () {
  let sum = 0;
  for (let i = 0; i < 100000000; i++) {
    // 模拟耗时操作
    sum += i;
  }
  console.log("sum = ", sum);
});

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:/a/699431.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

纹理贴图必须要输入顶点坐标或纹理坐标吗

最近知识星球的一位同学,面试时被问到:纹理贴图必须要输入顶点坐标或纹理坐标吗? 他一下子被这个问题问蒙了,虽然他知道正确答案是否定的,但是说不上来理由。 这个就引出了文本提到的全屏三角形,它不需要顶点缓冲区,而是利用顶点着色器直接生成所需的顶点坐标和纹理坐标…

推荐一些企业热门的 DevOps 工具(非常详细)零基础入门到精通,收藏这一篇就够了

最近一段时间&#xff0c;我们见证了 DevOps 技术的飞速发展。当今流行且功能强大的工具可能会成为下一年度的过时工具&#xff0c;甚至可能很快被另一种工具取代。如前所述&#xff0c;作者的目的不是通过这篇文章来评判哪些工具最受欢迎或功能最全&#xff0c;而是让读者全面…

【每日一题】错误的集合

错误的集合 ✨审题&#xff1a;在一个1-n的数组中&#xff0c;会有一个元素重复&#xff0c;一个元素丢失&#xff1b;&#x1f449;目标;找到重复的元素和丢失的元素并放入一个数组中返还回去 ✨有没有想到单身狗问题的进阶版那个思路&#xff0c;找2个单身狗&#xff0c;一个…

tcp协议的延迟应答(介绍+原则),拥塞控制(拥塞窗口,网络出现拥塞时,滑动窗口的大小如何确定,慢启动,阈值)

目录 延迟应答 引入 介绍 原则 拥塞控制 引入 网络出现拥塞 引入 介绍 介绍 拥塞窗口 介绍 决定滑动窗口的大小 慢启动 介绍 为什么要有慢启动 阈值 算法 总结 延迟应答 引入 发送方一次发送更多的数据,发送效率就越高 因为要写入网卡硬件的io速度很慢,尽量…

176.二叉树:从中序与后序遍历序列构造二叉树(力扣)

代码解决 /*** Definition for a binary tree node.* struct TreeNode {* int val;* TreeNode *left;* TreeNode *right;* TreeNode() : val(0), left(nullptr), right(nullptr) {}* TreeNode(int x) : val(x), left(nullptr), right(nullptr) {}* Tre…

神卓互联内网穿透:使用超简单,拿捏

神卓互联内网穿透技术是一种能够打破内网与外网之间壁垒的创新技术。它通过一系列智能的网络协议和算法&#xff0c;实现了将企业内部网络资源安全、稳定地暴露给外部网络访问。这使得无需进行复杂的网络配置和改造&#xff0c;就能轻松实现远程办公、跨地域协作等重要应用。 神…

【第1章】Vue环境搭建

文章目录 前言一、安装Node1. 下载2. 安装3. 验证3.1 npm版本与Node.js版本3.2 验证环境 4. npm4.1 安装npm4.2 安装包4.3 全局安装包4.4 更新包4.5 删除包4.6 查看已安装的包4.7 初始化package.json 5. 国内源 二、安装Visual Studio Code1.下载2.安装3.安装Vue - Official 三…

【品质】如何培养幽默感,如何幽默的沟通与应对生活(自卑vs自信,悲观vs乐观)

【品质】如何培养幽默感&#xff0c;如何幽默和正能量的沟通与应对生活&#xff08;自卑vs自信&#xff0c;悲观vs乐观&#xff09; 文章目录 一、性格底色&#xff08;自我认知&#xff0c;世界观&#xff09;1、从悲观的底色开始2、用摆烂、自嘲的方式与世界和解 二、沟通方法…

同余式,乘法逆元,费马小定理

同余式 同余式是 数论 的基本概念之一&#xff0c;设m是给定的一个正整数&#xff0c;a、b是整数&#xff0c;若满足m| (a-b)&#xff0c;则称a与b对模m 同余 &#xff0c;记为a≡b (mod m)&#xff0c;或记为a≡b (m)。 这个式子称为模m的同余式&#xff0c;若m∤ (a-b)&…

express入门02静态资源托管

目录 1 搭建静态资源结构2 代码助手3 多目录托管4 服务器热启动总结 上一篇我们讲解了使用express搭建服务器的过程&#xff0c;服务器搭建好了之后&#xff0c;除了在地址栏里输入URL发起get请求或者post请求外&#xff0c;通常我们还需要访问静态资源&#xff0c;比如html、c…

LabVIEW程序内存泄漏分析与解决方案

维护他人编写的LabVIEW程序时&#xff0c;若发现程序运行时间越长&#xff0c;占用内存越大直至崩溃&#xff0c;通常是内存泄漏导致的。本文从多角度分析内存泄漏的可能原因&#xff0c;包括数组和字符串处理、未释放的资源、循环中的对象创建等&#xff0c;并提供具体的解决方…

Linux-笔记 设备树插件

前言&#xff1a; 设备树插件&#xff08;Device Tree Blob Overlay&#xff0c;简称 DTBO&#xff09;是Linux内核和嵌入式系统中用于动态修改或扩展系统运行时的设备树配置的一种机制。它是对传统设备&#xff08;Device Tree Source&#xff0c;简称 DTS&#xff09;的补充&…

Nextjs 集成富文本编辑器react-quill

目录 一、组件代码 二、参考文档 由于Next与react有些差别&#xff0c;直接调用组件会报无法找到文档的错误&#xff0c;于是我们只有考虑动态导入了解决问题。因为富文本编辑器一般作用与form页面对SEO意义不大&#xff0c;所以这里可以考虑暂时关闭SSR。 一、组件代码 /*…

推荐系统学习笔记(五)-----双塔模型

目录 双塔模型 训练 pointwise训练 pairwise训练 listwise训练 双塔模型 矩阵补充模型只用到了用户id和物品id&#xff0c;其余属性没有用上 用户属性也可以这样处理 用户塔和物品塔各输出一个向量&#xff0c;两个向量的余弦相似度作为兴趣的预估值 训练 第一种&#x…

麦稻同框丰收忙,食家巷美味之旅

在夏收时节&#xff0c;金色的麦浪随风翻滚&#xff0c;洋溢着丰收的喜悦。而在这丰收的背后&#xff0c;食家巷以其独特的产品&#xff0c;为人们带来了一场与麦稻有关的美味盛宴。 传统的烤馍&#xff0c;带着麦子烘焙后的醇厚香气。用心挑选的原料&#xff0c;经过精…

如何用二维码进行来访登记?这个模板帮你轻松实现!

在工厂、学校、写字楼、建筑工地等人员出入频繁的场所&#xff0c;使用传统的纸质登记方法容易造成数据丢失&#xff0c;而且信息核对过程繁琐&#xff0c;效率低下。 可以用二维码代替纸质登记本&#xff0c;访客进入时扫码就能登记身份信息&#xff0c;能够提高门岗访客管理…

气膜建筑在体育和娱乐行业的多样化应用—轻空间

随着人们生活水平的提高和健康意识的增强&#xff0c;体育和娱乐行业的发展迎来了新的机遇和挑战。气膜建筑&#xff0c;作为一种新型建筑技术&#xff0c;因其独特的优势和广泛的应用场景&#xff0c;正在引领体育和娱乐行业的新潮流。 快速建设高品质体育场馆 气膜建筑以其快…

护眼台灯怎么选?保护孩子视力看这些标准!

如果家中孩子最近开始出现“眯眼”的行为&#xff0c;那么家长们就要格外注意了&#xff01;孩子很可能会出现近视的情况&#xff0c;要注意观察学习写作业的光线以及用眼姿势习惯&#xff0c;同时可以及时就医检测。如今&#xff0c;孩子的学习负担越来越大&#xff0c;孩子的…

qt-C++笔记之命令行生成项目pro文件(极简编译qt项目代码)

qt-C笔记之命令行生成项目pro文件(极简编译qt项目代码) 文章目录 qt-C笔记之命令行生成项目pro文件(极简编译qt项目代码)步骤 1&#xff1a;生成项目文件步骤 2&#xff1a;生成 Makefile 文件步骤 3&#xff1a;编译程序详细解释注意事项项目结构main.cpp 文件生成项目文件生成…