Я пишу приложение для OS X (Obj-C / Cocoa), которое запускает симуляцию и отображает результаты для пользователя. В одном случае я хочу, чтобы моделирование выполнялось в режиме «реального времени», чтобы пользователь мог наблюдать, как он проходит с той же скоростью, что и в реальной жизни. Симуляция выполняется с определенным временным шагом, dt. Прямо сейчас я использую mach_absolute_time (), чтобы замедлить симуляцию. Когда я профилирую этот код, я вижу, что большая часть времени моего процессора тратится в mach_absolute_time (), а мой процессор привязан к 100%. Я делаю это правильно? Я подумал, что если я замедляю симуляцию так, что программа большую часть времени ничего не симулирует, то загрузка ЦП должна быть снижена, но 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
// ....
}
}