utils/bench-object.cc
author Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
Wed, 02 Jan 2008 09:09:24 +0100
changeset 2230 9f13ac3291e0
parent 732 df256f32b6ae
permissions -rw-r--r--
add CreateObject<> to instanciate subclasses of the Object base class. Replaces Create<>.
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
700
d845cfea2a16 add benchmark by gustavo
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
     1
#include <vector>
d845cfea2a16 add benchmark by gustavo
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
     2
#include <stdlib.h>
706
8b0bf4623c9d rename InterfaceObject to Object
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 700
diff changeset
     3
#include "ns3/object.h"
700
d845cfea2a16 add benchmark by gustavo
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
     4
d845cfea2a16 add benchmark by gustavo
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
     5
using namespace ns3;
d845cfea2a16 add benchmark by gustavo
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
     6
706
8b0bf4623c9d rename InterfaceObject to Object
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 700
diff changeset
     7
class BaseA : public ns3::Object
700
d845cfea2a16 add benchmark by gustavo
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
     8
{
d845cfea2a16 add benchmark by gustavo
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
     9
public:
710
2a9c061219a7 port code from Interface to Object
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 706
diff changeset
    10
  static const ns3::InterfaceId iid;
700
d845cfea2a16 add benchmark by gustavo
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
    11
  BaseA ()
d845cfea2a16 add benchmark by gustavo
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
    12
  {
d845cfea2a16 add benchmark by gustavo
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
    13
    SetInterfaceId (BaseA::iid);
d845cfea2a16 add benchmark by gustavo
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
    14
  }
d845cfea2a16 add benchmark by gustavo
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
    15
  virtual void Dispose (void) {}
d845cfea2a16 add benchmark by gustavo
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
    16
};
d845cfea2a16 add benchmark by gustavo
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
    17
710
2a9c061219a7 port code from Interface to Object
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 706
diff changeset
    18
const ns3::InterfaceId BaseA::iid = 
706
8b0bf4623c9d rename InterfaceObject to Object
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 700
diff changeset
    19
ns3::MakeInterfaceId ("BaseABench", Object::iid);
700
d845cfea2a16 add benchmark by gustavo
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
    20
d845cfea2a16 add benchmark by gustavo
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
    21
d845cfea2a16 add benchmark by gustavo
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
    22
d845cfea2a16 add benchmark by gustavo
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
    23
int main (int argc, char *argv[])
d845cfea2a16 add benchmark by gustavo
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
    24
{
d845cfea2a16 add benchmark by gustavo
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
    25
  int nobjects = atoi (argv[1]);
d845cfea2a16 add benchmark by gustavo
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
    26
  int nswaps = atoi (argv[2]);
d845cfea2a16 add benchmark by gustavo
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
    27
d845cfea2a16 add benchmark by gustavo
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
    28
  std::vector< Ptr<BaseA> > objlist;
d845cfea2a16 add benchmark by gustavo
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
    29
d845cfea2a16 add benchmark by gustavo
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
    30
  for (int i = 0; i < nobjects; ++i)
2230
9f13ac3291e0 add CreateObject<> to instanciate subclasses of the Object base class. Replaces Create<>.
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 732
diff changeset
    31
    objlist.push_back (CreateObject<BaseA> ());
700
d845cfea2a16 add benchmark by gustavo
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
    32
d845cfea2a16 add benchmark by gustavo
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
    33
  for (int swapCounter = nswaps; swapCounter; --swapCounter)
d845cfea2a16 add benchmark by gustavo
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
    34
    {
d845cfea2a16 add benchmark by gustavo
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
    35
      int x1 = swapCounter % nobjects;
d845cfea2a16 add benchmark by gustavo
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
    36
      int x2 = (swapCounter+1) % nobjects;
d845cfea2a16 add benchmark by gustavo
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
    37
      Ptr<BaseA> obj1 = objlist[x1];
d845cfea2a16 add benchmark by gustavo
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
    38
      Ptr<BaseA> obj2 = objlist[x2];
d845cfea2a16 add benchmark by gustavo
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
    39
      objlist[x2] = obj1;
d845cfea2a16 add benchmark by gustavo
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
    40
      objlist[x1] = obj2;
d845cfea2a16 add benchmark by gustavo
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
    41
    }
d845cfea2a16 add benchmark by gustavo
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
    42
}
d845cfea2a16 add benchmark by gustavo
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
    43