私がやろうとしていること:
RAMに非常に多くのデータを保存したい。アクセスを高速化し、メモリ フットプリントを削減するには、構造体値の配列を使用する必要があります。
MyStruct[] myStructArray = new MyStruct[10000000000];
ここで、MyStruct に 1、2、3、または 4 バイトの符号なし整数値を格納したいと考えています。ただし、可能な限り少ないメモリ量のみを使用する必要があります。値を1バイト格納すると、1バイトのみを使用する必要があります。
これをクラスで実装することもできますが、64 ビット システムではオブジェクトへのポインターに 8 バイトが必要になるため、ここでは不適切です。したがって、すべての配列エントリに対して 4 バイトだけを格納する方がよいでしょう。しかし、必要なときに1/2/3バイトのみを保存/使用したいです。そのため、いくつかの派手なクラスを使用できません。
また、値の特別な順序が必要なため、1 バイトの 1 つの配列、2 バイトの 1 つの配列なども使用できません。また、値が非常に混在しているため、他の配列に切り替えるときに追加の参照を保存しても役に立ちません。
1 バイト、約 60% の時間で 2 バイト、約 25% の時間で 3 バイトのみを格納する必要があるにもかかわらず、4 バイト uint の配列を格納する唯一の方法は何ですか?