데이터 형식이 개의 생성자로 이루어져 있다고 가정 해 보겠습니다.큰 대수 데이터 형식의 메모리 발자국
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