UNPKG

fps

Version:

Tiny module for measuring FPS

40 lines (32 loc) 920 B
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) }