Published on

Measure time with a higher order utility function

Authors

I consider closures and higher order functions to be one of the most powerful language features, if not the most powerful. Here is a 2-liner function that uses both of them. Comes in handy for testing, debugging and measuring performance of some chunks of code.

/*
 * startTimer creates a function that returns time difference in milliseconds
 */
function startTimer() {
  const startTime = new Date()
  return () => new Date() - startTime
}

Example of usage:

const getTimeDifference = startTimer()

// Should output a number around 3000 after 3 seconds have passed
setTimeout(() => {
  console.log(`${getTimeDifference()} milliseconds have passed!`)
}, 3000)

This allows you to start tracking multiple events at any given time and retrieve the time difference whenever it's required.

NOTE: Node.js includes more precise measurement utils through it's Performance API

Cheers!