Мне нравится иметь функцию с именем time_ms
, определенную так:
// Used to measure intervals and absolute times
typedef int64_t msec_t;
// Get current time in milliseconds from the Epoch (Unix)
// or the time the system started (Windows).
msec_t time_ms(void);
Реализация ниже должна работать как в Windows, так и в Unix-подобных системах.
#if defined(__WIN32__)
#include <windows.h>
msec_t time_ms(void)
{
return timeGetTime();
}
#else
#include <sys/time.h>
msec_t time_ms(void)
{
struct timeval tv;
gettimeofday(&tv, NULL);
return (msec_t)tv.tv_sec * 1000 + tv.tv_usec / 1000;
}
#endif
Обратите внимание, что время, возвращаемое ветвью Windows, составляет миллисекунды с момента запуска системы, а время, возвращаемое ветвью Unix, составляет миллисекунды с 1970 года. Таким образом, если вы используете этот код, полагайтесь только на разницу между временами, а не на абсолютную само время.