from pybench import Test

class SpecialClassAttribute(Test):

   version = 2.0
   operations = 5*(12 + 12)
   rounds = 100000

   def test(self):

       class c:
           pass

       for i in xrange(self.rounds):

           c.__a = 2
           c.__b = 3
           c.__c = 4

           c.__a = 2
           c.__b = 3
           c.__c = 4

           c.__a = 2
           c.__b = 3
           c.__c = 4

           c.__a = 2
           c.__b = 3
           c.__c = 4

           x = c.__a
           x = c.__b
           x = c.__c

           x = c.__a
           x = c.__b
           x = c.__c

           x = c.__a
           x = c.__b
           x = c.__c

           x = c.__a
           x = c.__b
           x = c.__c

           c.__a = 2
           c.__b = 3
           c.__c = 4

           c.__a = 2
           c.__b = 3
           c.__c = 4

           c.__a = 2
           c.__b = 3
           c.__c = 4

           c.__a = 2
           c.__b = 3
           c.__c = 4

           x = c.__a
           x = c.__b
           x = c.__c

           x = c.__a
           x = c.__b
           x = c.__c

           x = c.__a
           x = c.__b
           x = c.__c

           x = c.__a
           x = c.__b
           x = c.__c

           c.__a = 2
           c.__b = 3
           c.__c = 4

           c.__a = 2
           c.__b = 3
           c.__c = 4

           c.__a = 2
           c.__b = 3
           c.__c = 4

           c.__a = 2
           c.__b = 3
           c.__c = 4

           x = c.__a
           x = c.__b
           x = c.__c

           x = c.__a
           x = c.__b
           x = c.__c

           x = c.__a
           x = c.__b
           x = c.__c

           x = c.__a
           x = c.__b
           x = c.__c

           c.__a = 2
           c.__b = 3
           c.__c = 4

           c.__a = 2
           c.__b = 3
           c.__c = 4

           c.__a = 2
           c.__b = 3
           c.__c = 4

           c.__a = 2
           c.__b = 3
           c.__c = 4

           x = c.__a
           x = c.__b
           x = c.__c

           x = c.__a
           x = c.__b
           x = c.__c

           x = c.__a
           x = c.__b
           x = c.__c

           x = c.__a
           x = c.__b
           x = c.__c

           c.__a = 2
           c.__b = 3
           c.__c = 4

           c.__a = 2
           c.__b = 3
           c.__c = 4

           c.__a = 2
           c.__b = 3
           c.__c = 4

           c.__a = 2
           c.__b = 3
           c.__c = 4

           x = c.__a
           x = c.__b
           x = c.__c

           x = c.__a
           x = c.__b
           x = c.__c

           x = c.__a
           x = c.__b
           x = c.__c

           x = c.__a
           x = c.__b
           x = c.__c

   def calibrate(self):

       class c:
           pass

       for i in xrange(self.rounds):
           pass

class NormalClassAttribute(Test):

   version = 2.0
   operations = 5*(12 + 12)
   rounds = 100000

   def test(self):

       class c:
           pass

       for i in xrange(self.rounds):

           c.a = 2
           c.b = 3
           c.c = 4

           c.a = 2
           c.b = 3
           c.c = 4

           c.a = 2
           c.b = 3
           c.c = 4

           c.a = 2
           c.b = 3
           c.c = 4


           x = c.a
           x = c.b
           x = c.c

           x = c.a
           x = c.b
           x = c.c

           x = c.a
           x = c.b
           x = c.c

           x = c.a
           x = c.b
           x = c.c

           c.a = 2
           c.b = 3
           c.c = 4

           c.a = 2
           c.b = 3
           c.c = 4

           c.a = 2
           c.b = 3
           c.c = 4

           c.a = 2
           c.b = 3
           c.c = 4


           x = c.a
           x = c.b
           x = c.c

           x = c.a
           x = c.b
           x = c.c

           x = c.a
           x = c.b
           x = c.c

           x = c.a
           x = c.b
           x = c.c

           c.a = 2
           c.b = 3
           c.c = 4

           c.a = 2
           c.b = 3
           c.c = 4

           c.a = 2
           c.b = 3
           c.c = 4

           c.a = 2
           c.b = 3
           c.c = 4


           x = c.a
           x = c.b
           x = c.c

           x = c.a
           x = c.b
           x = c.c

           x = c.a
           x = c.b
           x = c.c

           x = c.a
           x = c.b
           x = c.c

           c.a = 2
           c.b = 3
           c.c = 4

           c.a = 2
           c.b = 3
           c.c = 4

           c.a = 2
           c.b = 3
           c.c = 4

           c.a = 2
           c.b = 3
           c.c = 4


           x = c.a
           x = c.b
           x = c.c

           x = c.a
           x = c.b
           x = c.c

           x = c.a
           x = c.b
           x = c.c

           x = c.a
           x = c.b
           x = c.c

           c.a = 2
           c.b = 3
           c.c = 4

           c.a = 2
           c.b = 3
           c.c = 4

           c.a = 2
           c.b = 3
           c.c = 4

           c.a = 2
           c.b = 3
           c.c = 4


           x = c.a
           x = c.b
           x = c.c

           x = c.a
           x = c.b
           x = c.c

           x = c.a
           x = c.b
           x = c.c

           x = c.a
           x = c.b
           x = c.c

   def calibrate(self):

       class c:
           pass

       for i in xrange(self.rounds):
           pass

