Secure your code as it's written. Use Snyk Code to scan source code in minutes - no build needed - and fix issues immediately.
def _benchmark():
"""
On 64-bit processors sha512 may be faster than sha256
References:
https://crypto.stackexchange.com/questions/26336/sha512-faster-than-sha256
"""
result = ub.AutoOrderedDict()
algos = ['sha1', 'sha256', 'sha512']
for n in ub.ProgIter([1, 10, 100, 1000, 10000, 100000], desc='time'):
# for key in hashlib.algorithms_guaranteed:
for key in algos:
hashtype = _rectify_hasher(key)
t1 = ub.Timerit(100, bestof=10, label=key, verbose=0)
for timer in t1:
data = b'8' * n
with timer:
hasher = hashtype()
hasher.update(data)
result[key][n] = t1.min()
import pandas as pd
print(pd.DataFrame(result))
result = ub.AutoOrderedDict()
for n in ub.ProgIter([1, 10, 100, 1000, 10000, 100000], desc='time'):
# for key in hashlib.algorithms_guaranteed:
for key in algos:
hashtype = _rectify_hasher(key)
t1 = ub.Timerit(100, bestof=10, label=key, verbose=0)
for timer in t1:
def benchmark_attribute_access():
"""
How fast are different methods of accessing attributes? Lets find out!
"""
instances = {
'simple': Simple(),
'complex': Complex(),
'slot_simple': SimpleWithSlots(),
'slot_complex': ComplexWithSlots(),
}
import ubelt as ub
ti = ub.Timerit(100000, bestof=500, verbose=1, unit='us')
# Do this twice, but keep the second measure
data = ub.AutoDict()
for selfname, self in instances.items():
print(ub.color_text('--- SELF = {} ---'.format(selfname), 'blue'))
subdata = data[selfname] = {}
for timer in ti.reset('self.attr1'):
with timer:
self.attr1
subdata[ti.label] = ti.min()
for timer in ti.reset('getattr(self, attr1)'):
"""
import operator as op
import ubelt as ub
import random
import string
rng = random.Random(0)
items = [rng.choice(string.printable) for _ in range(5000)]
hist_ = ub.ddict(lambda: 0)
for item in items:
hist_[item] += 1
OrderedDict = ub.odict
ti = ub.Timerit(1000, bestof=10, verbose=1)
for timer in ti.reset('dict_subset_iter'):
with timer:
getval = op.itemgetter(1)
key_order = (key for (key, value) in sorted(hist_.items(), key=getval))
hist = ub.dict_subset(hist_, key_order)
for timer in ti.reset('dict_subset_list'):
with timer:
getval = op.itemgetter(1)
key_order = [key for (key, value) in sorted(hist_.items(), key=getval)]
hist = ub.dict_subset(hist_, key_order)
for timer in ti.reset('direct_itemgetter'):
with timer:
# WINNER
Results:
Timed best=25.484 µs, mean=25.701 ± 0.1 µs for itemgetter
Timed best=28.810 µs, mean=29.138 ± 0.3 µs for lambda
"""
import operator as op
import ubelt as ub
import random
import string
rng = random.Random(0)
items = [rng.choice(string.printable) for _ in range(5000)]
hist_ = ub.ddict(lambda: 0)
for item in items:
hist_[item] += 1
ti = ub.Timerit(1000, bestof=10, verbose=1)
for timer in ti.reset('itemgetter'):
with timer:
# WINNER
getval = op.itemgetter(1)
key_order = [key for (key, value) in sorted(hist_.items(), key=getval)]
for timer in ti.reset('lambda'):
with timer:
key_order = [key for (key, value) in sorted(hist_.items(), key=lambda x: x[1])]
del key_order