Как записать метки времени в программе Mac OS X C ++? - PullRequest
1 голос
/ 30 января 2010

Я управляю гигантским симулятором / с графическим движком.

Есть много событий, которые летят.

Я хотел бы отметить их время (измеряется в миллисекундах с начала выполнения программы).

Что я должен использовать для этого? [Какая библиотека?]

Ответы [ 2 ]

3 голосов
/ 30 января 2010

Поскольку Mac OS X основана на Unix, попробуйте gettimeofday().Он вернет секунды и микросекунды, вплоть до разрешения системных часов.

#include <sys/types.h>    
int gettimeofday(struct timeval *tv, struct timezone *tz);

struct timeval {
    time_t      tv_sec;     /* seconds */
    suseconds_t tv_usec;    /* microseconds */
};
2 голосов
/ 31 января 2010

gettimeofday () в основном будет работать нормально, но это может привести к аномалиям, например, когда пользователь меняет системную дату / время. Лучший способ был бы такой:

#include <CoreServices/CoreServices.h>

unsigned long long GetTimeSinceBootInMilliseconds()
{
   UnsignedWide uw = AbsoluteToNanoseconds(UpTime());
   return ((((unsigned long long)uw.hi)<<32)|(uw.lo))/1000000;
}

Обратите внимание, что значения, возвращаемые этой функцией, будут в миллисекундах с момента загрузки, поэтому, если вы хотите получить миллисекунды с момента запуска программы, вызовите этот метод один раз при запуске программы, сохраните это значение и вычтите его из более поздних результатов. .

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...