ResourceStatistics.cpp 2.8 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135
  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. ResourceStatistics::ResourceStatistics(int _mode)
  11. {
  12. mode = _mode;
  13. }
  14. ResourceStatistics::~ResourceStatistics()
  15. {
  16. }
  17. void ResourceStatistics::getMaximumMemory(long & memory)
  18. {
  19. int check = getrusage(mode,&memoryStatistics);
  20. if ( check == -1 )
  21. {
  22. fthrow(Exception, "ResourceStatistics::getMaximumMemory: getrusage failed");
  23. return;
  24. } else if ( check == 0 )
  25. {
  26. memory = memoryStatistics.ru_maxrss;
  27. return;
  28. } else
  29. {
  30. fthrow(Exception, "ResourceStatistics::getMaximumMemory: unexpected flag");
  31. return;
  32. }
  33. }
  34. void ResourceStatistics::getUserCpuTime(double & time)
  35. {
  36. int check = getrusage(mode,&memoryStatistics);
  37. if ( check == -1 )
  38. {
  39. fthrow(Exception, "ResourceStatistics::getUserCpuTime: getrusage failed");
  40. return;
  41. } else if ( check == 0 )
  42. {
  43. double sec = (double) memoryStatistics.ru_utime.tv_sec;
  44. double msec = (double) memoryStatistics.ru_utime.tv_usec;
  45. time = sec + (msec/1e6);
  46. return;
  47. } else
  48. {
  49. fthrow(Exception, "ResourceStatistics::getUserCpuTime: unexpected flag");
  50. return;
  51. }
  52. }
  53. void ResourceStatistics::getSystemCpuTime(double & time)
  54. {
  55. int check = getrusage(mode,&memoryStatistics);
  56. if ( check == -1 )
  57. {
  58. fthrow(Exception, "ResourceStatistics::getSystemCpuTime: getrusage failed");
  59. return;
  60. } else if ( check == 0 )
  61. {
  62. double sec = (double) memoryStatistics.ru_stime.tv_sec;
  63. double msec = (double) memoryStatistics.ru_stime.tv_usec;
  64. time = sec + (msec/1e6);
  65. return;
  66. } else
  67. {
  68. fthrow(Exception, "ResourceStatistics::getSystemCpuTime: unexpected flag");
  69. return;
  70. }
  71. }
  72. void ResourceStatistics::getStatistics(long & memory, double & userCpuTime, double & systemCpuTime)
  73. {
  74. int check = getrusage(mode,&memoryStatistics);
  75. if ( check == -1 )
  76. {
  77. fthrow(Exception, "ResourceStatistics::getStatistics: getrusage failed");
  78. return;
  79. } else if ( check == 0 )
  80. {
  81. double sec, msec;
  82. memory = memoryStatistics.ru_maxrss;
  83. sec = (double) memoryStatistics.ru_utime.tv_sec;
  84. msec = (double) memoryStatistics.ru_utime.tv_usec;
  85. userCpuTime = sec + (msec/1e6);
  86. sec = (double) memoryStatistics.ru_stime.tv_sec;
  87. msec = (double) memoryStatistics.ru_stime.tv_usec;
  88. systemCpuTime = sec + (msec/1e6);
  89. return;
  90. } else
  91. {
  92. fthrow(Exception, "ResourceStatistics::getStatistics: unexpected flag");
  93. return;
  94. }
  95. }