内容简介:While working with CSS, HTML, and JavaScript, it's always important to take care of browser rendering in browser DevTools. To find issues with rendering, we are using "Timeline" with "JS Profile" and "Memory" consumption tracking. Those tools are great whe
Measure FPS
While working with CSS, HTML, and JavaScript, it's always important to take care of browser rendering in browser DevTools. To find issues with rendering, we are using "Timeline" with "JS Profile" and "Memory" consumption tracking. Those tools are great when you know about the existing problem.
During our development process, we are using FPS-meter, which gives a signal when "Long" frames occur. To see meter action, visit this link ( in the left bottom corner ). Play with sliders to see how different CSS effects may slow down the rendering process, blur is the most "expensive" CSS3 filter.
This library works on mobile devices. It utilizes performance.now to measure time frame and requestAnimationFrame to measure rendered frames, both APIs are very efficient and have a minor impact ( for correct FPS measurement ).
Demo:
- Demo can be found on this website ( in the left bottom corner ).
Drop-in version
Installation is not required, copy-paste script into browser' console:
- Drop-in: minified version ;
- Drop-in: developer version ;
- Link to minified file ;
- HTML Script:
<script type="text/javascript" src="https://raw.githubusercontent.com/VeliovGroup/fps-meter/master/fps-meter-drop-in.min.js"></script>
Installation
NPM install
npm i --save fps-m
Meteor add
meteor add ostrio:fps-meter
NPM require
// require
const FPSMeter = require('fps-m');
// ES6 import:
import FPSMeter from 'fps-m';
Meteor: ES6 Import
import { FPSMeter } from 'meteor/ostrio:fps-meter';
Quick start
(new FPSMeter({ui: true})).start();
API
new FPSMeter([opts])
-
opts{ Object } -
opts.ui{ Boolean } - Render small box with current FPS intobody, default:false -
opts.reactive{ Boolean } - Store current FPS as reactive data source, default:false
// Quick start:
const fps = new FPSMeter({ui: true, reactive: false});
// fps.start();
// fps.stop();
Methods
-
FPSMeter#start()— Use to start measuring FPS. If{ui: true}small box with current FPS will be rendered intobody -
FPSMeter#stop()— Use to stop measuring FPS. If{ui: true}box with current FPS will be removed frombody -
FPSMeter#pause()— Use to pause measuring FPS. If{ui: true}box with current FPS will remain inbody -
FPSMeter#resume()— Use to resume measuring FPS -
FPSMeter#toggle()— Use to toggle (pause/resume) measuring FPS
Properties
-
FPSMeter#isRunning{ Boolean } —trueif meter is running andfalsewhen meter is on pause, stopped or has not started yet -
FPSMeter#template{ Blaze.View | undefined } — When{ui: true}this property holds Blaze.View instance, otherwise itsundefined -
FPSMeter#element{ DOMElement | undefined } — When{ui: true}this property holds DOMElement of FPSMeter UI elementdiv, otherwise itsundefined -
FPSMeter#fps{ Number | ReactiveVar } — When{reactive: false}it holds a { Number } with current FPS. When{reactive: true}it is an instance of{*ReactiveVar*}. Use.get()method to return current FPS. It's reactive data source, and can be used in template:
const fps = new FPSMeter({ui: false, reactive: true});
Template.currentFPS.helpers({
currentFPS() {
return fps.fps.get();
}
});
Template.currentFPS.events({
'click [data-start-fps]'(e) {
e.preventDefault();
fps.start();
return false;
},
'click [data-stop-fps]'(e) {
e.preventDefault();
fps.stop();
return false;
}
});
<template name="currentFPS">
<div>{{currentFPS}}</div>
<button data-start-fps>Start</button>
<button data-stop-fps>Stop</button>
</template>
Pause/Resume by clicking on UI box
const fps = new FPSMeter({ ui: true });
fps.start();
fps.element.addEventListener('click', fps.toggle.bind(fps), { passive: true, capture: false });
Support this project:
- Become a patron — support my open source contributions with monthly donation
- Use ostr.io — Monitoring , Analytics , WebSec , Web-CRON and Pre-rendering for a website
以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持 码农网
猜你喜欢:本站部分资源来源于网络,本站转载出于传递更多信息之目的,版权归原作者或者来源机构所有,如转载稿涉及版权问题,请联系我们。
Java常用算法手册
2012-5 / 59.00元
《Java常用算法手册》分三篇,共13章,分别介绍了算法基础、算法应用和算法面试题。首先介绍了算法概述,然后重点分析了数据结构和基本算法思想;接着,详细讲解了算法在排序、查找、数学计算、数论、历史趣题、游戏、密码学等领域中的应用;最后,列举了算法的一些常见面试题。书中知识点覆盖全面,结构安排紧凑,讲解详细,实例丰富。全书对每一个知识点都给出了相应的算法及应用实例,虽然这些例子都是以Java语言来编......一起来看看 《Java常用算法手册》 这本书的介绍吧!