class SpecialInstanceAttribute(Test):

   version = 2.0
   operations = 5*(12 + 12)
   rounds = 100000

   def test(self):

       class c:
           pass
       o = c()

       for i in xrange(self.rounds):

           o.__a__ = 2
           o.__b__ = 3
           o.__c__ = 4

           o.__a__ = 2
           o.__b__ = 3
           o.__c__ = 4

           o.__a__ = 2
           o.__b__ = 3
           o.__c__ = 4

           o.__a__ = 2
           o.__b__ = 3
           o.__c__ = 4


           x = o.__a__
           x = o.__b__
           x = o.__c__

           x = o.__a__
           x = o.__b__
           x = o.__c__

           x = o.__a__
           x = o.__b__
           x = o.__c__

           x = o.__a__
           x = o.__b__
           x = o.__c__

           o.__a__ = 2
           o.__b__ = 3
           o.__c__ = 4

           o.__a__ = 2
           o.__b__ = 3
           o.__c__ = 4

           o.__a__ = 2
           o.__b__ = 3
           o.__c__ = 4

           o.__a__ = 2
           o.__b__ = 3
           o.__c__ = 4


           x = o.__a__
           x = o.__b__
           x = o.__c__

           x = o.__a__
           x = o.__b__
           x = o.__c__

           x = o.__a__
           x = o.__b__
           x = o.__c__

           x = o.__a__
           x = o.__b__
           x = o.__c__

           o.__a__ = 2
           o.__b__ = 3
           o.__c__ = 4

           o.__a__ = 2
           o.__b__ = 3
           o.__c__ = 4

           o.__a__ = 2
           o.__b__ = 3
           o.__c__ = 4

           o.__a__ = 2
           o.__b__ = 3
           o.__c__ = 4


           x = o.__a__
           x = o.__b__
           x = o.__c__

           x = o.__a__
           x = o.__b__
           x = o.__c__

           x = o.__a__
           x = o.__b__
           x = o.__c__

           x = o.__a__
           x = o.__b__
           x = o.__c__

           o.__a__ = 2
           o.__b__ = 3
           o.__c__ = 4

           o.__a__ = 2
           o.__b__ = 3
           o.__c__ = 4

           o.__a__ = 2
           o.__b__ = 3
           o.__c__ = 4

           o.__a__ = 2
           o.__b__ = 3
           o.__c__ = 4


           x = o.__a__
           x = o.__b__
           x = o.__c__

           x = o.__a__
           x = o.__b__
           x = o.__c__

           x = o.__a__
           x = o.__b__
           x = o.__c__

           x = o.__a__
           x = o.__b__
           x = o.__c__

           o.__a__ = 2
           o.__b__ = 3
           o.__c__ = 4

           o.__a__ = 2
           o.__b__ = 3
           o.__c__ = 4

           o.__a__ = 2
           o.__b__ = 3
           o.__c__ = 4

           o.__a__ = 2
           o.__b__ = 3
           o.__c__ = 4


           x = o.__a__
           x = o.__b__
           x = o.__c__

           x = o.__a__
           x = o.__b__
           x = o.__c__

           x = o.__a__
           x = o.__b__
           x = o.__c__

           x = o.__a__
           x = o.__b__
           x = o.__c__

   def calibrate(self):

       class c:
           pass
       o = c()

       for i in xrange(self.rounds):
           pass

