我们经常需要统计一个函数的执行耗时来判断函数的性能或者用于其他用途。JS 函数统计耗时主要有如下几种办法。

(1)new Date().getTime()
使用new Date().getTime()可以获取当前本地时间戳,以毫秒为单位。

var start = new Date().getTime()
// call your function
var end = new Date().getTime()
console.log('cost is', `${end - start}ms`)

(2)console.time() 和 console.timeEnd() 方法
可以启动一个计时器来跟踪某一个操作的占用时长。console.time()console.timeEnd()方法均使用一个参数表示计数器的名称,参数值可以是任何字符串,但是这两个方法所使用的参数字符串必须相同,才能正确地统计出开始时间与结束时间之间所经过的毫秒数。缺省为 default。

console.time()
// call your function
console.timeEnd()           // default: 0.001708984375 msconsole.time('timer')
// call your function
console.timeEnd('timer')  // timer: 0.002197265625 ms

(3)performance.now()
使用上述两个方法计算耗时并不正统,推荐使用标准的performance.now()

performance 是一个全局对象,提供了获取性能相关的信息的方法。performance.now()返回进程启动至当前逝去的毫秒数,其中 0 表示当前进程的开始。

var start = performance.now();
// call your function
var end = performance.now();
console.log('cost is', `${end - start}ms`)

参考文献

[1] 博客园.在JS中统计函数执行次数与执行时间
[2] Node.js.Performance
[3] Node.js.Console

JS 统计函数执行时间相关推荐

  1. Golang 打印耗时统计、纳秒级耗时统计(统计函数执行时间)

    文章目录 Golang 打印耗时统计 普通demo 利用defer的简洁方法 利用defer更优雅的方法 纳秒级耗时统计 time.Now().UnixNano() Golang 打印耗时统计 参考U ...

  2. 获取js函数执行时间

    使用console.time这个方法,这个方法最高精确到微秒,大部分情况下都能满足我们的需要了. 其中console.time是记录一个开始时间点,1代表这个时间点的标志,可以多个时间点交叉记录,使用 ...

  3. 网页性能优化之异步加载js文件

    一个网页的有很多地方可以进行性能优化,比较常见的一种方式就是异步加载js脚本文件.在谈异步加载之前,先来看看浏览器加载js文件的原理. 浏览器加载 JavaScript 脚本,主要通过<scri ...

  4. js、css的阻塞问题

    js.css的阻塞问题 这篇文章主要是探索js.css的加载顺序及其影响问题. 下面的代码可以让浏览器阻塞: <!DOCTYPE html> <html lang="en& ...

  5. 从浏览器多进程到JS单线程,JS运行机制最全面的一次梳理

    最近发现有不少介绍JS单线程运行机制的文章,但是发现很多都仅仅是介绍某一部分的知识,而且各个地方的说法还不统一,容易造成困惑. 因此准备梳理这块知识点,结合已有的认知,基于网上的大量参考资料,从浏览器 ...

  6. python性能优化之函数执行时间分析_python性能优化之函数执行时间分析

    最近发现项目API请求比较慢,通过抓包发现主要是response时间太长,于是就开始进行优化工作.优化工作的关键一步是定位出问题的瓶颈,对于优化速度来说,从优化函数执行时间这个维度去切入是一个不错的选 ...

  7. js中当等于最小值是让代码不执行_从浏览器多进程到JS单线程,JS运行机制最全面的一次梳理...

    前言 见解有限,如有描述不当之处,请帮忙及时指出,如有错误,会及时修正. ----------超长文+多图预警,需要花费不少时间.---------- 如果看完本文后,还对进程线程傻傻分不清,不清楚浏 ...

  8. web前端培训JS 运行机制的梳理

    展现形式:由于是属于系统梳理型,就没有由浅入深了,而是从头到尾的梳理知识体系, 重点是将关键节点的知识点串联起来,而不是仅仅剖析某一部分知识. 内容是:从浏览器进程,再到浏览器内核运行,再到JS引擎单 ...

  9. 浏览器中实现深度学习?有人分析了7个基于JS语言的DL框架

    作者:仵冀颖 编辑:H4O 本文中,作者基于WWW'19 论文提供的线索,详细解读了在浏览器中实现深度学习的可能性.可行性和性能现状.具体而言,作者重点分析了 7 个最近出现的基于JavaScript ...

最新文章

  1. 前端新手学习记录2 -使用vscode编写个人网站首页
  2. 代码实现UISlider 和 UISwitch
  3. oracle常见表,ORACLE常见视图和表整理
  4. workbench设置单元坐标系_Workbench菜单选项中英文对照
  5. threading模块使用_threading简介(创建多线程的两种方法)★
  6. linux 上删除docker 虚悬镜像
  7. node windows更新_node.js 01 简介 - 产生,发展历程,优势,适用场景,实际应用
  8. mysql数据库财务_MySQL数据库——从入门到删库跑路(二)
  9. NSURLSessionDataTask与NSOperationQueue实现多文件断点下载(任意时刻终止进程,重启应用,自动重启下载)...
  10. [Golang] struct Tag说明
  11. 微信公众号接口添加菜单时错误(errcode:40017 invalid button type)
  12. 课后作业-阅读任务-阅读笔记4
  13. 清华博士的逆袭路:从延毕警告到在顶刊发文,我蛰伏了四年
  14. Android相关资源
  15. ant编辑java忽略注释_java – 注释不起作用
  16. zmap扫描mysql_网站安全扫描工具 zmap怎么进行全网检测 - 驱动管家
  17. Win10 封装报错处理
  18. java递归走迷宫游戏
  19. Ubuntu16.04(14.04) 安装网卡驱动教程
  20. 按国家归类的海淘网站大全

热门文章

  1. 这个 bug 可劫持同一 WiFi 网络上所有的安卓版火狐移动浏览器
  2. 企业打开云HBase的正确方式,来自阿里云云数据库团队的解读
  3. dom文档对象模型图
  4. mysql中间件研究(Atlas,cobar,TDDL,Mycat)
  5. Codeforces 474 C. Captain Marmot
  6. SQLServer 维护脚本分享(05)内存(Memory)
  7. Spring, MyBatis 多数据源的配置和管理
  8. Scala---Import子句详解
  9. apache简单安全配置
  10. GDB使用小结- 可带参数