目的は、非常に大きな木を構築することです。非常に大きいとは、数ギガバイトに収まる数億のノードを意味します。
問題は、一般的なデータ構造のオーバーヘッドが大きすぎることです。「ノード」オブジェクトと子「マップ」を持つ余裕はありません。非常にコンパクトな方法でメモリに直接エンコードする必要があります。
したがって、内部でオブジェクトを使用せずに、キーと値として整数を持つツリーのメモリ効率の良い実装が存在するかどうか疑問に思っていました。ハッシュ スペース = エントリあたり平均 15 バイト) これにより、外部マッピング int<->keys および int<->values を使用してツリーを検索できます。
誰?
PS: 内部でオブジェクトを使用すると、少なくとも 5 倍のスペースが使用されます: 8 つの参照 + 4 つの余分なハッシュ スペース + 16 のオブジェクト ヘッダー + 8 つのキー ref + 8 つの値の参照 + 8 つの親の参照 + 8 つの子の参照 + (16 + x) for children map obj = エントリあたりほぼ 76+x バイト。(たとえば、デフォルトの実装では、エントリごとに約 100 バイトが必要でした)