mirror of
https://github.com/cachix/install-nix-action.git
synced 2025-05-15 04:07:13 +00:00
v6
This commit is contained in:
parent
cd5893b2c6
commit
70742d22d9
6774 changed files with 1602535 additions and 1 deletions
61
node_modules/w3c-hr-time/lib/clock-is-accurate.js
generated
vendored
Normal file
61
node_modules/w3c-hr-time/lib/clock-is-accurate.js
generated
vendored
Normal file
|
@ -0,0 +1,61 @@
|
|||
"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;
|
Loading…
Add table
Add a link
Reference in a new issue