Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #!/usr/bin/python
- import itertools
- import sys
- import timeit
- def cc_explicit(grid, j, element):
- count = 0
- for x in range(0, len(grid)):
- if grid[x][j] == element:
- count += 1
- return count
- def cc_explicit_xrange(grid, j, element):
- count = 0
- for x in xrange(0, len(grid)):
- if grid[x][j] == element:
- count += 1
- return count
- def cc_listcomp(grid, j, element):
- return [x[j] for x in grid].count(element)
- def cc_zip(grid, j, element):
- return zip(*grid)[j].count(element)
- def cc_genexp(grid, j, element):
- return sum(x[j] == element for x in grid)
- def cc_izip(grid, j, element):
- return sum(x[j] == element for x in itertools.izip(*grid))
- def cc_filter(grid, j, element):
- return len(filter(lambda x: x[j] == element, grid))
- def cc_ifilter(grid, j, element):
- return sum(1 for i in itertools.ifilter(lambda x: x[j] == element, grid))
- module = sys.modules[__name__]
- funcs = [getattr(module, name) for name in dir(module) if name.startswith('cc_')]
- def test(rows, cols, number):
- grid = [[col for col in range(cols)] for row in range(rows)]
- for func in funcs:
- def printfunc():
- print func.func_name, func(grid, 5, 5),
- print timeit.timeit(printfunc, number=number)
- rows = int(sys.argv[1]) if len(sys.argv) > 1 else 5000
- cols = int(sys.argv[2]) if len(sys.argv) > 2 else 5000
- numbers = int(sys.argv[3]) if len(sys.argv) > 3 else 1
- test(rows, cols, numbers)
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement