Unlocking Ractors: Object_id
a year ago
- #Performance
- #Ruby
- #Ractors
- Ruby中的Ractor正在通过修复bug和减少竞争点来不断改进,从而提升性能。
- 最近的改动包括用无锁的Hash-Set替代fstring_table,使Ractor的JSON基准测试速度提升了一倍。
- 由于Ruby 2.7中为保持GC压缩稳定性而引入的内部哈希表实现变更,#object_id方法现已成为一个竞争点。
- 针对#object_id的优化提案包括延迟初始化ID到对象的映射表,以及将对象ID内联存储在对象中以减少同步需求。
- 对于无法内联存储实例变量的对象(如T_STRING、T_ARRAY),仍需寻找替代方案来避免全局同步问题。
- 该补丁旨在让#object_id访问在多数情况下实现无锁化,但通用对象和无锁形状创建仍需进一步研究。