ResourceStatistics.cpp 3.7 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175
  1. /**
  2. * @file ResourceStatistics.cpp
  3. * @brief Iteratively solving linear equation systems with the symmetric LQ (SYMMLQ) method using Lanczos process
  4. * @author Paul Bodesheim
  5. * @date 03/02/2012 (dd/mm/yyyy)
  6. */
  7. #include "ResourceStatistics.h"
  8. using namespace NICE;
  9. using namespace std;
  10. #ifndef WIN32
  11. ResourceStatistics::ResourceStatistics(int _mode)
  12. {
  13. mode = _mode;
  14. }
  15. ResourceStatistics::~ResourceStatistics()
  16. {
  17. }
  18. void ResourceStatistics::getMaximumMemory(long & memory)
  19. {
  20. int check = getrusage(mode,&memoryStatistics);
  21. if ( check == -1 )
  22. {
  23. fthrow(Exception, "ResourceStatistics::getMaximumMemory: getrusage failed");
  24. return;
  25. } else if ( check == 0 )
  26. {
  27. memory = memoryStatistics.ru_maxrss;
  28. return;
  29. } else
  30. {
  31. fthrow(Exception, "ResourceStatistics::getMaximumMemory: unexpected flag");
  32. return;
  33. }
  34. }
  35. void ResourceStatistics::getUserCpuTime(double & time)
  36. {
  37. int check = getrusage(mode,&memoryStatistics);
  38. if ( check == -1 )
  39. {
  40. fthrow(Exception, "ResourceStatistics::getUserCpuTime: getrusage failed");
  41. return;
  42. } else if ( check == 0 )
  43. {
  44. double sec = (double) memoryStatistics.ru_utime.tv_sec;
  45. double msec = (double) memoryStatistics.ru_utime.tv_usec;
  46. time = sec + (msec/1e6);
  47. return;
  48. } else
  49. {
  50. fthrow(Exception, "ResourceStatistics::getUserCpuTime: unexpected flag");
  51. return;
  52. }
  53. }
  54. void ResourceStatistics::getSystemCpuTime(double & time)
  55. {
  56. int check = getrusage(mode,&memoryStatistics);
  57. if ( check == -1 )
  58. {
  59. fthrow(Exception, "ResourceStatistics::getSystemCpuTime: getrusage failed");
  60. return;
  61. } else if ( check == 0 )
  62. {
  63. double sec = (double) memoryStatistics.ru_stime.tv_sec;
  64. double msec = (double) memoryStatistics.ru_stime.tv_usec;
  65. time = sec + (msec/1e6);
  66. return;
  67. } else
  68. {
  69. fthrow(Exception, "ResourceStatistics::getSystemCpuTime: unexpected flag");
  70. return;
  71. }
  72. }
  73. void ResourceStatistics::getStatistics(long & memory, double & userCpuTime, double & systemCpuTime)
  74. {
  75. int check = getrusage(mode,&memoryStatistics);
  76. if ( check == -1 )
  77. {
  78. fthrow(Exception, "ResourceStatistics::getStatistics: getrusage failed");
  79. return;
  80. } else if ( check == 0 )
  81. {
  82. double sec, msec;
  83. memory = memoryStatistics.ru_maxrss;
  84. sec = (double) memoryStatistics.ru_utime.tv_sec;
  85. msec = (double) memoryStatistics.ru_utime.tv_usec;
  86. userCpuTime = sec + (msec/1e6);
  87. sec = (double) memoryStatistics.ru_stime.tv_sec;
  88. msec = (double) memoryStatistics.ru_stime.tv_usec;
  89. systemCpuTime = sec + (msec/1e6);
  90. return;
  91. } else
  92. {
  93. fthrow(Exception, "ResourceStatistics::getStatistics: unexpected flag");
  94. return;
  95. }
  96. }
  97. #else
  98. /// WIN32 PORT following here
  99. #include "CrossplatformDefines.h"
  100. #pragma message WARNING("ResourceStatistics class : not yet ported to WIN32 plattform")
  101. ResourceStatistics::ResourceStatistics(int _mode)
  102. {
  103. mode = _mode;
  104. }
  105. ResourceStatistics::~ResourceStatistics()
  106. {
  107. }
  108. void ResourceStatistics::getMaximumMemory(long & memory)
  109. {
  110. fthrow ( Exception, "ResourceStatistics class : not yet ported to WIN32 plattform");
  111. }
  112. void ResourceStatistics::getUserCpuTime(double & time)
  113. {
  114. fthrow ( Exception, "ResourceStatistics class : not yet ported to WIN32 plattform");
  115. }
  116. void ResourceStatistics::getSystemCpuTime(double & time)
  117. {
  118. fthrow ( Exception, "ResourceStatistics class : not yet ported to WIN32 plattform");
  119. }
  120. void ResourceStatistics::getStatistics(long & memory, double & userCpuTime, double & systemCpuTime)
  121. {
  122. fthrow ( Exception, "ResourceStatistics class : not yet ported to WIN32 plattform");
  123. }
  124. #endif