Ruby内部机制:哈希表与闭包的深度剖析
1. 哈希表:Ruby内部的主力军
1.1 哈希表性能测试
通过运行相关代码,我们得到了哈希表大小与检索10,000个值所需时间的关系图。
| 哈希表大小 | 检索10,000个值所需时间 |
|---|---|
| 1 - 几个元素 | 约1.5毫秒 |
| 超过100个元素 | 时间随哈希表大小线性增加 |
| 约10,000个元素 | 超过1.6秒 |
当哈希表元素较少时,检索速度极快,时间短到在图中无法显示。但当元素数量超过100,尤其是达到1000时,检索时间会随哈希表大小线性增加。这是因为使用了较差的哈希函数,所有元素都被保存到同一个桶中,Ruby只能逐个搜索键值对。
1.2 Ruby 2.0的哈希优化
从Ruby 2.0版本开始,引入了新的优化机制,对于包含6个或更少元素的哈希表,不再计算哈希值,而是直接将数据保存到数组中,这种哈希表被称为打包哈希(packed hashes)。
st_table
type
real_entries
entries
RHash
tbl
:key => value
:key
超级会员免费看
订阅专栏 解锁全文
597

被折叠的 条评论
为什么被折叠?



