thể trùng lặp:
Memory footprint of Haskell data typesSử dụng bộ nhớ của nhà xây dựng trong Haskell
Khi giải các bài toán tổ hợp, tôi sẽ thường xuyên đại diện cho giải pháp như là một chuỗi bit, ví dụ. 1010100010110111000110 ... Bạn nhận được hình ảnh.
I figured rằng khi tôi sử dụng [Int]
cho chuỗi bit, Int
luôn dành cùng một lượng bộ nhớ, bất kể lớn như thế nào số lượng thực sự là (vì Int
nó bị chặn, trái ngược với Integer
), như máy tính chỉ nhớ đại diện bit, và String
's sẽ mất nhiều không gian hơn như xa như tôi biết.
Ý tưởng của tôi là sau đó sử dụng các kiểu dữ liệu
data Bits = Empty | Zero Bits | One Bits deriving (Eq,Ord,Show)
Nhưng bao nhiêu bộ nhớ làm các nhà thầu Empty
, Zero
và One
sử dụng so với Int
's?
Một 'Int' luôn là 32 hoặc 64 bit, do đó, nó không thể lưu trữ số lượng lớn tùy ý. 'Integer', mặt khác, là không bị chặn. – huon
Không liên quan đến câu hỏi của bạn, nhưng có Data.Bits có nội dung bitfield – Squidly
@dbaupp: Tôi biết rằng, đó là lý do tôi muốn nó so với chỉ 'Int''s – Undreren