计算帧速率
来源:互联网 发布:avalon.js 被抛弃了吗 编辑:程序博客网 时间:2024/06/10 15:31
作者:StrongCoding
邮箱:StrongCoding@qq.comDX群:130302441
若文中有误,请告知.十分感谢.一起加油.
在测试软件中,我们经常需要查看程序的渲染速度是否合理,所以,我们就有必要记录一下程序在大于等于1秒的持续调用某函数的情况 下,需要记录下该函数到底被调用了多少次,以此来反馈帧速率。为了实现这个目的,我们需要这样子做:
实现思路:
1、首先记录下程序在一开始进入While循环的时候,并且没有响应任何事件的时候,需要保存一下当前的时间值A。然后当程序 再次执行到该处时又得到了一个当前程序的运行时B。因此B-A,就是程序再次路过没有响应事件的时间调用差值C
2、再一个我们需要一个函数来专门的统计帧速率,在准备这个函数之前呢,我们需要有两个重要的计数器:
(1)计算时间差的计数器static float AllTimes
(2)计算总帧速率的计数器 static int FrameCounts
这是计算帧速率最关键的两个变量. OK,由于C会不停的传入到帧速率函数中,且时间差AllTimes+=C, FrameCounts++
解释:
有的人认为,当程序走到统计帧速率函数的时候,意味着就可以计算帧速率了,其实不然,因为当今的CPU运行速度 太快了,这个函数在一秒内会被调用数不清的次数,至少我是数不过来呵呵. 还有就是由于该帧速率函数在1秒内会被不停 调用N次,所以传入的值绝对不会超过1秒,除非你的机子已经烂的不行了。所以,我们需要统计出,在一秒内,我们的程 序到底调用了多少次,所以就有了我们的FrameCounts++;而后,我们需要累加这些短的不能再短的时间,直到攒的这 些碎时间达到一秒或者稍微超过点,这时候,我们才能在一秒内,平均统计下该函数的调用速率:
我们用float FPS保存: FPS = (float)(FrameCounts / AllTimes); 这样我们就得到了我们想要的帧速率。
再一个,就是计算出来后,我们总不能调试查看吧,所以,我们需要把它打印到屏幕上,怎么实现字体这块就不说 了,因为FPS是一个float型的,我们不能直接打印,需要将其转换成字符串形式,好吧那就定义成char数组吧:
char Fps[9];
利用C语言格式化一下:sprintf( Fps, "%f", FPS );
Fps[8] = "/0";
OK,转换完成,这时候你就可以直接打印到屏幕了。
最后一个你需要收尾:将两个计数器归0。
看下效果吧,呵呵.
- 计算帧速率
- javascript canvas fps 帧速率计算
- 5.2_帧速率的计算
- 网络传输速率计算
- 宽带速率计算
- 速率的计算
- qam调制速率计算
- 802.11速率计算
- MCS速率计算公式
- VelocityTracker计算速率
- 网络带宽、速率计算
- 码元速率的计算
- LTE峰值速率的计算
- LTE:下行峰值速率计算
- 图象速率及采集的计算公式
- 图象速率及采集的计算公式
- 香农定理 (modem速率的计算)
- TS解扰速率计算公式备忘
- [zt] (菜鸟问题)指针为什么要用malloc不明白?
- [zt] 有了malloc/free为什么还要new/delete?
- [IE9] IE9正式版发布(附官方下载链接)
- 在VMWare上跑openwrt
- [zt] 指针与数组的对比
- 计算帧速率
- [zt] C++内存管理
- 聊一聊DX字体
- 每日一练(python版本)
- [zt] 静态局部变量
- [zt] C++指针
- SQL Server 2008 R2 x64连接Oracle解决方案
- 闻道
- 设计模式 - 观察者