The ROme OpTimistic Simulator  2.0.0
A General-Purpose Multithreaded Parallel/Distributed Simulation Platform
timer.h
Go to the documentation of this file.
1 
31 #pragma once
32 
33 #include <time.h>
34 #include <sys/time.h>
35 
36 typedef struct timeval timer;
37 
38 #define timer_start(timer_name) gettimeofday(&timer_name, NULL)
39 
40 #define timer_restart(timer_name) timer_start(timer_name)
41 
42 #define timer_value_seconds(timer_name) ((double)timer_value_milli(timer_name) / 1000.0)
43 
44 #define timer_value_milli(timer_name) ({\
45  struct timeval __rs_tmp_timer;\
46  int __rs_timedif;\
47  gettimeofday(&__rs_tmp_timer, NULL);\
48  __rs_timedif = __rs_tmp_timer.tv_sec * 1000 + __rs_tmp_timer.tv_usec / 1000;\
49  __rs_timedif -= timer_name.tv_sec * 1000 + timer_name.tv_usec / 1000;\
50  __rs_timedif;\
51  })
52 
53 #define timer_value_micro(timer_name) ({\
54  struct timeval __rs_tmp_timer;\
55  int __rs_timedif;\
56  gettimeofday(&__rs_tmp_timer, NULL);\
57  __rs_timedif = __rs_tmp_timer.tv_sec * 1000000 + __rs_tmp_timer.tv_usec;\
58  __rs_timedif -= timer_name.tv_sec * 1000000 + timer_name.tv_usec;\
59  __rs_timedif;\
60  })
61 
62 #define TIMER_BUFFER_LEN 64
63 #define timer_tostring(timer_name, string) do {\
65  time_t __nowtime;\
66  struct tm *__nowtm;\
67  __nowtime = (timer_name).tv_sec;\
68  __nowtm = localtime(&__nowtime);\
69  strftime((string), sizeof (string), "%Y-%m-%d %H:%M:%S", __nowtm);\
70  } while(0)