This documentation is automatically generated by online-judge-tools/verification-helper
#include "library/misc/timer.hpp"
#pragma once
namespace felix {
struct timer {
public:
void start() {
origin = rdtsc();
}
inline double get_time() const {
return (rdtsc() - origin) * SECONDS_PER_CLOCK;
}
private:
constexpr static double SECONDS_PER_CLOCK = 1.0 / 3E9;
unsigned long long origin;
inline static unsigned long long rdtsc() {
unsigned long long lo, hi;
__asm__ volatile("rdtsc" : "=a" (lo), "=d" (hi));
return (hi << 32) | lo;
}
};
} // namespace felix
#line 2 "library/misc/timer.hpp"
namespace felix {
struct timer {
public:
void start() {
origin = rdtsc();
}
inline double get_time() const {
return (rdtsc() - origin) * SECONDS_PER_CLOCK;
}
private:
constexpr static double SECONDS_PER_CLOCK = 1.0 / 3E9;
unsigned long long origin;
inline static unsigned long long rdtsc() {
unsigned long long lo, hi;
__asm__ volatile("rdtsc" : "=a" (lo), "=d" (hi));
return (hi << 32) | lo;
}
};
} // namespace felix