7 #ifndef swcdb_core_Time_h
8 #define swcdb_core_Time_h
27 std::ratio_less_equal<
28 std::chrono::system_clock::duration::period,
29 std::chrono::nanoseconds::period
37 return std::chrono::duration_cast<std::chrono::milliseconds>(
38 std::chrono::system_clock::now().time_since_epoch()).count();
44 return std::chrono::duration_cast<std::chrono::nanoseconds>(
45 std::chrono::system_clock::now().time_since_epoch()).count();
48 int64_t
parse_ns(
int& err,
const std::string& buf);
50 std::string
fmt_ns(int64_t ns);
54 template<
typename ClockT,
typename DurationT>
55 struct Measure : std::chrono::time_point<ClockT> {
59 : std::chrono::time_point<ClockT>(ClockT::now()) {
63 Measure(
typename std::chrono::time_point<ClockT>::duration&& v) noexcept
64 : std::chrono::time_point<ClockT>(v) {
69 std::chrono::time_point<ClockT>::operator=(ClockT::now());
72 template<
typename T = DurationT>
75 return std::chrono::duration_cast<T>(ClockT::now() - *
this).count();
80 typedef Measure<std::chrono::steady_clock, std::chrono::nanoseconds>
94 #ifdef SWC_IMPL_SOURCE
98 #endif // swcdb_core_Time_h