Ruby 符号不是垃圾收集的!?那么,使用String不是更好吗?

标签 ruby performance memory garbage-collection symbols

如果您在循环中创建 10,000 个字符串,则必须进行大量垃圾收集,这会占用大量资源。

如果你对符号做同样的事情,你创建的对象 cannot be garbage collected .

哪个更糟?

最佳答案

如果您在循环中引用相同的符号,则不必每次都重新创建该对象,即

while i < 10000
  i += 1
  :im_using_this_symbol_here
end

现在,如果您在此处使用字符串,则该字符串将被重新创建 10K 次。通常,在您几乎将文字视为常量或键的情况下使用符号。对我来说一个很好的例子是

link_to "News", :action => 'news'

而不是

link_to "News", "action" => 'news'

在您的应用程序中一遍又一遍地重复使用操作。

关于Ruby 符号不是垃圾收集的!?那么,使用String不是更好吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/659755/

相关文章:

ruby-on-rails - rake db:create - Mysql2::Error: 未知数据库

ruby-on-rails - rake 数据库 :create ruby on rails

ruby - NameError:SAVON gem 的未初始化常量 OpenSSL::SSL::SSLContext::METHODS

ruby - rails 改变部分集合渲染的路径

c - 优化这个将在 C 中运行大量次的小函数

assembly - 引导加载程序加载自身而不是内核

java - 在时间复杂度很重要的情况下从值数组映射键值

c++ - 为什么使用私有(private)动态数组时性能最差

c - STATUS_ACCESS_VIOLATION 由于 malloc()?

python - 如何让多个用户同时使用同一个系统运行tensorflow程序?