7

重複の可能性:
Haskell データ型のメモリ フットプリント

組み合わせ問題を解くとき、私はしばしば解をビット文字列として表します。1010100010110111000110... わかりました。

[Int]ビット文字列にを使用するとInt、数値が実際にどれほど大きくても ( とIntは対照的に制限されているためInteger)、常に同じ量のメモリを消費すると考えました。コンピューターはビット表現のみを記憶し、Stringは私の知る限り、さらに多くのスペースを取ります。

私の考えは、データ型を使用することでした

data Bits = Empty | Zero Bits | One Bits deriving (Eq,Ord,Show)

Emptyしかし、コンストラクターZeroOne比較して、コンストラクターはどのくらいのメモリを使用しIntますか?

4

1 に答える 1

10

Intメモリ内の 2 つの単語 (#Iコンストラクターと#Intフィールド) のコストがBitsかかるため、データはさまざまなコストを使用できます。たとえば、次のZero (One (Zero Empty))ようになります。

  1. Emptyコンストラクターの一言
  2. Zeroコンストラクターとフィールドの 2 つの単語
  3. Oneコンストラクターとフィールドの 2 つの単語
  4. Zeroコンストラクターとフィールドの 2 つの単語

総コスト — 7 ワード。そのため、データのメモリ量は よりも多くなる可能性がありますInt

于 2012-09-03T09:58:09.617 に答える