1.1 --- a/utils/bench-packets.cc Thu May 08 11:22:40 2008 -0700
1.2 +++ b/utils/bench-packets.cc Thu May 08 11:23:22 2008 -0700
1.3 @@ -114,10 +114,72 @@
1.4 return N;
1.5 }
1.6
1.7 +template <int N>
1.8 +class BenchTag : public Tag
1.9 +{
1.10 +public:
1.11 + static std::string GetName (void) {
1.12 + std::ostringstream oss;
1.13 + oss << "anon::BenchTag<" << N << ">";
1.14 + return oss.str ();
1.15 + }
1.16 + static TypeId GetTypeId (void) {
1.17 + static TypeId tid = TypeId (GetName ().c_str ())
1.18 + .SetParent<Tag> ()
1.19 + .AddConstructor<BenchTag > ()
1.20 + .HideFromDocumentation ()
1.21 + ;
1.22 + return tid;
1.23 + }
1.24 + virtual TypeId GetInstanceTypeId (void) const {
1.25 + return GetTypeId ();
1.26 + }
1.27 + virtual uint32_t GetSerializedSize (void) const {
1.28 + return N;
1.29 + }
1.30 + virtual void Serialize (TagBuffer buf) const {
1.31 + for (uint32_t i = 0; i < N; ++i)
1.32 + {
1.33 + buf.WriteU8 (N);
1.34 + }
1.35 + }
1.36 + virtual void Deserialize (TagBuffer buf) {
1.37 + for (uint32_t i = 0; i < N; ++i)
1.38 + {
1.39 + buf.ReadU8 ();
1.40 + }
1.41 + }
1.42 + BenchTag ()
1.43 + : Tag () {}
1.44 +};
1.45
1.46
1.47 static void
1.48 -benchPtrA (uint32_t n)
1.49 +benchD (uint32_t n)
1.50 +{
1.51 + BenchHeader<25> ipv4;
1.52 + BenchHeader<8> udp;
1.53 + BenchTag<16> tag1;
1.54 + BenchTag<17> tag2;
1.55 +
1.56 + for (uint32_t i = 0; i < n; i++) {
1.57 + Ptr<Packet> p = Create<Packet> (2000);
1.58 + p->AddTag (tag1);
1.59 + p->AddHeader (udp);
1.60 + p->FindFirstMatchingTag (tag1);
1.61 + p->AddTag (tag2);
1.62 + p->AddHeader (ipv4);
1.63 + Ptr<Packet> o = p->Copy ();
1.64 + o->RemoveHeader (ipv4);
1.65 + p->FindFirstMatchingTag (tag2);
1.66 + o->RemoveHeader (udp);
1.67 + }
1.68 +}
1.69 +
1.70 +
1.71 +
1.72 +static void
1.73 +benchA (uint32_t n)
1.74 {
1.75 BenchHeader<25> ipv4;
1.76 BenchHeader<8> udp;
1.77 @@ -133,7 +195,7 @@
1.78 }
1.79
1.80 static void
1.81 -benchPtrB (uint32_t n)
1.82 +benchB (uint32_t n)
1.83 {
1.84 BenchHeader<25> ipv4;
1.85 BenchHeader<8> udp;
1.86 @@ -146,7 +208,7 @@
1.87 }
1.88
1.89 static void
1.90 -ptrC2 (Ptr<Packet> p)
1.91 +C2 (Ptr<Packet> p)
1.92 {
1.93 BenchHeader<8> udp;
1.94
1.95 @@ -154,15 +216,15 @@
1.96 }
1.97
1.98 static void
1.99 -ptrC1 (Ptr<Packet> p)
1.100 +C1 (Ptr<Packet> p)
1.101 {
1.102 BenchHeader<25> ipv4;
1.103 p->RemoveHeader (ipv4);
1.104 - ptrC2 (p);
1.105 + C2 (p);
1.106 }
1.107
1.108 static void
1.109 -benchPtrC (uint32_t n)
1.110 +benchC (uint32_t n)
1.111 {
1.112 BenchHeader<25> ipv4;
1.113 BenchHeader<8> udp;
1.114 @@ -171,7 +233,7 @@
1.115 Ptr<Packet> p = Create<Packet> (2000);
1.116 p->AddHeader (udp);
1.117 p->AddHeader (ipv4);
1.118 - ptrC1 (p);
1.119 + C1 (p);
1.120 }
1.121 }
1.122
1.123 @@ -209,14 +271,16 @@
1.124 }
1.125 std::cout << "Running bench-packets with n=" << n << std::endl;
1.126
1.127 - runBench (&benchPtrA, n, "a");
1.128 - runBench (&benchPtrB, n, "b");
1.129 - runBench (&benchPtrC, n, "c");
1.130 + runBench (&benchA, n, "a");
1.131 + runBench (&benchB, n, "b");
1.132 + runBench (&benchC, n, "c");
1.133 + runBench (&benchD, n, "d");
1.134
1.135 Packet::EnableMetadata ();
1.136 - runBench (&benchPtrA, n, "meta-a");
1.137 - runBench (&benchPtrB, n, "meta-b");
1.138 - runBench (&benchPtrC, n, "meta-c");
1.139 + runBench (&benchA, n, "meta-a");
1.140 + runBench (&benchB, n, "meta-b");
1.141 + runBench (&benchC, n, "meta-c");
1.142 + runBench (&benchD, n, "meta-d");
1.143
1.144
1.145