Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- def intern_dict(dct: dict):
- #dupdict = to_sorted_dict(dct)
- dupdict = dict(dct)
- interned_dict = functools.lru_cache(maxsize=next_pow2(len(dupdict)))(
- dupdict.__getitem__
- )
- for k in dupdict.keys():
- dctres = interned_dict(k)
- return interned_dict
- def locals_backed(dic: dict):
- odict = collections.OrderedDict()
- odict.update(dic)
- return odict.__getitem__
- # return type('lbacked', (object,), to_sorted_dict(dic))().__getattribute__
- # locals().update(dic)
- # return lambda k: locals()[k]
- from random import randint
- firstdict = {'hi': 1, 'hello': 2, 'x': 8}
- for i in range(0, 128):
- firstdict[str(randint(1, 2039392))] = randint(1, 255)
- keylookups = [*firstdict.keys()]
- interned_one = locals_backed(firstdict)
- otherone = firstdict.__getitem__
- from timeit import timeit
- NITERS = 2000000
- print(timeit(lambda: sum(map(otherone, keylookups)), number=NITERS))
- print(timeit(lambda: sum(map(interned_one, keylookups)), number=NITERS))
Advertisement
Add Comment
Please, Sign In to add comment