# Run it using https://bitbucket.org/haypo/misc/src/tip/python/benchmark.py
# python benchmark.py script bench_gen.py

try:
    # Python 2
    from itertools import imap
    imap_name = 'itertools.imap'
except ImportError:
    # Python 3
    imap = map
    imap_name = 'map'

def func_imap(func, data):
    return tuple(imap(func, data))

def func_listcomp(func, data):
    return tuple([func(x) for x in data])

def func_generator(func, data):
    return tuple(func(x) for x in data)

def run_benchmark(bench):
    func = str
    for items in (3, 10**1, 10**3, 10**6):
        iterable = tuple(range(items))
        bench.start_group('%s items' % items)
        bench.compare_functions(
            (imap_name, func_imap, func, iterable),
            ('list comprehesion', func_listcomp, func, iterable),
            ('generator', func_generator, func, iterable),
        )

