1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98
|
import perfplot
from cykhash import PyObjectMap
def setmeup(n):
print(n)
s = dict()
p = PyObjectMap()
for i in range(n):
s[i] = i
p[i] = i
return (s,p)
def contains_dict(maps):
s = maps[0]
n = len(s)//2
for i in range(n, 3*n):
i in s
def contains_pyobjectmap(maps):
p = maps[1]
n = len(p)//2
for i in range(n, 3*n):
i in p
def discard_insert_dict(maps):
s = maps[0]
n = len(s)
for i in range(n):
del s[i]
for i in range(n):
s[i] = i
def discard_insert_pyobjectmap(maps):
p = maps[1]
n = len(p)
for i in range(n):
p.discard(i)
for i in range(n):
p[i] = i
def insert_dict(maps):
n = len(maps[1])
s = dict()
for i in range(n):
s[i] = i
def insert_pyobjectmap(maps):
p = PyObjectMap()
n = len(maps[0])
for i in range(n):
p[i] = i
def insert_pyobjectmap_preallocated(maps):
n = len(maps[1])
p = PyObjectMap(int(1.3*n))
for i in range(n):
p[i] = i
if True:
perfplot.show(
setup = setmeup,
n_range=[2**k for k in range(18)],
kernels=[
#insert_set,
#insert_pyobjectset,
contains_dict,
contains_pyobjectmap,
discard_insert_dict,
discard_insert_pyobjectmap,
],
logx=False,
logy=False,
xlabel='number of operations',
title = "pyobject_map vs dict",
equality_check = None,
)
if True:
perfplot.show(
setup = setmeup,
n_range=[2**k for k in range(18)],
kernels=[
insert_dict,
insert_pyobjectmap,
insert_pyobjectmap_preallocated,
#contains_set,
#contains_pyobjectset,
#discard_insert_set,
#discard_insert_pyobjectset,
],
logx=False,
logy=False,
xlabel='number of operations',
title = "pyobject_map vs dict",
equality_check = None,
)
|