データ型がののコンストラクタを持っているとします。大規模代数データ型のメモリフットプリント
data ManyValues
= Value0
| Value1
| Value2
...
| Value255
| Value256
deriving (Show,Eq)
このデータ型の任意の値のメモリフットプリントはどのくらいですか?私の最初の理解は、各コンストラクタがメモリ内の8ビットワードであることですが、8ビットで可能な値よりも多くのコンストラクタがデータ型にある場合はどうなりますか?コンストラクタは、データ型に存在するコンストラクタの全範囲に対処できるようになるまで、16ビットまでバンプされますか?それとも、私はこれを混ぜ合わせたのですか?
これはあなたを助けるかもしれません:https://stackoverflow.com/questions/3254758/memory-footprint-of-haskell-data-types – Sibi
ありがとう、私は投稿する前にそれを見ました。ゼロフィールドのコンストラクタに関しては、オブジェクトの共有について興味深い点がありますが、8ビットで処理できるコンストラクタよりも多くのコンストラクタ(ゼロフィールドのコンストラクタさえ)がある場合には何が起こるのかについては言及していません。これは、8ビットヘッダーが使用されていると仮定しています。 – carpemb
ああ、その答えでは、ヘッダー "単語"は間違いなく少なくとも32ビットです。もちろん、問題は依然として原則です(例えば、最初の32ビットを使用して選択肢を絞り込む方法があります)が、データ型に2^32のコンストラクタがある場合、他のエンジニアリングの困難に直面する可能性があります。 – pigworker