Kanwei minheap慢红宝石

时间:2012-12-20 18:43:24

标签: ruby heap containers min

我在ruby中实现了一个min heap,我想针对更专业的代码进行测试但是我无法让Kanwei的MinHeap正常工作。 这样:

mh = Containers::MinHeap.new # Min_Binary_Heap.new
for i in 0..99999
    mh.push(rand(9572943))
end

t = Time.now
for i in 0..99999
    mh.pop
end
t = Time.now - t
print "#{t}s"

我的版本在~2.2秒内对100,000个值执行相同的弹出操作,我认为它非常慢,但这甚至都不能完成运行。是预期还是我做错了什么?

1 个答案:

答案 0 :(得分:0)

我不认为你做错了什么。

查看源代码(https://github.com/kanwei/algorithms/blob/master/lib/containers/heap.rb),在完成堆设置后输入puts语句。它看起来像是一个非常耗费内存的操作来放置元素(可能每次都使用),所以它可能会帮助你完成它。

我也不确定他是否为每个实际节点创建了一个节点类。由于它们不会被清除,所以当你完成时,内存中将有大约100,000个对象。

不确定有多少帮助,也许看看来源与您的尝试有何不同?