我使用的是64位机器
使用结构时
typedef struct node{
unsigned int p; //4 bytes
struct node* next;//8bytes
}Node;
//sizeof(Node) is 16 bytes
我知道这是由于结构填充。 如果我使用结构包装
typedef struct __attribute__((__packed__))
//sizeof(Node) is 12 bytes
我是否应该预期使用包装会导致性能下降,还是取决于系统?
编译器为gcc (GCC) 4.4.7
我已经使用打包和解压缩结构测试了我的代码,但性能似乎没有任何差别。
答案 0 :(得分:2)
这不是很多信息。答案还取决于您的节点分配策略,关于您是将节点嵌入数据还是单独存储,缓存行的大小,您的工作类型等等。
使用和不使用打包(在您的特定应用程序中)测量您的运行时间 - 您将得到答案。