28 #ifndef UTILITIES_HEADER
29 #define UTILITIES_HEADER
34 #include <sys/resource.h>
37 #define EXTERN_C extern "C"
43 #define MAX_HOST_NAME_LEN 100
50 #define MAX_WORKING_DIRECTORY_LEN 800
64 double* residentMemGigaBytes,
65 double* virtualMemPeakGigaBytes);
78 double startTimeCPU_sys;
79 double startTimeCPU_usr;
82 double get_start_time_wall_seconds()
const {
87 if(gettimeofday(&tv, NULL) != 0)
88 throw std::runtime_error(
"Error in get_wall_seconds(), in gettimeofday().");
89 double seconds = tv.tv_sec + (double)tv.tv_usec / 1000000;
92 static void get_current_cpu_times(
double & seconds_usr,
double & seconds_sys) {
94 if(getrusage (RUSAGE_SELF, &
usage) != 0)
95 throw std::runtime_error(
"Error in get_current_cpu_times(), in getrusage().");
96 seconds_usr =
usage.ru_utime.tv_sec + (double)
usage.ru_utime.tv_usec / 1000000;
97 seconds_sys =
usage.ru_stime.tv_sec + (
double)
usage.ru_stime.tv_usec / 1000000;
101 get_current_cpu_times(startTimeCPU_usr, startTimeCPU_sys);
103 void print(
int area,
const char *routine) {
105 double secondsTakenWall = endTimeWall - startTimeWall;
106 double seconds_usr, seconds_sys;
107 get_current_cpu_times(seconds_usr, seconds_sys);
108 double secondsTakenCPU_usr = seconds_usr - startTimeCPU_usr;
109 double secondsTakenCPU_sys = seconds_sys - startTimeCPU_sys;
111 routine, secondsTakenCPU_usr, secondsTakenCPU_sys, secondsTakenWall);