I want to compare two hashes. Each can have more than 20,000 objects.
I have the following questions:
- Can Ruby handle such a large amount of objects?
- Will comparing these two hashes take a lot of time?
- Can indexing be applied to reduce enumerations?
Sign Up to our social questions and Answers Engine to ask questions, answer people’s questions, and connect with other people.
Login to our social questions & Answers Engine to ask questions answer people’s questions & connect with other people.
Lost your password? Please enter your email address. You will receive a link and will create a new password via email.
Please briefly explain why you feel this question should be reported.
Please briefly explain why you feel this answer should be reported.
Please briefly explain why you feel this user should be reported.
Rails is a framework and has little to do with object comparison. Ruby is certainly capable of comparing 20,000 objects, assuming they fit well into memory or you are comparing them in a batch process that limits how many are instantiated at any time.
If you are are talking about comparing 20,000
ActiveRecordobjects in-memory you will probably run out of memory and may experience pretty slow results even if you don’t. ActiveRecord is pretty heavy-weight and not the best tool for working with large numbers of objects. However, I don’t know what these 20,000 objects are or exactly how you are comparing them, so maybe they don’t have to all be in-memory simultaneously and a batch process could complete this in a time frame you find acceptable.If these are simple objects in a simple ruby hash you can certainly iterate through them pretty quickly (though what is fast is completely dependent on what this is for). If your comparison logic is pretty simple it shouldn’t be too time consuming, assuming each object in your first hash is compared to a single corresponding object in the second hash. If every object in hash 1 is compared to each of the 20,000 in hash 2 then your total comparisons (20,000 * 20,0000) are much larger and this might not be as fast as you need.