From a1e4f059982541c2f331a08aa0320af846dee5d5 Mon Sep 17 00:00:00 2001 From: Gouvernathor <44340603+Gouvernathor@users.noreply.github.com> Date: Sat, 11 Nov 2023 21:02:36 +0100 Subject: [PATCH] Update the timeit function to use the timeit module add the autorange function as a bonus (I like it better) Patch-1-pull-request --- game/scripts/utility/common_functions.rpy | 12 +++++++----- 1 file changed, 7 insertions(+), 5 deletions(-) diff --git a/game/scripts/utility/common_functions.rpy b/game/scripts/utility/common_functions.rpy index dae89f72..2f7eac57 100644 --- a/game/scripts/utility/common_functions.rpy +++ b/game/scripts/utility/common_functions.rpy @@ -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."""