Как получить текущую метку времени в наносекундах в C++ без использования хронографа?
Поскольку chrono не поддерживается в инструменте Network Simulator -3, мне нужно кодировать на C++ без использования chrono, чтобы получить метку времени в наносекундах.
1 ответ
На Ubuntu 64 я использую POSIX
uint64_t MNS::getSystemNanosecond(void)
{
const uint64_t NSPS = 1000000000;
//struct timespec { __time_t tv_sec; long int tv_nsec; }; -- total 8 bytes
struct timespec ts;
// CLOCK_REALTIME - system wide real time clock
int status = clock_gettime(CLOCK_REALTIME, &ts);
dtbAssert(0 == status);
// to 8 byte from 4 byte
uint64_t uli_nsec = static_cast<uint64_t>(ts.tv_nsec);
uint64_t uli_sec = static_cast<uint64_t>(ts.tv_sec);
uint64_t total_ns = uli_nsec + (uli_sec * NSPS);
return(total_ns);
}
использование:
uint64_t startNS = MNS::getSystemNanosecond()
//... do stuff that takes time
uint64_t durationNS = MNS::getSystemNanosecond() - startNS;