Initial commit

master
Sven Slootweg 3 years ago
commit 4a5b494f7c

@ -0,0 +1,5 @@
# time-call
Measures the execution time of a chunk of code to nanosecond precision, while also providing access to its return value.
Proper docs coming Eventually(tm), see example.js in the repo for now.

@ -0,0 +1,17 @@
"use strict";
const timeCall = require("./");
let dummyArray = new Array(20000).fill(0);
let { value, time } = timeCall(() => {
for (let i = 0; i < 1e3; i++) {
dummyArray = dummyArray.map((value) => value + 1);
}
return dummyArray;
});
console.log(time); // 386335402
console.log(value); // [ 1000, 1000, 1000, 1000, 1000, 1000, 1000, 1000, 1000, 1000, ...

@ -0,0 +1,19 @@
"use strict";
function hrtimeToNanoseconds(time) {
// If the numbers here become big enough to cause loss of precision, we probably have bigger issues than numeric precision...
return (time[0] * 1e9) + time[1];
}
module.exports = function measureTime(func) {
// let startTime = process.hrtime.bigint();
let startTime = hrtimeToNanoseconds(process.hrtime());
let result = func();
// let endTime = process.hrtime.bigint();
let endTime = hrtimeToNanoseconds(process.hrtime());
return {
value: result,
time: (endTime - startTime)
};
};

@ -0,0 +1,8 @@
{
"name": "time-call",
"version": "0.1.0",
"main": "index.js",
"repository": "https://git.cryto.net/joepie91/time-call.git",
"author": "Sven Slootweg <admin@cryto.net>",
"license": "WTFPL OR CC0-1.0"
}
Loading…
Cancel
Save