]> granicus.if.org Git - pdns/commitdiff
add CPU time nanosecond resolution infrastructure, behind #ifdef now for supporting...
authorbert hubert <bert.hubert@netherlabs.nl>
Thu, 15 Jan 2015 12:24:08 +0000 (13:24 +0100)
committerbert hubert <bert.hubert@netherlabs.nl>
Thu, 15 Jan 2015 12:24:08 +0000 (13:24 +0100)
pdns/misc.hh

index 019facd1bf6a5f3e4210be93de91cf63835ce9d6..e7c72e0de7d27ca7306e130a567e4dd98b824fdd 100644 (file)
@@ -181,6 +181,26 @@ int makeGidNumeric(const string &group);
 int makeUidNumeric(const string &user);
 void cleanSlashes(string &str);
 
+#ifdef _POSIX_THREAD_CPUTIME
+/** CPUTime measurements */
+class CPUTime
+{
+public:
+  void start()
+  {
+    clock_gettime(CLOCK_THREAD_CPUTIME_ID, &d_start);
+  }
+  uint64_t ndiff()
+  {
+    struct timespec now;
+    clock_gettime(CLOCK_THREAD_CPUTIME_ID, &now);
+    return 1000000000ULL*(now.tv_sec - d_start.tv_sec) + (now.tv_nsec - d_start.tv_nsec);
+  }
+private:
+  struct timespec d_start;
+};
+#endif 
+
 /** The DTime class can be used for timing statistics with microsecond resolution. 
 On 32 bits systems this means that 2147 seconds is the longest time that can be measured. */
 class DTime