tsc_clock#

Fully qualified name: carb::clock::tsc_clock

Defined in carb/clock/TscClock.h

class tsc_clock#

Static class for a CPU time-stamp clock.

The functions and types within this class are used for sampling the CPU’s time-stamp counter—typically a clock- cycle resolution clock directly within the CPU hardware.

Public Types

using Sample = ::carb::Strong<uint64_t, struct SampleSig>#

Type definition of a sample from the CPU time-stamp counter.

The time units of this are unspecified. Use Freq to determine the frequency of the time-stamp counter.

using Freq = ::carb::Strong<uint64_t, struct FreqSig>#

The frequency of the timestamp counter, that is, the number of Samples per second.

Public Static Functions

static inline Sample sample() noexcept#

Read a sample from the CPU time-stamp clock.

Note that this operation is intended to be as fast as possible to maintain accuracy.

Returns:

a time-stamp Sample at the time the function is called.

static inline Freq frequency() noexcept#

Computes the frequency of the CPU time-stamp clock.

The first call to this function can take longer as the CPU time-stamp clock is calibrated.

Note

This implementation assumes that the frequency never changes. Please verify with your CPU architecture that this assumption is correct.

Returns:

the computed Freq of the CPU time-stamp clock.

template<class Duration>
static inline Duration duration(
Sample older,
Sample newer,
) noexcept#

Computes the difference of two samples as a std::chrono::duration.

Template Parameters:

Duration – a std::chrono::duration template to convert to.

Parameters:
  • older – The older (starting) sample

  • newer – The newer (ending) sample

Returns:

The difference in timestamps as the requested Duration representation