cpu帧数测试软件,一行代码监测FPS/内存/CPU
原标题:一行代码监测FPS/内存/CPU
“没错,就是他。”
项目开发都会做一些调试,比如看看FPS的情况。
网上有不少工具,自己就参考做了一个比较简单的工具WHDebugTool,可以监测内存,CPU和FPS。
GitHub地址:https://github.com/remember17/WHDebugTool
WHDebugTool
1、快速使用
1.1 pod或直接把文件拖入项目
如果pod找不到WHDebugTool,就先pod setup
pod'WHDebugTool', '~> 1.1'
1.2 导入头文件
如果是pod进项目:
#import
如果是直接把文件拖入项目:
#import "WHDebugToolManager.h"
1.3 调用开关方法
一行代码开启或关闭监测。
// 这个方法调用的时候会判断监测是不是处于打开的状态,如果打开了则关闭,如果没有打开就开启。
[ [WHDebugToolManager sharedInstance] toggleWith:DebugToolTypeAll];
1.4 可选:也可以通过如下方式初始化和关闭
// 打开
- ( void)showWith:(DebugToolType)type;
// 关闭
- ( void)hideWith:(DebugToolType)type;
2. 参数说明
初始化方法中带有一个枚举参数
这个参数可以让三种监测随意组合。例如只想要监测FPS,就传入DebugToolTypeFPS
DebugToolTypeAll = 0, // FPS & Memory & CPU
DebugToolTypeFPS, // FPS
DebugToolTypeMemory, // Memory
DebugToolTypeCPU, // CPU
DebugToolTypeFPSMemory, // FPS & Memory
DebugToolTypeFPSCPU, // FPS & CPU
DebugToolTypeCPUMemory, // Memory & CPU
3. 实现方法
3.1 FPS实现方法(参考了YYKit中的检测工具)
首先简单介绍一下FPS:
FPS的意思是:每秒传输帧数(刷新率)。
值越高,画面越流畅,值越低越卡顿。
下面来看一下iOS实现检测FPS的原理:
主要用的是CADisplayLink:一个和屏幕刷新率相同定时器。
创建CADisplayLink对象的时候会指定一个selector,把创建的CADisplayLink对象加入runloop,所以就实现了以屏幕刷新的频率调用某个方法。
在调用的方法中计算执行的次数,用次数除以时间,就算出了FPS。
注:iOS正常刷新率为每秒60次。
- ( void)setDisplayLink {
// 初始化CADisplayLink
_displayLink = [ CADisplayLinkdisplayLinkWithTarget: selfselector: @selector(displayLinkTicks:)];
// 把CADisplayLink对象加入runloop
[_displayLink addToRunLoop:[ NSRunLoopcurrentRunLoop] forMode: NSRunLoopCommonModes];
}
- ( void)displayLinkTicks:( CADisplayLink*)link {
// 累加方法执行的次数
_performTimes ++;
if(_lastTimestamp == 0) {
_lastTimestamp = link.timestamp;
return;
}
// 记录执行的时间
NSTimeIntervalinterval = link.timestamp - _lastTimestamp;
// 当时间经过一秒的时候再计算FPS,否则计算的太过频繁
if(interval >= 1) {
// iOS正常刷新率为每秒60次,执行次数/时间
floatfps = _performTimes / interval;
// 重新初始化记录值
_performTimes = 0;
_lastTimestamp = link.timestamp;
// 把计算的值传出去
if( self.fpsBlock) {
self.fpsBlock(fps);
}
}
}
3.2 内存监测实现方法
- ( float)getUsedMemory {
task_basic_info_data_ttaskInfo;
mach_msg_type_number_tinfoCount = TASK_BASIC_INFO_COUNT;
kern_return_tkernReturn = task_info(mach_task_self(),
TASK_BASIC_INFO,
( task_info_t)&taskInfo,
&infoCount);
if(kernReturn != KERN_SUCCESS) { returnNSNotFound; }
returntaskInfo.resident_size/ 1024.0/ 1024.0;
}
3.3 CUP检测实现方法
floatcpu_usage(){
kern_return_tkr;
task_info_data_ttinfo;
mach_msg_type_number_ttask_info_count;
task_info_count = TASK_INFO_MAX;
kr = task_info(mach_task_self(), TASK_BASIC_INFO, ( task_info_t)tinfo, &task_info_count);
if(kr != KERN_SUCCESS) {
return-1;
}
task_basic_info_tbasic_info;
thread_array_tthread_list;
mach_msg_type_number_tthread_count;
thread_info_data_tthinfo;
mach_msg_type_number_tthread_info_count;
thread_basic_info_tbasic_info_th;
uint32_tstat_thread = 0;
basic_info = ( task_basic_info_t)tinfo;
kr = task_threads(mach_task_self(), &thread_list, &thread_count);
if(kr != KERN_SUCCESS) {
return-1;
}
if(thread_count > 0)
stat_thread += thread_count;
longtot_sec = 0;
longtot_usec = 0;
floattot_cpu = 0;
intj;
for(j = 0; j < thread_count; j++)
{
thread_info_count = THREAD_INFO_MAX;
kr = thread_info(thread_list[j], THREAD_BASIC_INFO,
( thread_info_t)thinfo, &thread_info_count);
if(kr != KERN_SUCCESS) {
return-1;
}
basic_info_th = ( thread_basic_info_t)thinfo;
if(!(basic_info_th->flags & TH_FLAGS_IDLE)) {
tot_sec = tot_sec + basic_info_th->user_time.seconds + basic_info_th->system_time.seconds;
tot_usec = tot_usec + basic_info_th->user_time.microseconds + basic_info_th->system_time.microseconds;
tot_cpu = tot_cpu + basic_info_th->cpu_usage / ( float)TH_USAGE_SCALE * 100.0;
}
}
kr = vm_deallocate(mach_task_self(), ( vm_offset_t)thread_list, thread_count * sizeof( thread_t));
assert(kr == KERN_SUCCESS);
returntot_cpu;
}
后记
WHDebugTool
内存监测的值与Xcode给的有出入,所以这些工具给出的值仅供参考。
CUP和FPS的检测结果相对来说比较接近。
我的GitHub:https://github.com/remember17返回搜狐,查看更多
作者:remember17
https://www.jianshu.com/p/0d94a81a31db
iOS开发整理发布,转载请联系作者获得授权
责任编辑:
cpu帧数测试软件,一行代码监测FPS/内存/CPU相关推荐
- 小米11帧数测试软件,小米11Ultra外观、跑分、配置性能及拍照效果全面测评
小米11Ultra这款手机时昨天刚推出的手机,那么这款手机到底怎么样呢,今天小编对这款手机的外观.跑分.配置性能及拍照效果做了全面的测评,感兴趣的用户一起看看吧. 小米11Ultra全面测评详情 外观 ...
- 华为nova3游戏帧数测试软件,中端机游戏体验测试,OPPO K1与华为nova 3谁更胜一筹?...
原标题:中端机游戏体验测试,OPPO K1与华为nova 3谁更胜一筹? 元旦将至,新的一年即将到来,回顾2018,今年的各大手机品牌纷纷推出了令人耳目一新的旗舰机型.相比之下,中端机的市场也是出奇的 ...
- ps4帧数测试软件,《地平线:零之黎明》PS4/Pro帧数测试 优化极佳
索尼发行的 PS4 第一方大作<地平线:零之黎明>(Horizon Zero Dawn)即将于 2 月 28 日正式上市,近日热衷于画面测试的外媒 DigitalFoundry 放出了本作 ...
- 华为nova3游戏帧数测试软件,华为nova3最全游戏体验报告:手游玩家一定不能错过...
华为nova3搭载麒麟970人工智能芯片,并支持GPU Turbo.4D智能震撼.游戏免打扰等专为提升游戏体验的技术,那Nova3的实际游戏体验到底如何呢? 楼主选择了三款游戏进行测试,分别为王者荣耀 ...
- 断点帧数测试软件,《幽灵行动:断点》PC版性能表现分析
<幽灵行动:断点>是系列最新作品,本作采用AnvilNext 2.0引擎,外媒DSOGaming今天评测了它在PC上的性能表现. 以下是文章全文: 本次PC性能测试分析我们使用的是Inte ...
- 塔科夫帧数测试软件,2070S帧数实测-2060S帧数实测-2060帧数实测-测试显卡、平台及游戏设置-索泰图灵架构显卡《逃离塔科夫》帧数对比实测_游戏硬件_游侠网...
相对更为进阶的索泰RTX 2070 Super X-Gaming OC可以说是稳妥站在显卡发烧级这一阶层的产品了,就连笔者本人的电脑也装备着这款显卡.然而不吹不黑,这款显卡由于与2060S有着同样大小 ...
- 渡神纪帧数测试软件,渡神纪芬尼斯崛起配置要求高吗 渡神纪配置要求详细介绍_游侠网...
渡神纪芬尼斯崛起配置要求高吗?本作将在12月3日登陆主机和PC,很多玩家比较关心游戏的配置,这里给大家带来了渡神纪配置要求详细介绍,快来了解下吧. 渡神纪配置要求详细介绍 最低要求(720p/30 f ...
- 渡神纪帧数测试软件,育碧《渡神纪》PC配置要求公布 最低只要i5+GTX 660
育碧全新原创IP<渡神纪:芬尼斯崛起>PC配置要求现在已经公布,这款开放世界游戏只要i5-2400.GTX 660就能以低画质游玩,官方分4个等级介绍了配置需求.游戏支持超宽屏.多屏显示. ...
- 渡神纪帧数测试软件,渡神纪芬尼斯崛起配置 渡神纪配置要求
育碧今日公布了旗下神话动作游戏<渡神纪 芬尼斯崛起>的具体配置需求信息以及 PC 版本特性的介绍视频.视频中说明到,游戏采用了经过调整的 Anvil 引擎来适配各种不同的平台,使用 DX1 ...
最新文章
- 三层架构的原理及实现
- module 'schedule' has no attribute 'every
- 【深度学习】449页pdf,FaceBook称其迈出“重塑AI科学的第一步”
- 【若依(ruoyi)】验证码
- 滑动窗口在重构数据集的作用
- mongodb数据库的备份与恢复
- Forrester云原生开发者洞察白皮书,低代码概念缔造者又提出新的开发范式
- Xcode5 使用gitHub上库的SSH地址建立Repository,以及如何通过Xcode把代码传到GitHub
- java调用机器上的shell脚本
- C/C++头文件全解析
- 激活策略 查询_苹果手机未激活也可能不是原装货,激活过的手机到底能不能买?...
- matlab二元一次方程求解_方程的计算机处理913_Matlab
- lintcode-76-最长上升子序列
- python接口自动化代码_python接口自动化(十六)--参数关联接口后传(详解)
- java get 和post_[Java教程]get和post方法的区别
- 监狱干警定位管理系统
- 每日新知——MySQL索引类型及创建
- html图片点击加边框颜色代码,用HTML代码给图片添加边框方法
- 所有学java的女生都进来看看
- 屏幕录制软件camtasia studio 8序列号激活
热门文章
- 仿牛客社区——开发社区搜索功能
- unifiedremote 手机遥控器
- Android多进程(一)—— 开启多进程
- 冲突管理的6种方法归纳
- 程序员最浪漫的表白方式,将情书写在她的照片里,Python简直太厉害啦~
- 最新目的地扩增使AVOXI成为全球最大的虚拟电话号码覆盖区域
- Android 29: remount failed
- order_by_、group_by_、having的用法区别
- mysql宿舍水电管理系统_宿舍水电管理系统
- 必须用计算机吗,路由器可以不用电脑吗_路由器一定要连接电脑吗-系统城