オブジェクトが3D配列に格納されている3Dゲームがあります。すべてのオブジェクトは、比較的大きなサイズ(正確には数メガバイト、4,194,304バイト)のstruct
です。ポインタの配列と生の値の配列:パフォーマンスとメモリ
生の値の配列として格納した場合:gameObject objects[64][64][8]
、それらはすべて1か所に格納されますが、オブジェクトが使用されているかどうかにかかわらず、すべてのオブジェクトが割り当てられます。
Iは、ポインタの配列として、配列を割り当てる場合は、:gameObject *objects[64][64][8]
、(アレイ全体の半分以上であってもよい)、未使用のオブジェクトは、それらが必要になるまでメモリへの影響を低減する、割り当てられないであろうが、なぜならより遅いかもしれませんオブジェクトは、最善のアプローチである、すべてのパフォーマンスとメモリ使用量の間のトレードオフを考慮すると、メモリ
を超えていますか?私の懸念は有効ですか?
「数バイト」はいくらですか?ポインタはx86_64上で8バイトですが、これは私もいくつかあると考えています – hirschhornsalz
申し訳ありませんが、私は自分のコードの間違った部分を見ていることに気づきました;)。それはもっと__million__バイトのようになります。 – Greg
"パフォーマンスとメモリ使用の間のトレードオフを考慮して"あなたが行うことは、測定するまで無関係です。 – pmg