bench tags
authorMathieu Lacage <mathieu.lacage@sophia.inria.fr>
Thu May 08 11:23:22 2008 -0700 (21 months ago)
changeset 305831e4703e08da
parent 3057 e26ab7b61c7c
child 3059 890b147e1ed6
bench tags
utils/bench-packets.cc
     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