Update the timeit function to use the timeit module

add the autorange function as a bonus (I like it better)

Patch-1-pull-request
This commit is contained in:
Gouvernathor 2023-11-11 21:02:36 +01:00 committed by LoafyLemon
parent 0d0c54058d
commit a1e4f05998
1 changed files with 7 additions and 5 deletions

View File

@ -11,6 +11,7 @@ init python early:
import re
import string
import functools
import timeit as timeit_module
from bisect import bisect
from operator import itemgetter
from operator import add as _add
@ -141,11 +142,12 @@ init python early:
return False
def timeit(func, loops=10000, args=(), kwargs={}):
start = time.time()
for i in range(loops):
func(*args, **kwargs)
end = time.time()
print(f"The task has taken {end-start} seconds to finish")
rv = timeit_module.timeit("func(*args, **kwargs)", number=loops, globals=dict(func=func, args=args, kwargs=kwargs))
print(f"The task has taken {rv} seconds to finish")
def autorange(func, args=(), kwargs={}):
loops, time = timeit_module.Timer("func(*args, **kwargs)", globals=dict(func=func, args=args, kwargs=kwargs)).autorange()
print(f"The task has taken {time/loops} seconds to finish ({loops} iterations in {time} seconds)")
def list_swap_values(l, val1, val2):
"""Mutates the original list."""