阐述
去年在与大厂的交手中,碰到了如何测量函数耗时这类的问题。最近正好有点空余时间供我研究并整理它们,希望这次整理出的东西能给大家带来一点帮助。
探讨
测量函数耗时所用的方法有很多种,这次我们先来介绍 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上可以确保它的行为,并且它包含系统时钟所拥有的全部时间区域,精度达到纳秒级。
(注: 时钟嘀嗒数在每次手