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'        ,
)