drv_hrt posix: improve performance for hrt_absolute_time()

Previously hrt_absolute_time() was at around 5% of the total CPU usage, now
it's around 0.35%.
This commit is contained in:
Beat Küng 2019-01-07 07:13:52 +01:00 committed by Julian Oes
parent ccefc640ac
commit ecbe2a3e0b

View File

@ -154,6 +154,11 @@ uint64_t hrt_system_time()
*/
hrt_abstime hrt_absolute_time()
{
#if defined(ENABLE_LOCKSTEP_SCHEDULER)
// optimized case (avoid ts_to_abstime) if lockstep scheduler is used
const uint64_t abstime = lockstep_scheduler.get_absolute_time();
return abstime - px4_timestart_monotonic;
#else // defined(ENABLE_LOCKSTEP_SCHEDULER)
struct timespec ts;
px4_clock_gettime(CLOCK_MONOTONIC, &ts);
#ifdef __PX4_QURT
@ -161,6 +166,7 @@ hrt_abstime hrt_absolute_time()
#else
return ts_to_abstime(&ts);
#endif
#endif // defined(ENABLE_LOCKSTEP_SCHEDULER)
}
#ifdef __PX4_QURT