Почему моя реализация кучи в Python намного медленнее по сравнению со стандартной библиотекой heapq? ⇐ Python
-
Anonymous
Почему моя реализация кучи в Python намного медленнее по сравнению со стандартной библиотекой heapq?
Я сам реализую Min Heap, это моя функция вставки:
def Insert(self, new_elem): self.elems.append(new_elem) cur_pos = len(self.elems) - 1 пока cur_pos > 0: пар_поз = (cur_pos - 1) // 2 если self.elems[cur_pos] >= self.elems[par_pos]: перерыв еще: self.swap_node(cur_pos, par_pos) cur_pos = пар_поз. Я пытаюсь вставить такой список:
для i в диапазоне (int(3e5), -1, -1): min_heap.insert(я) Эти операции занимают 0,73 секунды в моей реализации Heap, тогда как при использовании библиотеки heapq они занимают всего 0,05 секунды. Я заметил, что heapq не реализован в C. Так почему же такая большая разница?
Я сам реализую Min Heap, это моя функция вставки:
def Insert(self, new_elem): self.elems.append(new_elem) cur_pos = len(self.elems) - 1 пока cur_pos > 0: пар_поз = (cur_pos - 1) // 2 если self.elems[cur_pos] >= self.elems[par_pos]: перерыв еще: self.swap_node(cur_pos, par_pos) cur_pos = пар_поз. Я пытаюсь вставить такой список:
для i в диапазоне (int(3e5), -1, -1): min_heap.insert(я) Эти операции занимают 0,73 секунды в моей реализации Heap, тогда как при использовании библиотеки heapq они занимают всего 0,05 секунды. Я заметил, что heapq не реализован в C. Так почему же такая большая разница?