一段简单的显示当前页面FPS的代码

写前端代码,尤其是做一个前端框架的时候,经常需要及时知道代码的大致性能,这时候如果能有个好的办法能一直看到当前页面的fps就好了。

整体思路是一秒有一千毫秒,先记录当前时间作为最后一次记录fps的时间,通过 requestAnimationFrame 回调不断给累加fsp计数器,并且判断上次记录fps的时间是否达到1000毫秒以上,如果满足条件,就将fps累加器的值作为当前fps显示,并且重置fps累加器。

这里写了段比较简单的显示FPS的代码:

 1 var showFPS = (function () {
 2     // noinspection JSUnresolvedVariable, SpellCheckingInspection
 3     var requestAnimationFrame =
 4         window.requestAnimationFrame || //Chromium
 5         window.webkitRequestAnimationFrame || //Webkit
 6         window.mozRequestAnimationFrame || //Mozilla Geko
 7         window.oRequestAnimationFrame || //Opera Presto
 8         window.msRequestAnimationFrame || //IE Trident?
 9         function (callback) { //Fallback function
10             window.setTimeout(callback, 1000 / 60);
11         };
12
13     var dialog;
14     var container;
15
16     var fps = 0;
17     var lastTime = Date.now();
18
19     function setStyle(el, styles) {
20         for (var key in styles) {
21             el.style[key] = styles[key];
22         }
23     }
24
25     function init() {
26         dialog = document.createElement(‘dialog‘);
27         setStyle(dialog, {
28             display: ‘block‘,
29             border: ‘none‘,
30             backgroundColor: ‘rgba(0, 0, 0, 0.6)‘,
31             margin: 0,
32             padding: ‘4px‘,
33             position: ‘fixed‘,
34             top: 0,
35             right: ‘auto,‘,
36             bottom: ‘auto‘,
37             left: 0,
38             color: ‘#fff‘,
39             fontSize: ‘12px‘,
40             textAlign: ‘center‘,
41             borderRadius: ‘0 0 4px 0‘
42         });
43         container.appendChild(dialog);
44     }
45
46     function calcFPS() {
47         offset = Date.now() - lastTime;
48         fps += 1;
49
50         if (offset >= 1000) {
51             lastTime += offset;
52             displayFPS(fps);
53             fps = 0;
54         }
55
56         requestAnimationFrame(calcFPS);
57     };
58
59     function displayFPS(fps) {
60         var fpsStr = fps + ‘ FPS‘;
61
62         if (!dialog) {
63             init();
64         }
65
66         if (fpsStr !== dialog.textContent) {
67             dialog.textContent = fpsStr;
68         }
69     }
70
71     return function (parent) {
72         container = parent;
73         calcFPS();
74     };
75 })();
76
77 showFPS(document.body);

原文地址:https://www.cnblogs.com/javennie/p/10188253.html

时间: 2024-10-25 14:08:30

一段简单的显示当前页面FPS的代码的相关文章

Tomcat:解决Tomcat可以在eclipse启动,却无法显示默认页面的操作

解决Tomcat可以在eclipse启动,却无法显示默认页面的操作 今天在eclipse中配置好tomcat后访问不到它的主页,但是能运行自己的项目,一直找不到原因,百度之后最后解决了这个问题,总结如下: 原因在于eclipse是调用Tomcat的接口模拟tomcat而不是真正的启动它,因此显示不了Tomcat主页 解决办法如下: 一:双击控制台的Tomcat,如图所示: 二:修改以下两个地方: 三:若上图的单选框修改不了,如图所示: 那么最简单的解决办法就是:右击控制台的Tomcat选dele

DefaultFilesMiddleware中间件如何显示默认页面

DefaultFilesMiddleware中间件如何显示默认页面 DefaultFilesMiddleware中间件的目的在于将目标目录下的默认文件作为响应内容.我们知道,如果直接请求的就是这个默认文件,那么前面介绍的StaticFileMiddleware中间件会将这个文件响应给客户端.如果我们能够将针对目录的请求重定向到这个默认文件上,一切就迎刃而解了.实际上DefaultFilesMiddleware中间件的实现逻辑很简单,它采用URL重写的形式修改了当前请求的地址,即将针对目录的URL

