1 iterqueue_speed_test.py
2 =======================
3 Profiling the iterqueue extended iterator classes
4 -------------------------------------------------
8 import sys, os, itertools
9 from timeit import Timer
11 from iterqueue_test import wrappers, peekables, pushables, \
12 state_reporters, iqueues
15 def print_iterator_lists():
17 print " ","\n ".join(wrapper.__name__ for wrapper in wrappers)
19 print " ","\n ".join(peekable.__name__ for peekable in peekables)
21 print " ","\n ".join(pushable.__name__ for pushable in pushables)
22 print "State Reporters"
23 print " ","\n ".join(state_reporter.__name__
24 for state_reporter in state_reporters)
25 print "Iterator Queues"
26 print " ","\n ".join(iqueue.__name__ for iqueue in iqueues)
29 #print_iterator_lists()
31 use cases (benchmarks)
32 ~~~~~~~~~~~~~~~~~~~~~~
37 """baseline: empty `for` loop"""
41 def peek_in_loop(iterator):
42 """peek in every loop"""
49 def peek_before_loop(iterator):
50 """peek at first value once, then loop"""
58 def bool_in_loop(iterator):
59 """test for values in every loop"""
63 def bool_before_loop(iterator):
64 """test for values once, then loop"""
70 def time_benchmark(fun, wrappers, iterator):
71 """profile benchmark `fun` with `iterator` wrapped in `wrappers`"""
73 print fun.__doc__, "(%s)"%iterator
74 setup = "import iterqueue_speed_test\nimport iterqueue"
75 benchmark = "iterqueue_speed_test.%s(iterqueue.%s(%s))"
76 stmts = [benchmark%(fun.__name__, wrapper.__name__, iterator)
77 for wrapper in wrappers]
78 timers = [Timer(stmt=stmt, setup=setup) for stmt in stmts]
80 t_i = [min(timer.repeat(number=1, repeat=3)) for timer in timers]
82 results = ["%.5f s %s"%(t, wrapper.__name__)
83 for t, wrapper in zip(t_i, wrappers)]
85 print "\n".join(results)
87 time_benchmark(loop, iterqueue.XIter, xrange(1000))
91 time_benchmark(loop, wrappers, xrange(1000))
93 time_benchmark(peek_before_loop, peekables, xrange(1000))
95 time_benchmark(peek_in_loop, peekables, xrange(1000))
97 time_benchmark(bool_before_loop, state_reporters, xrange(1000))
99 time_benchmark(bool_in_loop, state_reporters, xrange(1000))