网页的FPS测试
来源:互联网 发布:网络安全教育视频新闻 编辑:程序博客网 时间:2024/05/16 23:53
网页的FPS测试
最近看了一篇文章,讲的是fps性能测试的一些知识,觉得非常厉害,这里做一个记录,一方面加深记忆,一方面也给那些没看到的人共享一下。
文章开始说,当我们想测量下页面滚动的顺畅性时,可以打开chrome自带的工具:show fps meter
然后滑动页面,就可以根据FPS的监控面板上的曲线,来判断顺畅性了 。╮(╯▽╰)╭,这里我表示一点都不知道。查了一下资料后才找到这个监控面板的打开方式。
科普一下步骤:
1. F12 调出开发者工具
2. 按ESC打开控制台
3. 点击Rendering(如果没有Rendering的话,在更多按钮里面点一下就可以了)
4. 勾选 ‘show fps meter’
这里还要记录下fps的概念:
FPS全称叫 Frames Per Second (每秒帧数)。帧数越高,动画显示的越流畅。一般的液晶显示器的刷新频率也就是 60HZ。也就是说,要想页面上的交互效果及动画流畅。那么FPS稳定在60左右,是最佳的体验。。据悉 ios上的交互效果都是60FPS呢。
现在有个需求,如果有很多页面需要去测,我不能每个都打开监控面板去看,这就需要测试工具来测试并分析,然后单独去看那些有问题的页面。于是,正片来了:
mozPaintCount
方案1:
这个是火狐浏览器的一个全局属性,每次去控制台输入这个名字,都会有一个值输出。它代表的是当前文档 paint 到屏幕上的数量
那如果我写一个脚本,每秒钟去取的这个值,然后就可以去计算fps了:
requestAnimationFrame
思路2:
这里面用到了一个方法:
requestAnimationFrame
但是我之前没有用过这个东西,所以还需要后面研究,这边我找了个动画代码,然后把loop代码放进去,试着比较了下log打印的fps和监控面板的曲线图,发现还是有点出入的。
var lastTime = performance.now();var frame = 0;var lastFameTime = performance.now();var loop = function(time) { var now = performance.now(); var fs = (now - lastFameTime); //兩次循環的間隔毫秒 lastFameTime = now; var fps = Math.round(1*1000/fs);//临时的间隔 frame++; if (now > 1000 + lastTime) { //如果时间大于1s了。 var fps = Math.round( ( frame * 1000 ) / ( now - lastTime ) ); //计算fps frame = 0; lastTime = now; }; console.log(fps);}var ele = document.getElementById("test");var progress = 0;function step(timestamp) { loop(timestamp); progress += 1; ele.style.width = progress + "%"; ele.innerHTML=progress + "%"; if (progress < 100) { requestAnimationFrame(step); }}document.getElementById("run").addEventListener("click", function() { ele.style.width = "1px"; progress = 0; requestAnimationFrame(step);}, false);
不知道是不是loop的用法不对,总感觉哪里对不上。后面再研究研究这个requestAnimationFrame
的用法吧
参考文章:
- [1]: http://taobaofed.org/blog/2016/01/13/measuring-fps/#mozPaintCount
- [2]: http://www.ghugo.com/chrome-rendering-tools-3/
- 网页的FPS测试
- 一种测试FPS的方法
- iOS测试fps方式
- 测试APP得FPS
- GameBench企业版中关于FPS的测试项分析
- 29.97fps和23.976fps的计算
- FPS概念的理解
- FPS的计算方法
- 简述FPS的计算方法
- FPS的Log代码
- 简单的FPS
- fps的问题
- 网页的兼容性测试
- FPS
- FPS
- FPS
- FPS
- FPS
- redis学习之java类对redis库操作的简单封装
- Trie树与位操作
- BaseAdapter几个重载方法介绍isEnabled,getViewTypeCount ,getItemViewType
- 虚拟机下centos6.5无法上网
- acm_方格移动
- 网页的FPS测试
- 简单的网络服务器访问tomcat
- CentOS6.5下的yum本地源配置
- 西安电子科技大学论文排版教程
- javaScript valueOf和toString方法在不同场景被调用进行数据转换
- css可继承属性和不可继承属性
- Sentinel和laravel结合使用
- Android的Application对象讲解
- 串口驱动程序设计详解---串口初始化(上)