iOS准确的测量系统执行时间:在iOS的开发过程中,经常会为了满足严苛的用户体验要求,需要对某些功能和模块的执行时间进行控制,那么问题来了,如何高效的检测代码的执行时间
涉及的API
先来认识几个API,他们被包含在
<mach/mach_time.h>
在使用前我们需要先
进入mach_time.h文件,我们可以看到如下内容
首先定义了一个mach_timebase_info的结构体,用来存储CPU的一些执行信息,改结构体包含两个成员
- numer 直译为分子
- denom直译为分母
具体用法后边会有所描述,各位看官可以先继续往下看
mach_timebase_info(mach_timebase_info_t info)
方法用来初始化一个mach_timebase_info的对象
mach_wait_until(uint64_t deadline);
用来挂起线程等待deadline时唤醒
mach_absolute_time(void)
获取当前的绝对时间
mach_approximate_time(void)
获取当前的大概时间,如果可以忍受一点误差就可以选用该方法,后边会有对比
如何使用
结果显示为:消耗时间4822588154
当然这个时间不是实际消耗时间,而是CPU的运行周期数,我们要获取实际运行时间,还需要做一些处理
numer 、denom怎么用
举个例子吧,假设numer = 100;denom = 10;则表示一个CPU时钟周期为100/10=10(单位为纳秒)
所以要得到准确时间,我们需要添加如下代码:
结果显示为:消耗时间5087630559 ,注意这里单位为纳秒,即正确时间为5.08秒.
mach_approximate_time的返回结果
结果显示为:消耗时间6939457729,即6.9秒