ASP.NET Core应用针对静态文件请求的处理[5]: DefaultFilesMiddleware中间件如何显示默认页面

DefaultFilesMiddleware中间件的目的在于将目标目录下的默认文件作为响应内容.我们知道,如果直接请求的就是这个默认文件,那么前面介绍的StaticFileMiddleware中间件会将这个文件响应给客户端.如果我们能够将针对目录的请求重定向到这个默认文件上,一切就迎刃而解了.实际上DefaultFilesMiddleware中间件的实现逻辑很简单,它采用URL重写的形式修改了当前请求的地址,即将针对目录的URL修改成针对默认文件的URL.[本文已经同步到<ASP.NET Cor

cocos2dx --- 在游戏中显示HTML页面

前文介绍了简单的富文本组件RichText,现在我们来了解下由freeType库做出来的第三方组件,可以直接显示html页面,并且能够实现超链接,和触摸事情. 步骤: 1.在github中  下载   ,地址再贴下: https://github.com/happykevins/cocos2dx-ext   , 下载这个项目,github的下载方式自行百度. 2.将下载的文件中的extensions 目录下面的cells.dfont.RichControls 这三个文件夹和 renren-ext

最老程序员创业开发实训8---IOS---在Swift中用定时任务显示Splash页面

在上一节中,我们用Swift实现了Splash页面的显示,但是仅仅显示Splash页面是不够的,我们需要显示Splash页面2秒,然后跳转到下一个页面,因此需要实现定时任务的功能.在Android中,我们采用了系统的函数postDelayed来实现这一功能,在IOS系统中,我们需要使用GCD. 首先我们简单了解一下GCD.我们知道,对于手机而言,多核CPU用得越来越多,这样真正的多任务就是益成为现实,因为每个CPU核都可以独立地执行单独的任务.GCD正是为了使程序员更方便地使用多核CPU而引入的

用CSS实现一个简单的幻灯片效果页面

用CSS实现一个简单的幻灯片效果页面,第一反应是利用CSS3的animation.不过为了兼容浏览器,记得加各浏览器前缀("chrome和safira:-webkit-"."firefox:-moz-"."opera:-o-"),我最开始写的时候忘记加浏览器前缀,在chrome中一直没有任何显示.下面说说用到的animation各属性.animation-name(动画名字,需用引号包裹)animation-duration(动画持续时间,如:2

首次使用photoshop制作简单的静态网页页面

刚刚进入IT领域,我首先接触到的是PhotoShop软件.经过一周的学习,我对PS软件已经有了初步的认识.PS首先是一款修图软件,对于图片中不太美观的地方可以按照自己的想法做任意的修改,利用"蒙版"工具可以做图片间的融合,这给我们提供了巨大的创作空间:其次,它可以进行图片和动画的制作,静态网页页面和多张图片的联动动画都可以在这里完成. 周五我做了两个简单的静态网页页面:网上购物的注册界面和登录页面,也借此检测一下自己对PS软件的掌握程度.在制作过程中,我发现许多问题并从中总结到了一些经

简单的在jsp页面操作mysql

---恢复内容开始--- 上一篇讲了在DOS界面下操作mysql 现在我们来说说怎么在jsp页面中操作mysql 要用jsp页面操作mysql需要jdbc(不是非要jdbc,还有其他的) 下载地址:www.oracle.com 移动到最下面,找到下面这四个框,点那个标记起来的 在左侧找到这个并点击 然后点击下面两个任意一个,都是调到同一个界面 在下面找到两个东西 随便选择一个点击下载,点那两个大的按钮会叫你登录,我们点下面那个"No thanks,just start my download&q

ASP.NET定制简单的错误处理页面

通常Web应用程序在发布后,为了给用户一个友好界面和使用体验,都会在错误发生时跳转至一个自定义的错误页面,而不是ASP.net向用户暴露出来的详细的异常列表. 简单的错误处理页面可以通过web.config来设置 以下为引用的内容:<customErrors mode="RemoteOnly" defaultRedirect="GenericErrorPage.htm">  <error statusCode="403" red