首页 > 编程语言 >如何使用 JavaScript 获取当前页面帧率 FPS

如何使用 JavaScript 获取当前页面帧率 FPS

时间:2024-05-06 20:11:45浏览次数:24  
标签:ticks FPS JavaScript fps rafLoop now 页面

可以通过计算每秒 window.requestAnimationFrame 的调用频率来做为 FPS 值。它接收一个回调函数,该回调函数会在浏览器下一次重绘之前执行。所以只要我们循环调用并记录单位时间内的调用次数就能计算当前页面的帧率了。

效果展示

在线预览 - 使用 JavaScript 获取当前页面帧率 FPS

实现代码

html:

<p>当前FPS:<span id="fps"></span></p>

js:

let last = Date.now();
let ticks = 0;
//循环调用 requestAnimationFrame
function rafLoop(timestamp) {
    ticks += 1;
    //每30帧统计一次帧率
    if (ticks >= 30) {
        const now = Date.now();
        const diff = now - last
        const fps = Math.round(1000 / (diff / ticks));
        last = now
        ticks = 0
        renderFps(fps);// 刷新帧率数值
    }
    requestAnimationFrame(rafLoop);
}

let fpsEl = document.getElementById('fps');
//显示帧率数值到界面上
function renderFps(fps) {
    fpsEl.textContent = fps;
}

//开始执行
rafLoop();

标签:ticks,FPS,JavaScript,fps,rafLoop,now,页面
From: https://www.cnblogs.com/liuhangui/p/18175752/how-to-check-fps-in-javascript

相关文章

  • JavaScript-DOM简介
    JavaScript-DOM简介之前我们说过JavaScript有三部分组成ECMAscript,BOM,DOM,之前我们都在了解JavaScript的语法即ECMAScript,今天我们开始了解DOM(文档对象模型(DocumentobjectModel),操作网页上的元素的API)什么是DOMDOM:DocumentObjectModel,文档对象模型。DOM为文档提供了结......
  • Vue3 除了 keep-alive,还有哪些页面缓存的实现方案
    引言有这么一个需求:列表页进入详情页后,切换回列表页,需要对列表页进行缓存,如果从首页进入列表页,就要重新加载列表页。对于这个需求,我的第一个想法就是使用keep-alive来缓存列表页,列表和详情页切换时,列表页会被缓存;从首页进入列表页时,就重置列表页数据并重新获取新数据来达到列表......
  • JavaScript正则表达式
    JavaScript正则表达式创建正则表达式使用构造函数var变量=newRegExp("正则表达式");//注意,参数是字符串var变量=newRegExp("正则表达式","匹配模式");//注意,两个参数都是字符串RegExp的意思是Regularexpression。使用typeof检查正则对象,会返回object。......
  • 深入学习和理解Django模板层:构建动态页面
    title:深入学习和理解Django模板层:构建动态页面date:2024/5/520:53:51updated:2024/5/520:53:51categories:后端开发tags:Django模板表单处理静态文件国际化性能优化安全防护部署实践第一章:模板语法基础Django模板语法介绍Django模板语法是一种简洁而......
  • HTML页面关于高分屏的设置
    记录一个HTML页面关于高分屏的踩到的坑。所谓高分屏,就是在同样大小的屏幕面积上显示更多的像素点,这样可以呈现更好的可视效果的屏幕。例如,我的笔记本是15.6寸,理论上它的屏幕分辨率应该是1920x1080像素,但实际上我的笔记本屏幕分辨率确实2560x1440像素,也就是俗称的2K屏。这样的......
  • JavaScript--元素偏移量(offset)
    一、offset是什么 1、offset翻译过来就是偏移量,我们使用offset系列相关属性可以动态得到元素的位置(偏移)、大小(元素内容+padding+border);2、获得元素距离带有定位父元素的位置;3、注意:返回的数据都不带单位; offset系列常用属性:element.offsetHeight返回任何一个元素的高......
  • day30-JavaScript(2)
    1、BOM对象BOM:Broswerobjectmodel,即浏览器提供我们开发者在javascript用于操作浏览器的对象。1.1、window对象窗口方法//BOMBrowserobjectmodel浏览器对象模型//js中最大的一个对象.整个浏览器窗口出现的所有东西都是window对象的内容.console.log(window);......
  • typescript仅仅是为了给javascript增加类型而对java的一个仿制吗
    如果是这样,我不直接学习java或者c#就好了吗?(不考虑前端编程这个因素)或者换句话说,typescript跟java在语法语义有什么不同吗?能给编程带来什么帮助吗?带着这个疑问,翻了一下现有的资料,找到typescript官网的一段解释,觉得有点意思,翻出来,供大家参考。https://www.typescriptlang.org/doc......
  • day29-JavaScript(1)
    1、JavaScript的历史1.1、JavaScript的历史JavaScript因为互联网而生,紧随着浏览器的出现而问世。回顾它的历史,就要从浏览器的历史讲起。1990年底,欧洲核能研究组织(CERN)科学家TimBerners-Lee,在全世界最大的电脑网络——互联网的基础上,发明了万维网(WorldWideWeb),从此可以在网......
  • FPS游戏里添加物理材质后,没有击中目标时射击会报错的问题
    设置了不同的物理材质后 然后设定了子弹打中不同材质时,播放不同的命中特效 但是如果某次开枪,如果没有击中任何物体,比如天空,远处,子弹无论有没有被销毁,此次射击没有命中目标,那么系统会判定子弹产生的命中特效无访问,应该是找不到生成特效的点 只需要设置个变量布尔值,判断......