背景
用户反馈在使用APP过程中设备发烫变卡,我猜测是因为温度过高导致CPU降频了,但是iOS系统是没有提供获取其时钟频率的接口,所以我就查资料自己尝试了一下
通过汇编语言计算得出iOS设备CPU的实时频率
下面介绍如何获取
在AppDelegate.m
里面加入如下内容:
1.把汇编文件cpuFrequ.s导入到项目中,将freqTest函数声明到AppDelegate.m里面;
2.计算500次,然后取其中时间最少的一次,从而排除系统干扰,得到最高的频率值;
3.每一次调用都是传循环参数10000,也就是执行add指令130*10000次,因此最后算频率的时候是1300000/time,也就是单位时间(s)内执行cycles的数量!!!
1 | extern int freqTest(int cycles); |
汇编部分的代码如下:
1 | .text |
到这就可以测试设备的实时CPU时钟频率了,我的测试方法是将App跑起来进入一个页面,获取一下此时的时钟频率,然后在该页面执行耗CPU的操作,观测CPU的占用率达到50%左右,此时设备会发烫,持续一段时间,然后销毁这个这页面(退出页面),之后定时获取CPU时钟频率,对比数据就可以判定是不是降频了.