EdM*_*elo 42 javascript precision time time-precision
所以,我知道我可以使用JavaScript获得当前时间(以毫秒为单位).但是,是否有可能以纳秒为单位获得当前时间?
Jef*_*kin 64
使用以下方法在大多数浏览器中实现微秒精度:
window.performance.now()
Run Code Online (Sandbox Code Playgroud)
也可以看看:
Ron*_*enz 10
基于Jeffery的答案,获得绝对时间戳(如OP所希望的)代码将是:
var TS = window.performance.timing.navigationStart + window.performance.now();
Run Code Online (Sandbox Code Playgroud)
结果是以毫秒为单位,但据报道是" 精确到千分之一毫秒 " 的浮点值.
在像Node.js这样的服务器端环境中,您可以使用以下函数来获得以纳秒为单位的时间
function getNanoSecTime() {
var hrTime = process.hrtime();
return hrTime[0] * 1000000000 + hrTime[1];
}
Run Code Online (Sandbox Code Playgroud)
也以类似的方式获得微秒:
function getMicSecTime() {
var hrTime = process.hrtime();
return hrTime[0] * 1000000 + parseInt(hrTime[1] / 1000);
}
Run Code Online (Sandbox Code Playgroud)
performance.timing.navigationStart
已被弃用!请改用以下内容:
(performance.now() + performance.timeOrigin)\n
Run Code Online (Sandbox Code Playgroud)\n\n\n该规范定义了一个 API,它提供时间原点和亚毫秒分辨率的当前时间,这样就不会受到系统时钟偏差或调整的影响。
\n该
\ntimeOrigin
属性必须返回表示对象的相关全局对象的时间原点时间戳DOMHighResTimeStamp
的高分辨率时间。Performance
时间原点时间戳是时间原点的高分辨率时间值为零
\n时间原点是测量时间的时间值
\n该
\nnow()
方法必须返回当前的高分辨率时间。当前高分辨率时间是从时间原点到当前时间的高分辨率时间(通常称为\xe2\x80\x9cnow\xe2\x80\x9d)。
\n
\n\n该规范定义了一个提供亚毫秒时间分辨率的 API,这比
\nDOMTimeStamp
. 然而,即使没有这个新的 API,攻击者也可能能够通过重复执行和统计分析来获得高分辨率的估计。为了确保新的API不会显着提高此类攻击的准确性或速度,类型的最小分辨率DOMHighResTimeStamp
应该足够不准确以防止攻击:当前建议的最小分辨率不低于5微秒,并且在必要时应该由用户代理设置得更高,以解决由于架构或软件限制或其他考虑而导致的隐私和安全问题。
是的!尝试一下出色的sazze纳米时间
let now = require('nano-time');
now(); // '1476742925219947761' (returns as string due to JS limitation)
Run Code Online (Sandbox Code Playgroud)
不可以.您在JavaScript层无法获得纳秒精度.
如果您正在尝试对某些非常快速的操作进行基准测试,请将其置于运行它几千次的循环中.
归档时间: |
|
查看次数: |
36257 次 |
最近记录: |