【发布时间】:2012-05-24 15:45:20
【问题描述】:
我在内存受限的 x64 系统中,我需要在内存中保存大量数据。使用这种数据结构有什么缺点。
struct entity
{
unsigned int hash : 26;
unsigned int timestamp : 14;
} __attribute__ ((__packed__));
我知道不鼓励使用位字段,但使用这种非对齐数据结构的最大缺点是什么。
该结构将用于内存存储,预计会出现一些性能下降。
【问题讨论】:
-
内存中需要多少数据?是否需要同时在内存中?
-
我不会说“沮丧”——位字段是语言提供的一种工具,只要它们是满足您的设计约束的最佳选择,您就可以使用它们。
-
如果您在内存受限的 x64 系统上,为什么不运行 x86 代码?您的指针将全部缩小一半。
-
内存受限的 x64 具有讽刺意味的是,我的内存比 x86 可以处理的多得多,但仍然不够。
-
为什么不只使用位掩码/移位?这不是一个完美的解决方案,但可能会解决下面提到的几个缺点。