if performance? and performance.now

module.exports = -> performance.now()

else if process? and process.hrtime

module.exports = -> (getNanoSeconds() - nodeLoadTime) / 1e6
hrtime = process.hrtime
getNanoSeconds = ->
  hr = hrtime()
  hr[0] * 1e9 + hr[1]
moduleLoadTime = getNanoSeconds()
upTime = process.uptime() * 1e9
nodeLoadTime = moduleLoadTime - upTime

else if Date.now

module.exports = -> Date.now() - loadTime
loadTime = Date.now()

else

module.exports = -> new Date().getTime() - loadTime
loadTime = new Date().getTime()