critor a écrit:Voilà, mis à jour le script de test de performances avec des entiers courts
Voici une amélioration qui est globale aux scripts de tests:
plutot que d'incorporer directement le benchmark a l'interieur de la fonction, on cree une fonction a part, comme ca on a juste a implémenter la fonction à tester normalement
beaucoup plus naturel, réutilisable, et propre
Pour ton exemple ci-dessus, le coeur de la fonction test est la meme, mais j'ai une autre fonction timefunc qui prend la fonction à benchmarker en parametre, ainsi que ses arguments.
- Code: Tout sélectionner
def test(l, n):
sdiff, arr = -1, []
arr.extend(genarr(l))
for k in range(n):
arr.extend(sortarr(arr, sdiff))
sdiff = -sdiff
return len(arr), arr[0], arr[len(arr) // 2 - 1], arr[len(arr) // 2], arr[len(arr) - 1]
def timefunc(func, *args):
timed = hastime()
start, stop = 0 or timed and monotonic(), 1
retvals = (func(*args))
stop = timed and monotonic() or 1
return stop - start, retvals
print(timefunc(test, 9, 2))
Et puis, bonus visuellement, puisque dans le print ca cloisonne un peu mieux le temps de la retval de la fonction. par exemple :
- Code: Tout sélectionner
/usr/bin/python3 test.py
(0.020823007998842513, (1160, 536870911, -536870911, 536870911, -536870911))
Edit: Maintenant, il faudrait probablement voir comment avoir quelque chose de compatible avec la syntaxe giac... (je suppose qu'il y aurait moyen, quitte a faire un if(giac) dans la fonction timefunc).