从现有的javascript Date()对象中获取当前时间

Get current time from existing javascript Date() object?

本文关键字:对象 获取 时间 javascript Date      更新时间:2023-09-26

我在一个实时javascript应用程序中编写一些调试代码。在更新循环中,我想:

  1. 以毫秒为单位获取当前时间
  2. 比较上一帧的时间并打印出帧率
  3. 从上面的变量设置最后一帧的时间为当前时间

都很简单,只是因为它是在性能关键的代码段中,所以我尽量不调用

var d=new Date();
在调用 之前的每一帧

thisFrameTime = d.getTime();

这可能吗?是否有以下内容:

d.now

更新现有日期对象中的时间?

我的想法是,我想远离内存分配/gc,而在调试模式,所以它影响帧率更少-但也许这只是不怎么在javascript中完成?(我的背景更多的是C/c++,所以也许这不是JS的正确思考方式?)

我搜索了Google和Stack Overflow,似乎找不到答案,这让我觉得这是不可能的。如果是这样的话,请确认一下。

我想要任何想法-什么是最有效的方法来完成这个?

有一个Date.now()函数

var time = Date.now()

问题是它是EcmaScript 5的一部分,所以旧的浏览器(IE 6-8)不支持它。正如在MDM(上面的链接)中所写的那样,您可以通过在代码中包含以下内容来解决这个问题:

if (!Date.now) {  
  Date.now = function() {  
    return +(new Date);  
  };  
}  

你不能在浏览器中控制gc,它在运行时运行。每次需要当前时间时创建Date对象可能是最好的方法,并且应该是微不足道的,除非您持有对对象的引用(这将防止它们收集)。

但是,您应该使用aop风格的分析代码,而不是将"调试代码"放入源代码中。我甚至不确定这是什么,但这听起来像是你永远不应该做的事情。