projects/lcdd/branches/v04-00-00-pre/include/lcdd/util
--- projects/lcdd/branches/v04-00-00-pre/include/lcdd/util/TimeUtil.hh 2014-05-08 21:13:38 UTC (rev 3111)
+++ projects/lcdd/branches/v04-00-00-pre/include/lcdd/util/TimeUtil.hh 2014-05-08 21:16:41 UTC (rev 3112)
@@ -1,10 +1,15 @@
#ifndef lcdd_util_TimeUtil_hh_
-#define lcdd_util_TimeUtil_hh_
+#define lcdd_util_TimeUtil_hh_ 1
#include <sys/time.h>
+#include <string>
+#include <map>
+
class TimeUtil {
+ static std::map<std::string, long> _timerMap;
+
public:
static long getNanoTime() {
@@ -12,6 +17,35 @@
clock_gettime(CLOCK_REALTIME, &ts);
return ts.tv_nsec;
}
+
+ static bool haveTimer(const std::string& name) {
+ return _timerMap.count(name) != 0;
+ }
+
+ static void startTimer(const std::string& name) {
+ _timerMap[name] = getNanoTime();
+ }
+
+ static long stopTimer(const std::string& name) {
+ _timerMap[name] = getNanoTime() - _timerMap[name];
+ return _timerMap[name];
+ }
+
+ static void addTime(const std::string& name, long nanos) {
+ _timerMap[name] += nanos;
+ }
+
+ static void createTimer(const std::string& name) {
+ _timerMap[name] = 0;
+ }
+
+ static long getTime(const std::string& name) {
+ return _timerMap[name];
+ }
+
+ static void clearTimers() {
+ _timerMap.clear();
+ }
};
#endif