- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我正在为 OS X (Obj-C/Cocoa) 编写一个应用程序,它运行模拟并向用户显示结果。在一种情况下,我希望模拟“实时”运行,以便用户可以观看它以与现实生活中相同的速度运行。模拟以特定时间步长 dt 运行。现在,我正在使用 mach_absolute_time() 来减慢模拟速度。当我分析这段代码时,我发现到目前为止,我的大部分 CPU 时间都花在 mach_absolute_time() 上,并且我的 CPU 固定在 100%。我这样做对吗?我想,如果我放慢模拟速度,使得程序在大多数时间都没有模拟任何东西,那么 CPU 使用率应该会下降,但 mach_absolute_time() 显然不是一个“免费调用”,所以我觉得可能会有有更好的方法吗?
double nextT = mach_absolute_time();
while (runningSimulation)
{
if (mach_absolute_time() >= nextT)
{
nextT += dt_ns;
// Compute the next "frame" of the simulation
// ....
}
}
最佳答案
完全不要旋转。
这是编写 GUI 应用程序的首要规则,其中电池生命周期和应用程序响应能力很重要。
sleep()
或 nanosleep()
可以工作,但只有在主线程以外的其他地方使用。
更好的解决方案是使用 GCD 中任何基于时间的构造,因为这将更有效地利用系统资源。
如果您希望模拟对用户来说显得流畅,您确实需要将减慢版本锁定到屏幕的刷新率。在 iOS 上,有 CADisplayLink 。我不知道 Mac 上有直接等效的东西。
关于objective-c - 使用 mach_absolute_time() 减慢模拟速度。这是正确的方法吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8170622/
关于 Darwin,POSIX 标准 clock_gettime(CLOCK_MONOTONIC)定时器不可用。相反,最高分辨率的单调定时器是通过 mach_absolute_time 获得的。来自
我正在尝试在 iOS 上优化一个函数(FFT),并且我已经设置了一个测试程序来计算它在数百次调用中的执行时间。我在函数调用前后使用 mach_absolute_time() 来计时。我正在运行 iOS
我使用此代码来跟踪上次重新启动: + (float) secondsSinceLastReboot{ return ((float)(mach_absolute_time())) * ((f
我的 iOS 应用程序需要一个始终与我的服务器时钟同步的自定义时钟。所有的同步逻辑都完成了。 我的时钟基于 mach_absolute_time(),您可以从中计算自设备启动以来耗时。问题是当设备进入
我正在为 OS X (Obj-C/Cocoa) 编写一个应用程序,它运行模拟并向用户显示结果。在一种情况下,我希望模拟“实时”运行,以便用户可以观看它以与现实生活中相同的速度运行。模拟以特定时间步长
我的应用程序使用 mach_absolute_time 计算自上次触摸事件以来的滴答声,并在超过 10 分钟的空闲时间限制时将用户注销。 这在 iOS 6 上一切正常,但我注意到它在 iOS 7 上表
我是一名优秀的程序员,十分优秀!