Вы можете использовать timeit.
Вот пример того, как проверить naive_func, который принимает параметр, используя Python REPL:
>>> import timeit
>>> def naive_func(x):
... a = 0
... for i in range(a):
... a += i
... return a
>>> def wrapper(func, *args, **kwargs):
... def wrapper():
... return func(*args, **kwargs)
... return wrapper
>>> wrapped = wrapper(naive_func, 1_000)
>>> timeit.timeit(wrapped, number=1_000_000)
0.4458435332577161
Вам не нужна функция-обертка, если функция не 'не имеет никаких параметров.