(original) (raw)

import pyperf # import gc def delete_list(nexception): many_exceptions = [BaseException() for _ in range(nexception)] many_exceptions = None # gc.collect() def delete_chain(chain_length): many_exceptions = [] previous = None for i in range(chain_length): exc = BaseException(f"EXC#{i}") exc.__context__ = previous many_exceptions.append(exc) previous = exc exc = None previous = None for i in range(len(many_exceptions)): many_exceptions[i] = None #gc.collect() runner = pyperf.Runner() runner.bench_func('list 10', delete_list, 10) runner.bench_func('list 100', delete_list, 100) runner.bench_func('list 1000', delete_list, 1000) runner.bench_func('list 10_000', delete_list, 10_000) runner.bench_func('chain 10', delete_chain, 10) runner.bench_func('chain 100', delete_chain, 100) runner.bench_func('chain 1000', delete_chain, 1000) runner.bench_func('chain 10_000', delete_chain, 10_000)