import time from decimal import Decimal class CachingDecimal(Decimal): def __hash__(self): # hashing Decimals is SLOW, cache hash try: return self.myHash; except: self.myHash = super().__hash__(); return self.myHash; val1 = 1e100 val2 = 2e100 val3 = 3e100 d = dict(); start = time.time(); i = int(val1); j = int(val2); k = int(val3); for i in range(1000000): d[i,j,k] = 5; print("int: ",time.time() - start); d = dict(); start = time.time(); i = CachingDecimal(val1); j = CachingDecimal(val2); k = CachingDecimal(val3); for i in range(1000000): d[i,j,k] = 5; print("CachingDecimal: ",time.time() - start); d = dict(); start = time.time(); i = Decimal(val1); j = Decimal(val2); k = Decimal(val3); for i in range(1000000): d[i,j,k] = 5; print("Decimal: ",time.time() - start);