ResourceStatistics.h 2.0 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485868788
  1. /**
  2. * @file ResourceStatistics.h
  3. * @author Paul Bodesheim
  4. * @date 03/02/2012 (dd/mm/yyyy)
  5. */
  6. #ifndef _NICE_ResourceStatistics_INCLUDE
  7. #define _NICE_ResourceStatistics_INCLUDE
  8. #ifdef WIN32
  9. #include <time.h>
  10. #else
  11. #include <sys/time.h>
  12. #include <sys/resource.h>
  13. #endif
  14. #include <core/basics/Exception.h>
  15. namespace NICE {
  16. /** @class ResourceStatistics
  17. * Interface that provides statistics for runtime and memory usage based on the function "getrusage" of <sys/resource.h>
  18. *
  19. * @author Paul Bodesheim
  20. */
  21. class ResourceStatistics
  22. {
  23. private:
  24. // both variables are necessary for the function "getrusage"
  25. int mode;
  26. #ifndef WIN32
  27. struct rusage memoryStatistics;
  28. #endif
  29. public:
  30. /**
  31. * @brief simple constructor
  32. *
  33. * @param _mode mode for "getrusage", it is recommended to use the default value RUSAGE_SELF
  34. */
  35. #ifndef WIN32
  36. ResourceStatistics(int _mode = RUSAGE_SELF);
  37. #else
  38. ResourceStatistics(int _mode = 0);
  39. #endif
  40. /**
  41. * @brief simple destructor
  42. */
  43. ~ResourceStatistics();
  44. /**
  45. * @brief get maximum memory (maximum resident set size) measured in kilo-bytes
  46. *
  47. * @param memory maximum memory measured in KB
  48. **/
  49. void getMaximumMemory(long & memory);
  50. /**
  51. * @brief get the user CPU time used (seconds)
  52. *
  53. * @param time user cpu time measured in seconds
  54. **/
  55. void getUserCpuTime(double & time);
  56. /**
  57. * @brief get the system CPU time used (seconds)
  58. *
  59. * @param time system cpu time measured in seconds
  60. **/
  61. void getSystemCpuTime(double & time);
  62. /**
  63. * @brief get three measures of your program: maximum memory, user CPU time, system CPU time
  64. *
  65. * @param memory maximum memory measured in KB
  66. * @param userCpuTime user cpu time measured in seconds
  67. * @param systemCpuTime system cpu time measured in seconds
  68. **/
  69. void getStatistics(long & memory, double & userCpuTime, double & systemCpuTime);
  70. };
  71. }
  72. #endif