C++で大きなデータセットを扱うのは今回が初めてです。これまでは、配列に格納したいものを格納していました。今私は4000x4000の高さマップを生成していますので、私のプログラムが突然100MBを上回る前に(私のようなインディー・フェローのためにちょっと変わったことに)少しメモリの効率が上がりたいです。私のアレイタイプをInt16に変更するとストレージが節約できますか?
大部分のデータをまとめるとロードされますが、実行中にプログラムで大量のデータが必要になるため、大型の2Dアレイが使用されてしまいます。私は彼らにメモリをほとんど使わない方法を見つけたいと思っています。
私のheightmapは、小さな整数値しかとらないように設計されています。可能であればInt8
に収まるくらい小さいですが、少なくとも最小値はInt16
です。これまでのところ、Int
タイプを使用していましたが、これは私の実装ではInt32
です。
2D配列とベクトルをInt16
タイプのセットに切り替えると、ストレージの半分が節約できますか?あるいは、アレイの1つの要素がまだ完全な1バイトを取り、単純にこれらの手の届かないビットをゼロのままにしますか?
「Int16」を意味するかどうかはわかりませんが、私はそれが2バイト以上を占めると予想します。どのような "手つかずのビット"とはどういう意味ですか? – user463035818