首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >为什么我的Ruby程序在我添加10,000个对象时会使x100变慢?

为什么我的Ruby程序在我添加10,000个对象时会使x100变慢?
EN

Stack Overflow用户
提问于 2014-09-03 02:47:42
回答 2查看 137关注 0票数 1

没有i/o,没有数据库,没有puts语句。我有一个我实例化的中心对象,它的初始化方法中有几个Set.new创建。(我将Set.new更改为Array.new,但没有任何效果)。

我想做一个内存负载测试,但发现当我调用20,000次(每次调用添加一个新对象)时,对我系统的单个调用的性能从1x10-4到160x10-4大致呈线性增长。所以我从来没到过内存测试部分...

我将时间增加的范围缩小到Muffin.new语句,在initialize中创建了两个Set.new。

内存分配或对象创建花费的时间与创建的对象数量成正比,这似乎很奇怪,但这就是我所看到的。

我是不是遗漏了什么?真的是这样吗?还有没有其他我应该看或考虑的东西?

EN

回答 2

Stack Overflow用户

发布于 2014-09-03 03:28:44

听起来垃圾收集器在工作..。尝试在分配之前使用GC.disable,在分配之后使用GC.enable,看看它是否纠正了这个问题。

我不是Ruby专家,但是Ruby的垃圾收集实现可能不是这种语言最好的地方。有关详细信息,请阅读this

票数 0
EN

Stack Overflow用户

发布于 2014-09-03 03:32:22

抱歉:找到了我对集合中的所有项目进行“收集”的地方;所以它当然是对象数量的线性。去掉它,时间是恒定的,就像它应该的那样。

不用说,我收回这个问题。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/25630236

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档