class NormalInstanceAttribute(Test):

   version = 2.0
   operations = 5*(12 + 12)
   rounds = 100000

   def test(self):

       class c:
           pass
       o = c()

       for i in xrange(self.rounds):

           o.a = 2
           o.b = 3
           o.c = 4

           o.a = 2
           o.b = 3
           o.c = 4

           o.a = 2
           o.b = 3
           o.c = 4

           o.a = 2
           o.b = 3
           o.c = 4


           x = o.a
           x = o.b
           x = o.c

           x = o.a
           x = o.b
           x = o.c

           x = o.a
           x = o.b
           x = o.c

           x = o.a
           x = o.b
           x = o.c

           o.a = 2
           o.b = 3
           o.c = 4

           o.a = 2
           o.b = 3
           o.c = 4

           o.a = 2
           o.b = 3
           o.c = 4

           o.a = 2
           o.b = 3
           o.c = 4


           x = o.a
           x = o.b
           x = o.c

           x = o.a
           x = o.b
           x = o.c

           x = o.a
           x = o.b
           x = o.c

           x = o.a
           x = o.b
           x = o.c

           o.a = 2
           o.b = 3
           o.c = 4

           o.a = 2
           o.b = 3
           o.c = 4

           o.a = 2
           o.b = 3
           o.c = 4

           o.a = 2
           o.b = 3
           o.c = 4


           x = o.a
           x = o.b
           x = o.c

           x = o.a
           x = o.b
           x = o.c

           x = o.a
           x = o.b
           x = o.c

           x = o.a
           x = o.b
           x = o.c

           o.a = 2
           o.b = 3
           o.c = 4

           o.a = 2
           o.b = 3
           o.c = 4

           o.a = 2
           o.b = 3
           o.c = 4

           o.a = 2
           o.b = 3
           o.c = 4


           x = o.a
           x = o.b
           x = o.c

           x = o.a
           x = o.b
           x = o.c

           x = o.a
           x = o.b
           x = o.c

           x = o.a
           x = o.b
           x = o.c

           o.a = 2
           o.b = 3
           o.c = 4

           o.a = 2
           o.b = 3
           o.c = 4

           o.a = 2
           o.b = 3
           o.c = 4

           o.a = 2
           o.b = 3
           o.c = 4


           x = o.a
           x = o.b
           x = o.c

           x = o.a
           x = o.b
           x = o.c

           x = o.a
           x = o.b
           x = o.c

           x = o.a
           x = o.b
           x = o.c

   def calibrate(self):

       class c:
           pass
       o = c()

       for i in xrange(self.rounds):
           pass

class BuiltinMethodLookup(Test):

   version = 2.0
   operations = 5*(3*5 + 3*5)
   rounds = 70000

   def test(self):

       l = []
       d = {}

       for i in xrange(self.rounds):

           l.append
           l.append
           l.append
           l.append
           l.append

           l.insert
           l.insert
           l.insert
           l.insert
           l.insert

           l.sort
           l.sort
           l.sort
           l.sort
           l.sort

           d.has_key
           d.has_key
           d.has_key
           d.has_key
           d.has_key

           d.items
           d.items
           d.items
           d.items
           d.items

           d.get
           d.get
           d.get
           d.get
           d.get

           l.append
           l.append
           l.append
           l.append
           l.append

           l.insert
           l.insert
           l.insert
           l.insert
           l.insert

           l.sort
           l.sort
           l.sort
           l.sort
           l.sort

           d.has_key
           d.has_key
           d.has_key
           d.has_key
           d.has_key

           d.items
           d.items
           d.items
           d.items
           d.items

           d.get
           d.get
           d.get
           d.get
           d.get

           l.append
           l.append
           l.append
           l.append
           l.append

           l.insert
           l.insert
           l.insert
           l.insert
           l.insert

           l.sort
           l.sort
           l.sort
           l.sort
           l.sort

           d.has_key
           d.has_key
           d.has_key
           d.has_key
           d.has_key

           d.items
           d.items
           d.items
           d.items
           d.items

           d.get
           d.get
           d.get
           d.get
           d.get

           l.append
           l.append
           l.append
           l.append
           l.append

           l.insert
           l.insert
           l.insert
           l.insert
           l.insert

           l.sort
           l.sort
           l.sort
           l.sort
           l.sort

           d.has_key
           d.has_key
           d.has_key
           d.has_key
           d.has_key

           d.items
           d.items
           d.items
           d.items
           d.items

           d.get
           d.get
           d.get
           d.get
           d.get

           l.append
           l.append
           l.append
           l.append
           l.append

           l.insert
           l.insert
           l.insert
           l.insert
           l.insert

           l.sort
           l.sort
           l.sort
           l.sort
           l.sort

           d.has_key
           d.has_key
           d.has_key
           d.has_key
           d.has_key

           d.items
           d.items
           d.items
           d.items
           d.items

           d.get
           d.get
           d.get
           d.get
           d.get

   def calibrate(self):

       l = []
       d = {}

       for i in xrange(self.rounds):
           pass