🐷
[Feature #21216] Set を Ruby のコアクラスとして実装するチケット
[Feature #21216] Implement Set as a core class
-
Set
を Ruby のコアクラスとして実装するチケット - 現状の
Set
は Ruby で実装されており、内部の実装でHash
を使用している - しかし
Hash
を利用することでSet
内で不要な値を保存してしまい効率が悪い - これをコアクラス = CRuby レイヤーで実装することで効率化を図りたい、という旨のチケット
- これによりメモリの使用量が33%〜20%少なくなるらしい
- 基本的な実装のアルゴリズムなどは Ruby の実装と変わらないみたい
-
Set#divide
が一部変わってはいるらしい
-
- 全体的なベンチマークも高速化しているみたいですね
- その他、いくつか差異があるんですが詳しくはチケットを参照
- これに関しては開発版の Ruby 3.5-dev で既に反映済みとなっています
-
Set
を使っているプロダクトはもしかしたら Ruby 3.5 で影響があるかもしれないので注意する必要があるかもしれません
Discussion