from time import time
import itertools

values = xrange(10000000)

st = time()
for value in (value for value in values if value > 2):
    pass
print time() - st #3.91020894051

st = time()
for value in filter(lambda x: x > 2, values):
    pass
print time() - st #5.53530097008

st = time()
for value in itertools.ifilter(lambda x: x > 2, values):
    pass
print time() - st #5.0817360878
