ResourceStatistics.h 1.8 KB

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