performance.now() method returns a
DOMHighResTimeStamp (en-US), measured in milliseconds.
경고: The timestamp is not actually high-resolution. To mitigate security threats such as Spectre, browsers currently round the results to varying degrees. (Firefox started rounding to 1 millisecond in Firefox 60.) Some browsers may also slightly randomize the timestamp. The precision may improve again in future releases; browser developers are still investigating these timing attacks and how best to mitigate them.
참고: 이 기능은 Web Worker에서 사용할 수 있습니다
The returned value represents the time elapsed since the time origin (en-US).
Bear in mind the following points:
- In dedicated workers created from a
Windowcontext, the value in the worker will be lower than
performance.now()in the window who spawned that worker. It used to be the same as
t0of the main context, but this was changed.
- In shared or service workers, the value in the worker might be higher than that of the main context because that window can be created after those workers.
t = performance.now();
var t0 = performance.now(); doSomething(); var t1 = performance.now(); console.log("Call to doSomething took " + (t1 - t0) + " milliseconds.");
Date.now (en-US)), the timestamps returned by
performance.now() are not limited to one-millisecond resolution. Instead, they represent times as floating-point numbers with up to microsecond precision.
Date.now(), the values returned by
performance.now() always increase at a constant rate, independent of the system clock (which might be adjusted manually or skewed by software like NTP). Otherwise,
performance.timing.navigationStart + performance.now() will be approximately equal to
To offer protection against timing attacks and fingerprinting, the precision of
performance.now() might get rounded depending on browser settings.
In Firefox, the
privacy.reduceTimerPrecision preference is enabled by default and defaults to 1ms.
// reduced time precision (1ms) in Firefox 60 performance.now(); // 8781416 // 8781815 // 8782206 // ... // reduced time precision with `privacy.resistFingerprinting` enabled performance.now(); // 8865400 // 8866200 // 8866700 // ...
In Firefox, you can also enable
privacy.resistFingerprinting — this changes the precision to 100ms or the value of
privacy.resistFingerprinting.reduceTimerPrecision.microseconds, whichever is larger.
|High Resolution Time |
BCD tables only load in the browser
- When milliseconds are not enough: performance.now() from HTML5 Rocks.