35static inline int memReadStat(
int field)
42 FILE* in = fopen(
name,
"rb");
43 if (in == NULL)
return 0;
45 for (; field >= 0; field--)
46 if (fscanf(in,
"%d", &
value) != 1)
47 printf(
"ERROR! Failed to parse memory statistics from \"/proc\".\n"),
exit(1);
53static inline int memReadPeak(
void)
59 FILE* in = fopen(
name,
"rb");
60 if (in == NULL)
return 0;
64 while (!feof(in) && fscanf(in,
"VmPeak: %d kB", &peak_kb) != 1)
65 while (!feof(in) && fgetc(in) !=
'\n')
72double Gluco2::memUsed() {
return (
double)memReadStat(0) * (double)getpagesize() / (1024*1024); }
74 double peak = memReadPeak() / 1024;
75 return peak == 0 ?
memUsed() : peak; }
79#elif defined(__FreeBSD__)
87 getrusage(RUSAGE_SELF, &ru);
88 return (
double)ru.ru_maxrss / 1024; }
93#elif defined(__APPLE__)
95#include <malloc/malloc.h>
100 malloc_statistics_t t;
101 malloc_zone_statistics(NULL, &t);
102 return (
double)t.max_size_in_use / (1024*1024); }
#define ABC_NAMESPACE_IMPL_START
#define ABC_NAMESPACE_IMPL_END
ABC_NAMESPACE_IMPL_START typedef signed char value