1"""
2Benchmarking sleep(0) performance.
3"""
4from __future__ import print_function
5
6import perf
7
8try:
9    xrange
10except NameError:
11    xrange = range
12
13
14
15N = 100
16
17
18def test(loops, sleep, arg):
19    t0 = perf.perf_counter()
20    for __ in range(loops):
21        for _ in xrange(N):
22            sleep(arg)
23    return perf.perf_counter() - t0
24
25def bench_gevent(loops, arg):
26    from gevent import sleep
27    from gevent import setswitchinterval
28    setswitchinterval(1000)
29    return test(loops, sleep, arg)
30
31def bench_eventlet(loops, arg):
32    from eventlet import sleep
33    return test(loops, sleep, arg)
34
35
36def main():
37    runner = perf.Runner()
38    for arg in (0, -1, 0.00001, 0.001):
39        runner.bench_time_func('gevent sleep(%s)' % (arg,),
40                               bench_gevent, arg,
41                               inner_loops=N)
42        runner.bench_time_func('eventlet sleep(%s)' % (arg,),
43                               bench_eventlet, arg,
44                               inner_loops=N)
45
46
47if __name__ == '__main__':
48    main()
49