| 12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061 | 
							- "use strict";
 
- const { hrtime } = require("./utils");
 
- // The HR-TIME spec calls for 5-μs accuracy. Check that we have that in both hrtime() and Date.now().
 
- function testClockAccuracy() {
 
-   // Test hrtime() first. The check is simpler and more stable, and we use hrtime() to measure Date.now()'s performance.
 
-   const roundTrip = hrtime(hrtime());
 
-   if (roundTrip[0] > 1 || roundTrip[1] > 5e3 * 2) {
 
-     return false;
 
-   }
 
-   // Test Date.now() twice: first with a looser bound (10 μs) but with a smaller run time to filter out very bad
 
-   // Date.now() performance, and then with a tighter bound (5 μs) to check we have the accuracy we need.
 
-   let times;
 
-   // eslint-disable-next-line no-unused-vars
 
-   let cur;
 
-   let start;
 
-   let end;
 
-   times = 100;
 
-   start = hrtime();
 
-   while (times-- > 0) {
 
-     cur = Date.now();
 
-   }
 
-   end = hrtime(start);
 
-   if ((end[0] * 1e9 + end[1]) > 1000000) {
 
-     return false;
 
-   }
 
-   times = 10000;
 
-   start = hrtime();
 
-   while (times-- > 0) {
 
-     cur = Date.now();
 
-   }
 
-   end = hrtime(start);
 
-   if ((end[0] * 1e9 + end[1]) > 50000000) {
 
-     return false;
 
-   }
 
-   return true;
 
- }
 
- // Warm up the function.
 
- testClockAccuracy();
 
- testClockAccuracy();
 
- testClockAccuracy();
 
- const TIMES = 5;
 
- const THRESHOLD = 0.6 * TIMES;
 
- let accurates = 0;
 
- for (let i = 0; i < TIMES; i++) {
 
-   if (testClockAccuracy()) {
 
-     accurates++;
 
-   }
 
- }
 
- const isAccurate = accurates >= THRESHOLD;
 
- module.exports = isAccurate;
 
 
  |