| 12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879 |
- import timeit
- from about_time.human_duration import fn_human_duration
- from .utils import toolkit
- from ..core.configuration import config_handler
- from ..core.progress import __alive_bar
- human_duration = fn_human_duration(False)
- def overhead(total=None, *, calibrate=None, **options):
- number = 400 # timeit number of runs inside each repetition.
- repeat = 300 # timeit how many times to repeat the whole test.
- config = config_handler(disable=True, **options)
- with __alive_bar(config, total, calibrate=calibrate, _cond=__lock, _sampling=True) as loc:
- # the timing of the print_cells function increases proportionately with the
- # number of columns in the terminal, so I want a baseline here `VOID.cols == 0`.
- res = timeit.repeat('alive_repr()', repeat=repeat, number=number, globals=loc)
- return human_duration(min(res) / number)
- OVERHEAD_SAMPLING_GROUP = [
- ('definite', dict(total=1)),
- ('manual(b)', dict(total=1, manual=True)),
- ('manual(u)', dict(manual=True)),
- ('unknown', dict()),
- ]
- OVERHEAD_SAMPLING = [
- ('default', dict()),
- ('receipt', dict(receipt_text=True)),
- ('no spinner', dict(spinner=None)),
- ('no elapsed', dict(elapsed=False)),
- ('no monitor', dict(monitor=False)),
- ('no stats', dict(stats=False)),
- ('no bar', dict(bar=None)),
- ('only spinner', dict(bar=None, monitor=False, elapsed=False, stats=False)),
- ('only elapsed', dict(bar=None, spinner=None, monitor=False, stats=False)),
- ('only monitor', dict(bar=None, spinner=None, elapsed=False, stats=False)),
- ('only stats', dict(bar=None, spinner=None, monitor=False, elapsed=False)),
- ('only bar', dict(spinner=None, monitor=False, elapsed=False, stats=False)),
- ('none', dict(bar=None, spinner=None, monitor=False, elapsed=False, stats=False)),
- ]
- def overhead_sampling():
- print('warmup', end='', flush=True)
- for _ in range(5):
- print('.', end='', flush=True)
- overhead()
- print('\r', end='', flush=True)
- max_name = max(len(x) for x, _ in OVERHEAD_SAMPLING)
- print(f'{"":>{max_name}} | {" | ".join(g for g, _ in OVERHEAD_SAMPLING_GROUP)} |')
- for name, config in OVERHEAD_SAMPLING:
- print(f'{name:>{max_name}} ', end='', flush=True)
- for group, data in OVERHEAD_SAMPLING_GROUP:
- print(f'| {overhead(**data, **config):^{len(group)}} ', end='', flush=True)
- print('|')
- def __noop_p(_ignore):
- return 0
- class __lock:
- def __enter__(self):
- pass
- def __exit__(self, _type, value, traceback):
- pass
- if __name__ == '__main__':
- parser, run = toolkit('Estimates the alive_progress overhead per cycle on your system.')
- run(overhead_sampling)
|