+#define START_TIMER getrusage(RUSAGE_SELF, &start_time);
+#define STOP_TIMER getrusage(RUSAGE_SELF, &end_time);
+#define PRINT_TIME_USED cout << \
+ (end_time.ru_utime.tv_sec - start_time.ru_utime.tv_sec) + \
+ (end_time.ru_stime.tv_sec - start_time.ru_stime.tv_sec) + \
+ double(end_time.ru_utime.tv_usec - start_time.ru_utime.tv_usec) / 1e6 + \
+ double(end_time.ru_stime.tv_usec - start_time.ru_stime.tv_usec) / 1e6 \
+ << 's' << endl;
+#else
+static std::clock_t start_time, end_time;
+#define START_TIMER start_time = std::clock();
+#define STOP_TIMER end_time = std::clock();
+#define PRINT_TIME_USED \
+ cout << double(end_time - start_time)/CLOCKS_PER_SEC << 's' << endl;
+#endif