python/perf.py

import time
cnt= int(1e6)
print(__file__, cnt)
s = 0
start =  time.process_time()
for i in range(cnt):
    pass
end =  time.process_time()
print(end - start, 'for pass')

def x():
    for i in range(cnt):
        yield i
def y(lev):
    yield from y(lev-1) if lev > 0 else x()

start =  time.process_time()
for i in x():
    pass
end =  time.process_time()
print(end - start, 'for yield pass')

for l in (0, 1, 5, 10 ,100):
    start =  time.process_time()
    for i in y(5):
        pass
    end =  time.process_time()
    print(end - start, 'for yield from pass level', l)