Ruby中的符号表溢出问题

时间:2010-02-10 19:20:07

标签: ruby hashtable symbols

我编写了一些Ruby代码,将Google n-gram数据导入哈希表,将单词unigrams映射到各自的计数。我正在使用符号而不是键的字符串。我已经在linux盒子上运行这段代码了一段时间,没有任何问题。今天早上在我的Mac上运行它在加载大约200万个键值对后产生符号表溢出运行时错误。我不明白是什么导致了这个错误。任何人都有可能是什么原因的建议?我在OS X 10.5.8下运行Ruby 1.9.1。

2 个答案:

答案 0 :(得分:2)

虽然使用符号代替字符串而不是字符串通常更有效,但获得的效率数量与所涉及的重复程度成比例。由于您的键按定义是唯一的,您应该只使用字符串键以避免干扰符号表中的条目。

答案 1 :(得分:1)

差异是64位bs。 32位红宝石?我怀疑这是因为你的观察

  

在加载大约200万个键值对后产生符号表溢出运行时错误

如果是这种情况,那么你可以对它做任何事情,但是如果由于应用程序设计而不能选择字符串,则使用原生的64位ruby构建。否则你将不得不使用字符串。转换很简单:

:symbol.to_s == "symbol"
"symbol".to_sym == :symbol