我只是想知道在C结构(C结构定义)中打包项目(int,float,unions等)时要遵循的注意事项,这将允许编译器进一步优化它。
我想知道是否应该遵循任何指导原则,例如:以允许对齐单词边界的顺序将项添加到结构中。等?
详情将不胜感激。
此致 -J
这个问题还需要优化策略来交叉编译这样的C结构。
答案 0 :(得分:6)
如果您真的想要最小化空间,请从最大对齐到最小对齐。这应该保证你将获得最小的填充。
答案 1 :(得分:5)
如果您可以在gcc下编译代码,您可以使用pahole查找可以改进的结构,并自动重新打包它们。
以下是一些关于pahole的文章可能对您有所帮助:
答案 2 :(得分:0)
您的计划有哪些要求?你有多少元素?什么样的结构?
例如,如果你有几个元素的结构,并且你需要遍历这些元素的数组来搜索某些东西,那么最好不要使用结构数组,而是执行数组结构。这是因为经常使用的成员将并排放置,因此缓存将正常工作。
如果您想利用SIMD(矢量)操作,您应该按照某些边界对齐所有成员。
很难正确地提出建议,因为我不知道您对数据的期望是什么。