没有i/o,没有数据库,没有puts语句。我有一个我实例化的中心对象,它的初始化方法中有几个Set.new创建。(我将Set.new更改为Array.new,但没有任何效果)。
我想做一个内存负载测试,但发现当我调用20,000次(每次调用添加一个新对象)时,对我系统的单个调用的性能从1x10-4到160x10-4大致呈线性增长。所以我从来没到过内存测试部分...
我将时间增加的范围缩小到Muffin.new语句,在initialize中创建了两个Set.new。
内存分配或对象创建花费的时间与创建的对象数量成正比,这似乎很奇怪,但这就是我所看到的。
我是不是遗漏了什么?真的是这样吗?还有没有其他我应该看或考虑的东西?
发布于 2014-09-03 03:28:44
听起来垃圾收集器在工作..。尝试在分配之前使用GC.disable,在分配之后使用GC.enable,看看它是否纠正了这个问题。
我不是Ruby专家,但是Ruby的垃圾收集实现可能不是这种语言最好的地方。有关详细信息,请阅读this。
发布于 2014-09-03 03:32:22
抱歉:找到了我对集合中的所有项目进行“收集”的地方;所以它当然是对象数量的线性。去掉它,时间是恒定的,就像它应该的那样。
不用说,我收回这个问题。
https://stackoverflow.com/questions/25630236
复制相似问题