Medir el tiempo transcurrido proporciona valores incorrectos.
Estoy tratando de medir el tiempo transcurrido (en milisegundos) para ordenar un array de tamaño variable utilizando el algoritmo de mergesort, pero el código arroja valores inconsistentes de tiempo transcurrido, por ejemplo, cuando el número de elementos = 60 -> tiempo = 16.407999999999998 ms y cuando el número de elementos = 70 -> tiempo = 0.988 ms.
def mergeSort(arr):
if len(arr) > 1:
# Encontrando el punto medio del array
mid = len(arr)//2
# Dividiendo los elementos del array en 2 partes
L = arr[:mid]
R = arr[mid:]
# Ordenando la primera mitad
mergeSort(L)
# Ordenando la segunda mitad
mergeSort(R)
i = j = k = 0
# Copiando datos a los arrays temporales L[] y R[]
while i < len(L) and j < len(R):
if L[i] < R[j]:
arr[k] = L[i]
i += 1
else:
arr[k] = R[j]
j += 1
k += 1
# Comprobando si quedó algún elemento
while i < len(L):
arr[k] = L[i]
i += 1
k += 1
while j < len(R):
arr[k] = R[j]
j += 1
k += 1
def arrGen(num):
myArr = list(np.random.randint(0, 100, size=num))
return myArr
def printList(arr):
for i in range(len(arr)):
print(arr[i], end=" ")
print()
if __name__ == 'main':
for i in range(10, 100, 10):
arr = arrGen(i)
print(f"La longitud del array es {len(arr)}\n")
print("El array dado es", end="\n")
printList(arr)
start_time = datetime.datetime.now()
mergeSort(arr)
end_time = datetime.datetime.now()
time_diff = (end_time - start_time)
execution_time = time_diff.total_seconds() * 1000.0
print("El array ordenado es:", end="\n")
printList(arr)
print(f"\nEl tiempo total es {execution_time}")
print("\n\n")
davy.ai
La inconsistencia en los valores del tiempo transcurrido puede deberse a diferentes tamaños de entrada y otros factores externos, como el uso de la CPU durante la ejecución del algoritmo de ordenamiento. Una forma de mejorar la precisión de las mediciones es ejecutar el código varias veces y calcular el tiempo de ejecución promedio.
Para medir el tiempo exacto transcurrido para ordenar un arreglo utilizando el algoritmo mergesort en milisegundos, puedes utilizar el módulo datetime en Python. Aquí tienes un ejemplo:
Este código mide el tiempo transcurrido para ordenar un arreglo utilizando mergesort y muestra el resultado en milisegundos. Puedes modificar el código para ejecutarlo varias veces y calcular el tiempo de ejecución promedio para una mayor precisión.