1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84
| // reference from: https://github.com/Project-OSRM/osrm-backend
#ifndef TIME_UTILS_H_ #define TIME_UTILS_H_
#include "chrono"
// Recording start #define TIMER_START(_X) auto _X##_start = std::chrono::steady_clock::now(), _X##_stop = _X##_start
// Recording end #define TIMER_STOP(_X) _X##_stop = std::chrono::steady_clock::now()
// return duration time with nanosecond #define TIMER_NSEC(_X) \ std::chrono::duration_cast<std::chrono::nanoseconds>(_X##_stop - _X##_start).count()
// return duration time with microsecond #define TIMER_USEC(_X) \ std::chrono::duration_cast<std::chrono::microseconds>(_X##_stop - _X##_start).count()
// return duration time with millisecond #define TIMER_MSEC(_X) \ (0.000001 * \ std::chrono::duration_cast<std::chrono::nanoseconds>(_X##_stop - _X##_start).count())
// return duration time with seconds #define TIMER_SEC(_X) \ (0.000001 * \ std::chrono::duration_cast<std::chrono::microseconds>(_X##_stop - _X##_start).count())
// return duration time with minutes #define TIMER_MIN(_X) \ std::chrono::duration_cast<std::chrono::minutes>(_X##_stop - _X##_start).count()
#define ERROR(...) \ do{ \ fprintf(stderr, "[ERROR ]%s %s(Line %d): ",__FILE__,__FUNCTION__,__LINE__); \ fprintf(stderr, __VA_ARGS__); \ fprintf(stdout, "\n"); \ }while (0)
#define WARNING(...) \ do{ \ fprintf(stdout, "[WARNING]%s %s(Line %d): ",__FILE__,__FUNCTION__,__LINE__); \ fprintf(stdout, __VA_ARGS__); \ fprintf(stdout, "\n"); \ }while (0)
#define INFO(...) \ do{ \ fprintf(stdout, "[INFO ]%s %s(Line %d): ",__FILE__,__FUNCTION__,__LINE__); \ fprintf(stdout, __VA_ARGS__); \ fprintf(stdout, "\n"); \ }while (0)
#ifdef DEBUG #define DBG(...) \ do{ \ fprintf(stdout, "[DEBUG ]%s %s(Line %d): ",__FILE__,__FUNCTION__,__LINE__); \ fprintf(stdout, __VA_ARGS__); \ fprintf(stdout, "\n"); \ }while(0)
// Recording start #define DBG_TIMER_START(_X) auto _X##_start = std::chrono::steady_clock::now(), _X##_stop = _X##_start
// Recording end #define DBG_TIMER_STOP(_X) _X##_stop = std::chrono::steady_clock::now()
#define DBG_TIMER_MSEC(_X) \ (0.000001 * \ std::chrono::duration_cast<std::chrono::nanoseconds>(_X##_stop - _X##_start).count()) #else #define DBG(...) #define DBG_TIMER_START(_X) #define DBG_TIMER_STOP(_X) #define DBG_TIMER_MSEC(_X) #endif
#endif //TIME_UTILS_H_
|