If you create 10,000 strings in a loop, a lot of garbage collection has to take place which uses up a lot of resources.
If you do the same thing with symbols, you create objects which cannot be garbage collected.
Which is worse?
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.
Seeing as symbols are almost always created via literals, there isn’t much potential for a memory explosion here. Their behavior is pretty much required by their usage: every time you refer to a symbol, it’s the same one.
Similarly, strings need to be unique in Ruby. This is due to the way they’re used – text processing etc.
Decide which one to use depending on their semantics, don’t optimize prematurely.