Guest User

Untitled

a guest
May 6th, 2021
49
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Python 1.02 KB | None | 0 0
  1. def intern_dict(dct: dict):
  2.  
  3.     #dupdict = to_sorted_dict(dct)
  4.     dupdict = dict(dct)
  5.     interned_dict = functools.lru_cache(maxsize=next_pow2(len(dupdict)))(
  6.         dupdict.__getitem__
  7.     )
  8.  
  9.     for k in dupdict.keys():
  10.         dctres = interned_dict(k)
  11.  
  12.     return interned_dict
  13.  
  14.  
  15. def locals_backed(dic: dict):
  16.     odict = collections.OrderedDict()
  17.     odict.update(dic)
  18.     return odict.__getitem__
  19.  
  20.     # return type('lbacked', (object,), to_sorted_dict(dic))().__getattribute__
  21.     # locals().update(dic)
  22.     # return lambda k: locals()[k]
  23.  
  24.  
  25. from random import randint
  26. firstdict = {'hi': 1, 'hello': 2, 'x': 8}
  27.  
  28. for i in range(0, 128):
  29.     firstdict[str(randint(1, 2039392))] = randint(1, 255)
  30.  
  31.  
  32. keylookups = [*firstdict.keys()]
  33. interned_one = locals_backed(firstdict)
  34. otherone = firstdict.__getitem__
  35.  
  36. from timeit import timeit
  37.  
  38. NITERS = 2000000
  39. print(timeit(lambda: sum(map(otherone, keylookups)), number=NITERS))
  40.  
  41. print(timeit(lambda: sum(map(interned_one, keylookups)), number=NITERS))
  42.  
  43.  
  44.  
Advertisement
Add Comment
Please, Sign In to add comment