回答
Rails是一个框架,与对象比较无关。 Ruby当然可以比较20,000个对象,假设它们很适合内存,或者您正在批量处理中比较它们,从而限制了在任何时候实例化的对象数量。
如果您正在讨论比较20,000 ActiveRecord
对象内存中您可能会用完内存并且即使您不这样也可能会遇到相当慢的结果。 ActiveRecord相当重,并不是处理大量对象的最佳工具。但是,我不知道这2万个对象是什么,或者你是如何比较它们的,所以也许它们不必全部同时在内存中,批处理可以在您认为可接受的时间范围内完成此操作。
如果这是一个简单的红宝石哈希简单的对象,你可以通过他们肯定迭代很快(虽然什么快速完全依赖于这是什么为)。如果比较逻辑非常简单,那么不应该太费时,假设第一个散列中的每个对象与第二个散列中的单个对应对象进行比较。如果散列1中的每个对象都与散列2中的每个散列2进行比较,那么您的总体比较(20,000 * 20,0000)会更大,并且这可能不会像您需要的那样快。
它的速度够快,甚至更好。 –
哈希本身很快,并且不会受到下限的限制。例如。这在这里甚至不需要一毫秒(在Windows上为Ruby 1.9.2):
irb(main):008:0> hash1 = (0...20000).inject({}) { | r, i | r[rand(100)*100000 + i] = rand; r } ; 23
=> 23
irb(main):009:0> hash2 = (0...20000).inject({}) { | r, i | r[rand(100)*100000 + i] = rand; r } ; 23
=> 23
irb(main):010:0> hash3 = hash1.dup ; 23
=> 23
irb(main):011:0> hash1 == hash2
=> false
irb(main):012:0> hash1 == hash3
=> true
其他一切都取决于你填入哈希值。
感谢这个例子帮了我很多。 –
- 1. Hadoop:处理大型序列化对象
- 2. pgadmin可以管理大型对象吗?
- 3. 如何处理.NET对象散列码?
- 4. Ruby on Rails序列化散列对象
- 5. 处理大型对象的WCF服务
- 6. Ruby的散列键的可用类型
- 7. JAXB可以处理java.time对象吗?
- 8. 处理大量对象
- 9. 处理大型阵列
- 10. Perl中的BerkeleyDB可以处理散列哈希(最多n个)的散列吗?
- 11. 存储持久V8对象处理的散列容器
- 12. 一个OnGestureListener对象可以处理两个GestureDetector对象吗?
- 13. 我可以在散列中省略散列的大括号吗?
- 14. 散列JavaScript对象
- 15. 如何处理可以调整大小或未调整大小的Python对象
- 16. 可以jsoup处理大小约1GB的大型HTML文件
- 17. 是否可以识别散列类型?
- 18. R中是否有像bigmemory这样的包可以处理大型列表对象?
- 19. 散列表碰撞处理
- 20. 是否可以重用CryptVerifySignature()散列对象?
- 21. 需要知道如何在ruby中处理散列键
- 22. 型GSON处理列表项目对<字符串,对象>
- 23. 哪些.NET JSON序列化器可以处理NHibernate代理对象?
- 24. 处理对象
- 25. 正确处理大量对象集合
- 26. 处理大量的对象在R
- 27. 处理大量的java对象
- 28. C#XNA,处理大量对象,
- 29. Javascript构建系统来处理大型对象
- 30. 处理大型对象在无状态环境
我认为这不是关于rails,而是关于ruby。 – ShiningRay
您需要更具体地了解您的“对象”字词。你比较简单的字符串/整数...比较一个简单的字符串散列和20 000+条目的整数是即时的。 –