#!/usr/bin/env python # -*- coding: utf-8 -*- import timeit import sys class A(object): """Original""" def x(self): return 2 class B(A): """A.x(self)""" def x(self): return A.x(self) class C(A): """super(self, B).x()""" def x(self): return super(C, self).x() class D(A): """Py3k super().x()""" def x(self): return super().x() NUMBER = 10000 def bench_func(obj): for i in range(1000): obj.x() objects = [A(), B(), C()] if sys.version_info[0] == 3: objects.append(D()) for obj in objects: print('%-20s %s' % (obj.__doc__, timeit.timeit(lambda : bench_func(obj), number=NUMBER)))