Created
April 21, 2021 08:37
-
-
Save mholtzhausen/7ce0d9d20236bbd27b2307f5e4c8e570 to your computer and use it in GitHub Desktop.
Simple timer function
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
const {start, measure, create} = require('./timer.js') | |
const MAX=1000 | |
var seed = Math.random()*1000; | |
function random() { | |
var x = Math.sin(seed++) * 10000; | |
return x - Math.floor(x); | |
} | |
start('hello') | |
let to1 = random()*MAX | |
let to2 = random()*MAX | |
setTimeout(()=>{ | |
console.log(`task hello took ${measure('hello')}ms (${to1})`) | |
},to1) | |
let bye = create('bye') | |
setTimeout(()=>{ | |
console.log(`task bye took ${bye.measure()}ms (${to2})`) | |
},to2) | |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
const { performance } = require('perf_hooks') | |
class TimerError extends Error {} | |
const timers={} | |
function start(name){ | |
timers[name] = performance.now() | |
return timers[name] | |
} | |
function measure(name){ | |
if(!(name in timers)) throw new TimerError(`Timer with name '${name}' was never started.`) | |
return performance.now() - timers[name] | |
} | |
/** | |
* Create a named timer | |
* | |
* @param {String} name The name of the timer | |
* @returns {Object} | |
*/ | |
function create(name){ | |
start(name) | |
return { | |
start(){ return start(name) }, | |
measure(){ return measure(name) }, | |
} | |
} | |
module.exports = { | |
create, | |
start, | |
measure | |
} |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment