temps exécution d'une fonction
Bonjour,
je cherche à comparer les temps d'exécution de différentes fonctions de tri d'un tableau de données.
J'utilise à cet effet la bibliothèque "time". Mon code est donné ci-dessous.
Lors de mes essais, les temps varient significativement pour un même tri et une même longueur de tableau. J'imagine que c'est à cause des autres taches en fonctionnement simultanément sur mon PC. Y-a-t-il moyen de bloquer l'exécution de ces autres tâches le temps du chronométrage ?
Merci
Code:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74
|
from random import randrange
import time
#Fonction tri par sélection sur un tableau T
#Renvoie T trié par ordre croissant
def triSelection(T):
compteur = 0
for i in range(0,len(T)-1): #boucle de parcours du tableau
min = i
for j in range (i+1, len(T)): #boucle de rangement de élément le plus petit
if T[j]<T[min]:
min = j
compteur = compteur + 1
#print(compteur)
if i != min:
T[i], T[min] = T[min], T[i] #echange des deux cases de T
#print ("compteur triSelection: ",compteur)
return T
#Fonction tri par insertion sur un tableau T
#Renvoie T trié par ordre croissant
def triInsertion(T):
compteur = 0
for i in range(1,len(T)-1): #boucle de parcours du tableau
x = T[i]
j = i
while j > 0 and T[j-1] > x:
T[j] = T[j-1]
j = j-1
compteur = compteur +1
T[j] = x
#print ("compteur triInsertion: ",compteur)
return T
#Fonction tri par fusion sur un tableau T
#Renvoie T trié par ordre croissant
def triFusion(t):
if len(t)<2:
return t
else:
m=len(t)//2
return fusion(triFusion(t[:m]),triFusion(t[m:]))
#fonction tri appelee par triFusion
def fusion(t1,t2):
if t1==[]:
return t2
elif t2==[]:
return t1
elif t1[0]<t2[0]:
return [t1[0]]+fusion(t1[1:],t2)
else:
return [t2[0]]+fusion(t1,t2[1:])
#prog principal
T=[]
nb= int(input("combien d'élémnts?"))
for i in range (nb):
T.append(randrange(10000))
print (T)
print ("************************ j'ai trié")
tempsDebut = time.clock() #depart chrono
#print(triSelection(T))
print(triInsertion(T))
#print(triFusion(T))
tempsFin = time.clock() #arret chrono
print("Temps total: ", tempsFin - tempsDebut) |