fps
Version:
Tiny module for measuring FPS
40 lines (32 loc) • 920 B
JavaScript
var EventEmitter = require('events').EventEmitter
, inherits = require('inherits')
module.exports = fps
// Try use performance.now(), otherwise try
// +new Date.
var now = (
(function(){ return this }()).performance &&
'function' === typeof performance.now
) ? function() { return performance.now() }
: Date.now || function() { return +new Date }
function fps(opts) {
if (!(this instanceof fps)) return new fps(opts)
EventEmitter.call(this)
opts = opts || {}
this.last = now()
this.rate = 0
this.time = 0
this.decay = opts.decay || 1
this.every = opts.every || 1
this.ticks = 0
}
inherits(fps, EventEmitter)
fps.prototype.tick = function() {
var time = now()
, diff = time - this.last
, fps = diff
this.ticks += 1
this.last = time
this.time += (fps - this.time) * this.decay
this.rate = 1000 / this.time
if (!(this.ticks % this.every)) this.emit('data', this.rate)
}