Measure micro-benchmark timing. ptl
authorPeter D. Barnes, Jr. <barnes26@llnl.gov>
Tue, 13 Nov 2012 23:56:26 -0800
branchptl
changeset 9767 bcde2492d42b
parent 9766 b40b0eff3599
child 9768 bee4f4bf5044
Measure micro-benchmark timing.
src/lte/model/lte-radio-bearer-tag.cc
src/lte/model/lte-radio-bearer-tag.h
src/lte/model/lte-rlc-um.cc
src/lte/model/lte-rlc-um.h
src/network/test/packet-test-suite.cc
--- a/src/network/test/packet-test-suite.cc	Tue Nov 13 23:53:08 2012 -0800
+++ b/src/network/test/packet-test-suite.cc	Tue Nov 13 23:56:26 2012 -0800
@@ -20,6 +20,7 @@
 #include "ns3/packet.h"
 #include "ns3/packet-tag-list.h"
 #include "ns3/test.h"
+#include <limits>     // std:numeric_limits
 #include <string>
 #include <cstdarg>
 #include <iostream>
@@ -459,9 +460,9 @@
   void CheckRef (PacketTagList & ref, ATestTagBase & t,
                  const char * msg, bool miss = false);
   void CheckRefList (PacketTagList & ref, const char * msg, int miss = 0);
-  void RemoveTime (const PacketTagList & ref, ATestTagBase & t,
+  int RemoveTime (const PacketTagList & ref, ATestTagBase & t,
                    const char * msg);
-  void AddRemoveTime ();
+  int AddRemoveTime ();
 };
 
 PacketTagListTest::PacketTagListTest ()
@@ -514,7 +515,7 @@
   CheckRef (ref, t7, msg, miss == 7);
 }
   
-void
+int
 PacketTagListTest::RemoveTime (const PacketTagList & ref, ATestTagBase & t,
                                const char * msg)
 {
@@ -525,12 +526,14 @@
     ptv[i].Remove (t);
   }
   int stop = clock ();
+  int delta = stop - start;
   std::cout << GetName () << "remove time: " << msg << ": "
-            << stop - start << " ticks"
+            << delta << " ticks"
             << std::endl;
+  return delta;
 }
 
-void
+int
 PacketTagListTest::AddRemoveTime ()
 {
   /*  old free list priming
@@ -561,9 +564,11 @@
     ptl.Remove (t);
   }
   int stop = clock ();
+  int delta = stop - start;
   std::cout << GetName () << "freelist time: "
-            << stop - start << " ticks"
+            << delta << " ticks"
             << std::endl;
+  return delta;
 }
 
 void
@@ -630,19 +635,37 @@
   ReplaceCheck (7);
 
   std::cout << GetName () << "freelist timing" << std::endl;
+  int flm = std::numeric_limits<int>::max ();
   for (int i = 0; i < 100; ++i) {
-  AddRemoveTime ();
+    int now = AddRemoveTime ();
+    if (now < flm) flm = now;
   }
+  std::cout << GetName () << "min freelist time: "
+            << flm << " ticks" << std::endl;
   
   std::cout << GetName () << "remove timing" << std::endl;
-  RemoveTime (ref, t7, "t7");
-  RemoveTime (ref, t6, "t6");
-  RemoveTime (ref, t5, "t5");
-  RemoveTime (ref, t4, "t4");
-  RemoveTime (ref, t3, "t3");
-  RemoveTime (ref, t2, "t2");
-  RemoveTime (ref, t1, "t1");
-  RemoveTime (ref, t7, "t7");
+  std::vector <int> rmn (7, std::numeric_limits<int>::max ());
+  for (int i = 0; i < 100; ++i) {
+    for (int j = 1; j < 8; ++j) {
+      int now = 0;
+      switch (j) {
+        case 7:  now = RemoveTime (ref, t7, "t7");  break;
+        case 6:  now = RemoveTime (ref, t6, "t6");  break;
+        case 5:  now = RemoveTime (ref, t5, "t5");  break;
+        case 4:  now = RemoveTime (ref, t4, "t4");  break;
+        case 3:  now = RemoveTime (ref, t3, "t3");  break;
+        case 2:  now = RemoveTime (ref, t2, "t2");  break;
+        case 1:  now = RemoveTime (ref, t1, "t1");  break;
+      }  // switch
+
+      if (now < rmn[j]) rmn[j] = now;
+    } // for tag j
+  } // for iteration i
+  for (int j = 7; j > 0; --j) {
+    std::cout << GetName () << "min remove time: t"
+              << j << ": " << rmn[j] << std::endl;
+  }
+  
 }
 
 //-----------------------------------------------------------------------------