假设我有一个数据类型,带有许多构造函数。
data ManyValues
= Value0
| Value1
| Value2
...
| Value255
| Value256
deriving (Show,Eq)
这种数据类型每个值的内存占用是多少?我原来的理解是每个构造函数占用8位内存,但如果在数据类型中有比8位内可能值更多的构造函数,那么构造函数是否会增加到16位等,直到构造函数可以寻址数据类型中存在的所有构造函数?还是我把所有这些都搞混了?
假设我有一个数据类型,带有许多构造函数。
data ManyValues
= Value0
| Value1
| Value2
...
| Value255
| Value256
deriving (Show,Eq)
这种数据类型每个值的内存占用是多少?我原来的理解是每个构造函数占用8位内存,但如果在数据类型中有比8位内可能值更多的构造函数,那么构造函数是否会增加到16位等,直到构造函数可以寻址数据类型中存在的所有构造函数?还是我把所有这些都搞混了?
Word32
或Word64
值会更有效率,以换取更低的分配和更好的内存局部性,从而放弃空间效率? - carpemb
ManyValues
之间的区别被抹去了;你只需要这些信息来进行代码的类型检查。在运行时,每个值只是一个简单的单词,基本上表示该值存在。 - chepner