#!/usr/bin/python import random, timeit data = [random.randint(0, 511) for i in xrange(0, 1000000)] data10 = data[0:10] data100 = data[0:100] data1000 = data[0:1000] data10000 = data[0:10000] data100000 = data[0:100000] def f(x,y): return y < 255 and x def alt_f(lst): return reduce(f, lst, True) def alt_l(lst): return reduce(lambda x, y: y < 255 and x, lst, True) def alt_m(lst): return max(lst) < 255 def profile(alt, num): reps = 10000000/num print alt, num, timeit.Timer( "%s(data%u)" % (alt, num), "from __main__ import alt_f, alt_l, alt_m, data10, data100, data1000, data10000, data100000" ).timeit(number=reps) / reps * 1e6, "us" profile("alt_f", 10) profile("alt_f", 100) profile("alt_f", 1000) profile("alt_f", 10000) profile("alt_l", 10) profile("alt_l", 100) profile("alt_l", 1000) profile("alt_l", 10000) profile("alt_m", 10) profile("alt_m", 100) profile("alt_m", 1000) profile("alt_m", 10000) ############################################################## D:\Desktop Environment\Desktop>maxing.py alt_f 10 3.27713689868 us alt_f 100 26.3104444839 us alt_f 1000 248.523653146 us alt_f 10000 2478.53707664 us alt_l 10 3.46616846555 us alt_l 100 26.5871221063 us alt_l 1000 248.279823274 us alt_l 10000 2472.36925363 us alt_m 10 1.01346847155 us alt_m 100 5.72555729848 us alt_m 1000 48.3984417014 us alt_m 10000 482.639832716 us