- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
要在 iOS 上获得准确的时间测量值,应使用 mach_absolute_time()
。或 CACurrentMediaTime()
,它基于 mach_absolute_time()
。这记录在 this Apple Q&A 中,并在多个 StackOverflow 答案中进行了解释(例如 https://stackoverflow.com/a/17986909 、 https://stackoverflow.com/a/30363702 )。
mach_absolute_time()
返回的值什么时候回绕? CACurrentMediaTime()
返回的值何时回绕?这会发生在任何现实的时间跨度内吗? mach_absolute_time()
的返回值是 uint64
类型,但我不确定它如何映射到实际时间跨度。
最佳答案
您引用的文档指出 mach_absolute_time
依赖于 CPU,因此我们不能说它回绕之前必须经过多少时间。在模拟器上,mach_absolute_time
为纳秒,因此如果它在 UInt64.max
处回绕,则转换为 585 年。在我的 iPhone 7+ 上,它是每秒 24,000,000 mac_absolute_time
,也就是 24,000 年。底线是,mach_absolute_time
捕获的理论最大时间量会因 CPU 的不同而有所不同,但在任何实际应用中都不会遇到这种情况。
就其值(value)而言,与您发现的各种帖子一致,CFAbsoluteTimeGetCurrent
documentation警告:
Repeated calls to this function do not guarantee monotonically increasing results. The system time may decrease due to synchronization with external time references or due to an explicit user change of the clock.
因此,如果您想要准确的耗时,您绝对不想使用 NSDate
/Date
或 CFAbsoluteTimeGetCurrent
。两者都不能确保值单调递增。
简而言之,当我需要那种行为时,我通常使用 CACurrentMediaTime
,因为它享有 mach_absolute_time
的好处,但它为我将其转换为秒,这使得它使用起来非常简单。它和 mach_absolute_time
都不会在任何实际时间段内循环。
关于ios - (什么时候)CACurrentMediaTime/mach_system_time 在 iOS 上环绕?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45551087/
要在 iOS 上获得准确的时间测量值,应使用 mach_absolute_time()。或 CACurrentMediaTime(),它基于 mach_absolute_time()。这记录在 thi
我是一名优秀的程序员,十分优秀!