Observe a equação abaixo:
$$ \sum_{n \neq k}^{N}abs\left(x(n)^{2}-2*x(n) \right ) $$
In [1]:
# import the libraries
import time
import random
import numpy as np
In [2]:
# Inicializar vetor com uma grande quantidade de dados aleátorios
x = [random.randint(1,10) for i in range(50000)]
np_x = np.array(x)
# Selecionar valores k para a equação
k = [4, 8, 30]
In [3]:
start = time.time()
# Executar 200x o código analisado
for aux in range(200):
#----------------- code analysed ------------
all_sum = 0
for i in range(len(x)):
if(x[i] in k):
all_sum += abs(x[i]*x[i] - 2*x[i])
#--------------------------------------------
end = time.time()
time_for = end - start
print('Resultado da equação: ', all_sum)
print('Tempo de execução com \"for\": {0:.2f}s'.format(time_for))
In [4]:
start = time.time()
# Executar 200x o código analisado
for aux in range(200):
#----------------- code analysed ------------
np_result = np_x[np.isin(np_x,k)]
np_result = abs(np.square(np_result) - 2*np_result)
all_sum_np = np.sum(np_result)
#--------------------------------------------
end = time.time()
time_np = end - start
print('Resultado da equação: ', all_sum_np)
print('Tempo de execução com \"numpy\": {0:.2f}s'.format(time_np))
In [5]:
print('Para este exemplo a execução com numpy foi {0:.0f}x mais rápida que utilizando for'.format(time_for/time_np))