Skip to content

Instantly share code, notes, and snippets.

@endersonmenezes
Last active January 17, 2020 17:46
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save endersonmenezes/3d5061e242fc3fd521de59261f83fe80 to your computer and use it in GitHub Desktop.
Save endersonmenezes/3d5061e242fc3fd521de59261f83fe80 to your computer and use it in GitHub Desktop.
Uma breve comparação entre verificação de itens em um array, utilizando chaves aleatórias em MD5. O conceito desse teste é criar uma ordem de prioridade das chaves, e chegar uma váriavel 'chave' respeitando essa lógica.
import secrets
import time
import numpy as np
resultados_if = []
resultados_last = []
resultados_for = []
chave_full = secrets.token_urlsafe(256)
chave_com_tag = secrets.token_urlsafe(256)
chave_com_usage = secrets.token_urlsafe(256)
chave_conta = secrets.token_urlsafe(256)
for i in range(1000):
t1 = time.time()
# Logica para criar um mapeamento aleatório
mapeamento = list()
if bool(secrets.randbits(1)):
mapeamento.append(chave_full)
if bool(secrets.randbits(1)):
mapeamento.append(chave_com_tag)
if bool(secrets.randbits(1)):
mapeamento.append(chave_com_usage)
if bool(secrets.randbits(1)):
mapeamento.append(chave_conta)
if len(mapeamento) == 0:
mapeamento.append(secrets.choice([chave_full, chave_com_tag, chave_com_usage, chave_conta]))
# Logica para verificar esse mapeamento com IF
if chave_full in mapeamento:
chave = chave_full
elif chave_com_tag in mapeamento:
chave = chave_com_tag
elif chave_com_usage in mapeamento:
chave = chave_com_usage
elif chave_conta in mapeamento:
chave = chave_conta
t2 = time.time()
# Envia o resultado para resultados em tempo
resultados_if.append(t2-t1)
for i in range(1000):
t1 = time.time()
# Logica para criar um mapeamento aleatório
mapeamento = list()
if bool(secrets.randbits(1)):
mapeamento.append(chave_full)
if bool(secrets.randbits(1)):
mapeamento.append(chave_com_tag)
if bool(secrets.randbits(1)):
mapeamento.append(chave_com_usage)
if bool(secrets.randbits(1)):
mapeamento.append(chave_conta)
if len(mapeamento) == 0:
mapeamento.append(secrets.choice([chave_full, chave_com_tag, chave_com_usage, chave_conta]))
# Logica para verificar esse mapeamento com IF
chave = mapeamento[-1]
t2 = time.time()
# Envia o resultado para resultados em tempo
resultados_last.append(t2-t1)
for i in range(1000):
t1 = time.time()
# Logica para criar um mapeamento aleatório
mapeamento = list()
if bool(secrets.randbits(1)):
mapeamento.append(chave_full)
if bool(secrets.randbits(1)):
mapeamento.append(chave_com_tag)
if bool(secrets.randbits(1)):
mapeamento.append(chave_com_usage)
if bool(secrets.randbits(1)):
mapeamento.append(chave_conta)
if len(mapeamento) == 0:
mapeamento.append(secrets.choice([chave_full, chave_com_tag, chave_com_usage, chave_conta]))
# Logica para verificar esse mapeamento com IF
for item in mapeamento:
chave = item
t2 = time.time()
# Envia o resultado para resultados em tempo
resultados_for.append(t2-t1)
np_resultados_if = np.array(resultados_if)
np_resultados_last = np.array(resultados_last)
np_resultados_for = np.array(resultados_for)
print('A média de tempo utilizando IF, foi dê: {}'.format(np_resultados_if.mean()))
print('A média de tempo utilizando LAST ITEM, foi dê: {}'.format(np_resultados_last.mean()))
print('A média de tempo utilizando FOR, foi dê: {}'.format(np_resultados_for.mean()))
print('--')
print('A SOMA de tempo utilizando IF, foi dê: {}'.format(np_resultados_if.sum()))
print('A SOMA de tempo utilizando LAST ITEM, foi dê: {}'.format(np_resultados_last.sum()))
print('A SOMA de tempo utilizando FOR, foi dê: {}'.format(np_resultados_for.sum()))
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment