示例#1
0
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))
示例#2
0
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))
示例#3
0
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()
示例#4
0
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()
示例#5
0
    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
示例#6
0
    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