mc_rtc  2.14.0
clock.h
Go to the documentation of this file.
1 /*
2  * Copyright 2015-2022 CNRS-UM LIRMM, CNRS-AIST JRL
3  */
4 
5 #pragma once
6 
7 #include <chrono>
8 #include <type_traits>
9 #include <utility>
10 
11 namespace mc_rtc
12 {
13 
14 using duration_ms = std::chrono::duration<double, std::milli>;
15 using duration_us = std::chrono::duration<double, std::micro>;
16 
18 using clock = typename std::conditional<std::chrono::high_resolution_clock::is_steady,
19  std::chrono::high_resolution_clock,
20  std::chrono::steady_clock>::type;
21 
31 template<typename F, typename... Args>
32 static mc_rtc::duration_ms timedExecution(F && func, Args &&... args)
33 {
34  auto start = mc_rtc::clock::now();
35  func(std::forward<Args>(args)...);
36  return std::chrono::duration_cast<mc_rtc::duration_ms>(mc_rtc::clock::now() - start);
37 }
38 
39 inline double duration_ms_count(std::chrono::time_point<mc_rtc::clock> start,
40  std::chrono::time_point<mc_rtc::clock> end)
41 {
42  return mc_rtc::duration_ms(end - start).count();
43 }
44 
45 inline mc_rtc::duration_ms elapsed_ms(std::chrono::time_point<mc_rtc::clock> start)
46 {
47  return mc_rtc::duration_ms(mc_rtc::clock::now() - start);
48 }
49 
50 inline double elapsed_ms_count(std::chrono::time_point<mc_rtc::clock> start)
51 {
52  return mc_rtc::elapsed_ms(start).count();
53 }
54 } // namespace mc_rtc
Definition: Contact.h:88
double duration_ms_count(std::chrono::time_point< mc_rtc::clock > start, std::chrono::time_point< mc_rtc::clock > end)
Definition: clock.h:39
typename std::conditional< std::chrono::high_resolution_clock::is_steady, std::chrono::high_resolution_clock, std::chrono::steady_clock >::type clock
Definition: clock.h:20
double elapsed_ms_count(std::chrono::time_point< mc_rtc::clock > start)
Definition: clock.h:50
mc_rtc::duration_ms elapsed_ms(std::chrono::time_point< mc_rtc::clock > start)
Definition: clock.h:45
std::chrono::duration< double, std::micro > duration_us
Definition: clock.h:15
std::chrono::duration< double, std::milli > duration_ms
Definition: clock.h:14