字寻址存储器
Word Addressable Memory
对于 32 位字可寻址存储器,字的大小为 4 个字节。
如果我尝试使用少于 4 字节的内存存储数据结构,比如 2 字节。剩下的2个字节是不是浪费了?
我们在决定使用什么数据结构时是否应该考虑字长?
遇到了类似的问题 here 但不完全是我要问的问题。
请帮忙。
在现代 CPU 上,内存本身通常在称为 缓存行 的块中检索(x86 上为 64 字节),但 CPU 指令集可以寻址单个字节。
如果您有一些深奥的机器,其指令集无法寻址单个字节,那么您的编译器会对您隐藏它。
内存是否浪费在小于单词的数据结构中取决于您使用的语言及其实现,但通常,记录会根据要求最粗略的字段进行对齐。如果你有一个 16 位整数数组,它们将紧密地组合在一起。
如果您有 3 个或 4 个整数,将它们存储为 2、4 或 8 个字节几乎无关紧要。
如果您有 3 或 40 亿个整数,那么可能值得考虑 space 更高效的结构。
一般来说,给定语言实现的自然整数大小在某种程度上应该是最优的,所以我的建议通常是“使用 int 除非你知道它不合适”并让编译器担心它 -直到您有性能数据可以显示为止。
对于 32 位字可寻址存储器,字的大小为 4 个字节。
如果我尝试使用少于 4 字节的内存存储数据结构,比如 2 字节。剩下的2个字节是不是浪费了?
我们在决定使用什么数据结构时是否应该考虑字长?
遇到了类似的问题 here 但不完全是我要问的问题。
请帮忙。
在现代 CPU 上,内存本身通常在称为 缓存行 的块中检索(x86 上为 64 字节),但 CPU 指令集可以寻址单个字节。
如果您有一些深奥的机器,其指令集无法寻址单个字节,那么您的编译器会对您隐藏它。
内存是否浪费在小于单词的数据结构中取决于您使用的语言及其实现,但通常,记录会根据要求最粗略的字段进行对齐。如果你有一个 16 位整数数组,它们将紧密地组合在一起。
如果您有 3 个或 4 个整数,将它们存储为 2、4 或 8 个字节几乎无关紧要。
如果您有 3 或 40 亿个整数,那么可能值得考虑 space 更高效的结构。
一般来说,给定语言实现的自然整数大小在某种程度上应该是最优的,所以我的建议通常是“使用 int 除非你知道它不合适”并让编译器担心它 -直到您有性能数据可以显示为止。