Advertisement
Guest User

Untitled

a guest
Dec 3rd, 2012
212
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Python 1.47 KB | None | 0 0
  1.  
  2. #!/usr/bin/python
  3.  
  4. import itertools
  5. import sys
  6. import timeit
  7.  
  8. def cc_explicit(grid, j, element):
  9.     count = 0
  10.     for x in range(0, len(grid)):
  11.         if grid[x][j] == element:
  12.             count += 1
  13.     return count
  14.  
  15. def cc_explicit_xrange(grid, j, element):
  16.     count = 0
  17.     for x in xrange(0, len(grid)):
  18.         if grid[x][j] == element:
  19.             count += 1
  20.     return count
  21.  
  22. def cc_listcomp(grid, j, element):
  23.     return [x[j] for x in grid].count(element)
  24.  
  25. def cc_zip(grid, j, element):
  26.     return zip(*grid)[j].count(element)
  27.  
  28. def cc_genexp(grid, j, element):
  29.     return sum(x[j] == element for x in grid)
  30.  
  31. def cc_izip(grid, j, element):
  32.     return sum(x[j] == element for x in itertools.izip(*grid))
  33.  
  34. def cc_filter(grid, j, element):
  35.     return len(filter(lambda x: x[j] == element, grid))
  36.  
  37. def cc_ifilter(grid, j, element):
  38.     return sum(1 for i in itertools.ifilter(lambda x: x[j] == element, grid))
  39.  
  40. module = sys.modules[__name__]
  41. funcs = [getattr(module, name) for name in dir(module) if name.startswith('cc_')]
  42. def test(rows, cols, number):
  43.   grid = [[col for col in range(cols)] for row in range(rows)]
  44.   for func in funcs:
  45.     def printfunc():
  46.       print func.func_name, func(grid, 5, 5),
  47.     print timeit.timeit(printfunc, number=number)
  48.  
  49. rows = int(sys.argv[1]) if len(sys.argv) > 1 else 5000
  50. cols = int(sys.argv[2]) if len(sys.argv) > 2 else 5000
  51. numbers = int(sys.argv[3]) if len(sys.argv) > 3 else 1
  52. test(rows, cols, numbers)
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement