2016-06-29 23:49:18 +03:00
|
|
|
fps-emitter
|
|
|
|
===========
|
|
|
|
|
2016-07-06 01:00:45 +03:00
|
|
|
Measures the FPS (frames per second) of the current page and emits the
|
2016-07-06 01:01:03 +03:00
|
|
|
result whenever it changes, as an [EventEmitter](https://nodejs.org/api/events.html#events_class_eventemitter). Designed to be run in the browser.
|
2016-06-29 23:49:18 +03:00
|
|
|
|
2016-07-06 00:45:57 +03:00
|
|
|
2.8kB minified+gzipped.
|
2016-06-29 23:49:18 +03:00
|
|
|
|
|
|
|
Install
|
|
|
|
-------
|
|
|
|
|
|
|
|
Via npm:
|
|
|
|
|
|
|
|
npm install fps-emitter
|
|
|
|
|
|
|
|
Or via npmcdn:
|
|
|
|
|
|
|
|
```html
|
|
|
|
<script src="https://npmcdn.com/fps-emitter/dist/fps-emitter.min.js"></script>
|
|
|
|
```
|
|
|
|
|
|
|
|
Usage
|
|
|
|
-----
|
|
|
|
|
|
|
|
```js
|
|
|
|
var FpsEmitter = require('fps-emitter')
|
|
|
|
var fps = new FpsEmitter()
|
|
|
|
|
|
|
|
// Get the current FPS, as an integer between 0 and 60:
|
|
|
|
var currentFps = fps.get()
|
|
|
|
|
|
|
|
// Or get notified whenever it changes:
|
|
|
|
fps.on('update', function (newFps) {
|
|
|
|
console.log('FPS is: ', newFps)
|
|
|
|
})
|
|
|
|
```
|
|
|
|
|
2016-07-06 00:19:35 +03:00
|
|
|
### Update interval
|
|
|
|
|
|
|
|
By default, samples are collected every 1000 milliseconds. You can change this
|
|
|
|
either in the constructor or via a runtime API:
|
|
|
|
|
|
|
|
```js
|
|
|
|
var fps = new FpsEmitter(2000); // Update every 2000 milliseconds, from the start
|
|
|
|
|
|
|
|
fps.setUpdateInterval(2000); // Change the update interval at runtime
|
|
|
|
```
|
|
|
|
|
|
|
|
### EventEmitter
|
|
|
|
|
2016-07-06 00:55:29 +03:00
|
|
|
The `FpsEmitter` object is an [EventEmitter](https://nodejs.org/api/events.html#events_class_eventemitter)
|
2016-06-29 23:49:18 +03:00
|
|
|
that only emits one event, `'update'`.
|
|
|
|
Standard idioms like `on()`, `.once()`, and `removeListener()` all apply.
|
|
|
|
|
2016-07-06 00:19:35 +03:00
|
|
|
### Debug vs production mode
|
|
|
|
|
2016-06-29 23:49:18 +03:00
|
|
|
Once you call the constructor (`new FpsEmitter()`), it starts tracking the global FPS using
|
|
|
|
`requestAnimationFrame()`. Simply measuring the FPS has the potential to cause slowdowns, so
|
|
|
|
you may want to disable it in production:
|
|
|
|
|
|
|
|
```js
|
|
|
|
if (DEBUG_MODE) {
|
|
|
|
var fps = new FpsEmitter()
|
|
|
|
// etc.
|
|
|
|
} else {
|
|
|
|
// do nothing
|
|
|
|
}
|
|
|
|
```
|
|
|
|
|
|
|
|
Testing
|
|
|
|
-------
|
|
|
|
|
|
|
|
npm install
|
2016-07-06 00:45:57 +03:00
|
|
|
npm test
|