# HG changeset patch # User Peter D. Barnes, Jr. # Date 1352879786 28800 # Node ID bcde2492d42b95ea21f345faac785dbd7f083026 # Parent b40b0eff3599e0613cc6c528c5ebebe95de16953 Measure micro-benchmark timing. diff -r b40b0eff3599 -r bcde2492d42b 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 // std:numeric_limits #include #include #include @@ -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::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; + } + } //-----------------------------------------------------------------------------