Note
Go to the end to download the full example code.
Time benchmark of built-in hashing in Python#
This is a benchmark of different ways to perform inplace conjugation of a complex numpy array.
import random
import pyquickbench
def randbytes(n):
return {'data':random.randbytes(n)}
import hashlib
def md5(data):
return hashlib.md5(data)
def sha1(data):
return hashlib.sha1(data)
def sha224(data):
return hashlib.sha224(data)
def sha256(data):
return hashlib.sha256(data)
def sha384(data):
return hashlib.sha384(data)
def sha512(data):
return hashlib.sha512(data)
def sha3_224(data):
return hashlib.sha3_224(data)
def sha3_256(data):
return hashlib.sha3_256(data)
def sha3_384(data):
return hashlib.sha3_384(data)
def sha3_512(data):
return hashlib.sha3_512(data)
all_funs = [
md5 ,
sha1 ,
sha224 ,
sha256 ,
sha384 ,
sha512 ,
sha3_224 ,
sha3_256 ,
sha3_384 ,
sha3_512 ,
]
all_sizes = [2**n for n in range(25)]
basename = 'Hashing_bench'
timings_filename = os.path.join(timings_folder, basename+'.npz')
n_repeat = 1
all_values = pyquickbench.run_benchmark(
all_sizes ,
all_funs ,
setup = randbytes ,
n_repeat = n_repeat ,
filename = timings_filename ,
ShowProgress=True ,
)
pyquickbench.plot_benchmark(
all_values ,
all_sizes ,
all_funs ,
show = True ,
title = 'Built-in hashing in Python' ,
)

relative_to_val = {pyquickbench.fun_ax_name:"sha1"}
pyquickbench.plot_benchmark(
all_values ,
all_sizes ,
all_funs ,
relative_to_val = relative_to_val ,
show = True ,
title = 'Built-in hashing in Python' ,
ylabel = 'Time relative to sha1' ,
)
