iOS 探讨之 mach_absolute_time

本文介绍了iOS中用于测量函数耗时的mach_absolute_time()函数,详细讲解了如何获取Mach绝对时刻以及如何将嘀嗒数转换为实际时间。内容包括Mach内核背景、获取系统嘀嗒数的方法和转换嘀嗒数为有意义时间的技巧,并提到了相关函数如CACurrentMediaTime()和mach_continuous_time()的使用。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

阐述

去年在与大厂的交手中,碰到了如何测量函数耗时这类的问题。最近正好有点空余时间供我研究并整理它们,希望这次整理出的东西能给大家带来一点帮助。

 

探讨

测量函数耗时所用的方法有很多种,这次我们先来介绍 mach_absolute_time() 相关。

 

什么是Mach?

Mach是一个用于支持操作系统研究的操作系统内核,后来被开发成UNIX中BSD的替代内核。

Mach名称野史:  (引自百度百科)

据Tevanian说,MACH,源于一个读音错误。当时他正和其他人在匹兹堡一个下雨天里一边躲避着路上的泥水坑,一边讨论着新内核的事,Tevanian开玩笑地建议他们的新微核命名为MUCK,意为“多用户通信内核”(Multi-User Communication Kernel)或“多通用通讯核心”(Multiprocessor Universal Communication Kernel)。而一个意大利同事错将MUCK发错音为MACH后,拉希德觉的不错并采用了MACH。

 

两个问题

Number 1 如何获取当前系统的Mach绝对时刻

mach_absolute_time()

返回一个基于系统启动后的时钟嘀嗒数,是一个CPU/总线依赖函数。在macOS上可以确保它的行为,并且它包含系统时钟所拥有的全部时间区域,精度达到纳秒级。

(注: 时钟嘀嗒数在每次手机重启后,都会重新开始计数,而且iPhone锁屏进入休眠之后,tick也会暂停计数)

 

N

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值