
#import psyco
#psyco.profile()

from freelist import FreeListed, NotFreeListed

class DelFreeListed(FreeListed):
    def __del__(self):
        pass

class DelNotFreeListed(NotFreeListed):
    def __del__(self):
        pass

def f1():
    for i in xrange(10000):
        FreeListed()

def f2():
    for i in xrange(10000):
        NotFreeListed()

def f3():
    global x
    x = [FreeListed() for x in xrange(10000)]

def f4():
    global x
    x = [NotFreeListed() for x in xrange(10000)]

def f5():
    for i in xrange(10000):
        DelFreeListed()

def f6():
    for i in xrange(10000):
        DelNotFreeListed()

import time


def main():
    global x
    for (f, n) in [(f1, 'Free list'), (f2, 'Non-free list'),
                   (f3, 'Free list 2'), (f4, 'Non-free list 2'),
                   (f5, 'Del free list'), (f6, 'Del non-free list')]:
        start = time.clock()
        f()
        end = time.clock()
        print n, end - start
        x = None

if __name__ == '__main__':
    x = [FreeListed() for x in xrange(10000)]
    x = [NotFreeListed() for x in xrange(10000)]
    x = None
    import gc; gc.collect()
    main()

