Используйте структуру struct timespec
и функцию clock_gettime
следующим образом, чтобы получить время выполнения кода с точностью до наносекунд
struct timespec start, end;
clock_gettime(CLOCK_REALTIME,&start);
/* Do something */
clock_gettime(CLOCK_REALTIME,&end);
Возвращает значение как ((((unsigned64)start.tv_sec) * ((unsigned64)(1000000000L))) + ((unsigned64)(start.tv_nsec))))
Кроме того, я также использовал это для многопоточных концепций ..
Надеюсь, этот ответ будет более полезным для вас, чтобы получить желаемое время выполнения в наносекундах.