def page_pair_test(): pairs = [] size = 10000 for i in range(size): p = pair(id = i, id1 = i, id2 = i) pairs.append(p) p = Ipage() for pa in pairs: if not p.is_fit(pa): break p.insert(pa) p.store('page.txt', 0) print(p.get("100", 1))
def page_pair_test(): pairs = [] size = 10000 for i in range(size): p = pair(id=i, id1=i, id2=i) pairs.append(p) p = Ipage() for pa in pairs: if not p.is_fit(pa): break p.insert(pa) p.store('page.txt', 0) print(p.get("100", 1))
def page_test(): studs = get_dataset() p = Ipage() open('page.txt', 'w').close() from mx.BeeBase import BeeDict tree = BeeDict.BeeStringDict(os.getcwd() + '/storage/' + student.__name__ + 'name', keysize=256) for stud in studs[0:10]: p.insert(stud) p.store('page.txt', 0) p.store_to_tree(tree, student, 'name', 'page.txt') print (zip(tree.keys(), tree.values())) tree.close()
def page_test(): studs = get_dataset() p = Ipage() open('page.txt', 'w').close() from mx.BeeBase import BeeDict tree = BeeDict.BeeStringDict(os.getcwd() + '/storage/' + student.__name__ + 'name', keysize=256) for stud in studs[0:10]: p.insert(stud) p.store('page.txt', 0) p.store_to_tree(tree, student, 'name', 'page.txt') print(zip(tree.keys(), tree.values())) tree.close()
def put(self, k, v): p = self.get_page(k) if p.is_fit(v) == False and p.d == self.gd: self.pp = self.pp + self.pp self.gd += 1 if p.is_fit(v) == False and p.d < self.gd: # p.insert(v) p1 = Ipage() p2 = Ipage() items = p.items() items.append(v.get_string()) first = True while True: for record_str in items: entity = self.type(to_parse=record_str) k2 = int(entity.get_key()) h = self.my_hash(k2) # h = hash(k2) h = h & ((1 << self.gd) - 1) if (h | (1 << p.d) == h): p2.insert(entity) else: p1.insert(entity) if p1.count == 0 or p2.count == 0 or p1.end_pointer > p1.total_space or p2.end_pointer > p2.total_space: print('oops len = ', len(self.pp), ' gd = ', self.gd) if first: p.d += 1 p1 = Ipage() p2 = Ipage() if p.d == self.gd: first = False else: print(len(self.pp)) p.d = self.gd self.pp *= 2 self.gd += 1 p1 = Ipage() p2 = Ipage() else: break self.counter += 1 for i, x in enumerate(self.pp): if x == p.page_offset: if (i >> p.d) & 1 == 1: self.pp[i] = self.counter * p.total_space else: self.pp[i] = p.page_offset p1.set_doubling(p.d + 1) p2.set_doubling(p1.d) p1.store(self.filename, p.page_offset) p2.store(self.filename, self.counter * p.total_space) else: p.insert(v) p.store(self.filename, p.page_offset) # if self.check() == False: # pass self.size += 1