performance.now() 和 Date.now()


前言

performance.now()Date.now() 是 JavaScript 中用于获取当前时间的两个不同方法,但它们的用途和特性有所不同。下面是它们的详细区别与比较:

1. 概述

  • performance.now(): 返回一个精确到微秒(千分之一毫秒)的时间戳,用于精确测量时间间隔。
  • Date.now(): 返回自1970年1月1日 00:00:00 UTC以来的毫秒数,用于获取当前的时间戳。

2. 精度

  • performance.now():

    • 精度非常高,可以精确到小数点后三位,通常用于测量代码执行的时间。
    • 例如:100.345 表示自页面加载以来的时间是 100.345 毫秒。
  • Date.now():

    • 精度相对较低,只精确到毫秒。
    • 例如:1692881050734 表示自1970年1月1日以来的毫秒数。

3. 基准点

  • performance.now():

    • 基准点是页面的导航开始时间,也就是页面加载时刻。它返回的是当前时间距离页面加载的时间差,因此它的值通常比较小,且不容易受到系统时钟调整的影响。
  • Date.now():

    • 基准点是1970年1月1日 00:00:00 UTC(Unix纪元)。它返回的是自该时刻以来的毫秒数,因此它的值是一个非常大的数字,并且可能受到系统时间变更的影响。

4. 性能测量

  • performance.now():

    • 专门为性能测量设计,不受系统时间调整的影响,非常适合用于代码执行时间的测量、动画帧率计算等精确度要求较高的场景。
  • Date.now():

    • 更适合用来获取当前的日期和时间信息,而不是进行精确的性能测量。由于可能会受到系统时间调整的影响,用来测量短时间间隔的准确性较差。

5. 示例对比

// 使用 performance.now() 测量函数执行时间
const startPerf = performance.now();
// 假设这是要测量的代码
for (let i = 0; i < 1000000; i++) {}
const endPerf = performance.now();
console.log(`Performance.now() 测量的时间: ${endPerf - startPerf} 毫秒`);

// 使用 Date.now() 测量函数执行时间
const startDate = Date.now();
// 假设这是要测量的代码
for (let i = 0; i < 1000000; i++) {}
const endDate = Date.now();
console.log(`Date.now() 测量的时间: ${endDate - startDate} 毫秒`);

6. 常见应用场景

  • performance.now():

    • 用于动画或游戏中帧率的计算。
    • 测量某些函数或代码块的执行时间。
    • 精确计算网络请求或文件下载的时间。
  • Date.now():

    • 获取当前的日期和时间。
    • 生成基于时间的唯一标识符。
    • 记录日志中的时间戳。

总结

  • 精确度: performance.now() 提供了比 Date.now() 更高的精确度,是测量性能的首选。
  • 基准点: performance.now() 基于页面加载时间,不受系统时间调整的影响;而 Date.now() 基于 Unix 时间戳,可能会受到系统时间调整的影响。
  • 使用场景: 如果你需要测量时间间隔或执行性能分析,使用 performance.now() 是更好的选择;而 Date.now() 则更适合用于与当前时间相关的任务。
  • 2
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

TE-茶叶蛋

踩坑不易,您的打赏,感谢万分

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值