回答
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+條目的整數是即時的。 –