From 8a5e56e41472c01cf6f35cc043b7097d169ffa87 Mon Sep 17 00:00:00 2001 From: "Peter D. Barnes, Jr." Date: Tue, 13 Nov 2012 23:56:26 -0800 Subject: [PATCH] Measure micro-benchmark timing. --- src/network/test/packet-test-suite.cc | 53 +++++++++++++++++++-------- 1 file changed, 38 insertions(+), 15 deletions(-) diff --git a/src/network/test/packet-test-suite.cc b/src/network/test/packet-test-suite.cc index 04fc019cc..49acffc44 100644 --- a/src/network/test/packet-test-suite.cc +++ b/src/network/test/packet-test-suite.cc @@ -20,6 +20,7 @@ #include "ns3/packet.h" #include "ns3/packet-tag-list.h" #include "ns3/test.h" +#include // std:numeric_limits #include #include #include @@ -459,9 +460,9 @@ private: 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 @@ PacketTagListTest::CheckRefList (PacketTagList & ref, CheckRef (ref, t7, msg, miss == 7); } -void +int PacketTagListTest::RemoveTime (const PacketTagList & ref, ATestTagBase & t, const char * msg) { @@ -525,12 +526,14 @@ PacketTagListTest::RemoveTime (const PacketTagList & ref, ATestTagBase & t, 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 @@ PacketTagListTest::AddRemoveTime () 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 @@ PacketTagListTest::DoRun (void) ReplaceCheck (7); std::cout << GetName () << "freelist timing" << std::endl; + int flm = std::numeric_limits::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 rmn (7, std::numeric_limits::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; + } + } //-----------------------------------------------------------------------------