]> granicus.if.org Git - pdns/commitdiff
add some more microbenchmarks, move speedtest to CPUTime instead of wallclock
authorbert hubert <bert.hubert@netherlabs.nl>
Sat, 24 Jan 2015 12:45:28 +0000 (13:45 +0100)
committerbert hubert <bert.hubert@netherlabs.nl>
Sat, 24 Jan 2015 12:45:28 +0000 (13:45 +0100)
pdns/speedtest.cc

index 03ba9a27592292dfc104155147e5cf0318d3e9f9..3a7f1c9eeb036770be9951180f67c5ac5a7a4555 100644 (file)
@@ -34,12 +34,12 @@ template<typename C> void doRun(const C& cmd, int mseconds=100)
   
   unsigned int runs=0;
   g_stop=false;
-  DTime dt;
-  dt.set();
+  CPUTime dt;
+  dt.start();
   while(runs++, !g_stop) {
     cmd();
   }
-  double delta=dt.udiff()/1000000.0;
+  double delta=dt.ndiff()/1000000000.0;
   boost::format fmt("'%s' %.02f seconds: %.1f runs/s, %.02f usec/run");
 
   cerr<< (fmt % cmd.getName() % delta % (runs/delta) % (delta* 1000000.0/runs)) << endl;
@@ -134,6 +134,36 @@ struct StaticMemberTest
   }
 };
 
+struct StringtokTest
+{
+  string getName() const
+  {
+    return "stringtok";
+  }
+  
+  void operator()() const 
+  {
+    string str("the quick brown fox jumped");
+    vector<string> parts;
+    stringtok(parts, str);
+  }
+};
+
+struct VStringtokTest
+{
+  string getName() const
+  {
+    return "vstringtok";
+  }
+  
+  void operator()() const 
+  {
+    string str("the quick brown fox jumped");
+    vector<pair<unsigned int, unsigned> > parts;
+    vstringtok(parts, str);
+  }
+};
+
 
 struct MakeARecordTest
 {
@@ -859,13 +889,16 @@ try
   doRun(GenericRecordTest(4, QType::NS, "powerdnssec1.ds9a.nl"));
   doRun(GenericRecordTest(64, QType::NS, "powerdnssec1.ds9a.nl"));
 
-
+  
 
   doRun(SOARecordTest(1));
   doRun(SOARecordTest(2));
   doRun(SOARecordTest(4));
   doRun(SOARecordTest(64));
 
+  doRun(StringtokTest());
+  doRun(VStringtokTest());  
+
   cerr<<"Total runs: " << g_totalRuns<<endl;
 
 }