def compact()

in sketches/Sampler.py [0:0]


    def compact(self):
        if self.getNumHeavy() <= self.topk and self.size() <= self.maxsize:
            return
    
        self.buffer.sort()

        #print("compact", self.size(), self.getNumHeavy(), self.threshold, self.getTotal(), self.processed)
        while self.size() > self.maxsize or self.getNumHeavy() > self.topk:
            topk_item = self.buffer.pop()
            del self.item_dict[topk_item.item]
            if topk_item.item in self.heavy_set:
                self.heavy_set.remove(topk_item.item)
            self.threshold = min(self.threshold, topk_item.priority) # shouldn't need take min