1

我只是想知道在 C 结构(C 结构定义)中打包项目(int、float、union 等)时要遵循的注意事项,这将允许编译器进一步优化它。

我想知道是否有任何应该遵循的准则,例如以允许对齐单词边界的顺序将项目添加到结构中。ETC。 ?

细节将不胜感激。

问候,-J

该问题还涉及交叉编译此类 C 结构的优化策略。

4

3 回答 3

6

如果您真的想最小化空间,请从最大对齐到最小对齐。这应该保证您将获得最小的填充。

于 2009-07-23T17:25:04.460 回答
5

如果你可以在 gcc 下编译你的代码,你也许可以使用pahole找到可以改进的结构,并自动重新打包它们。

这里有几篇关于 pahole 的文章可能会对您有所帮助:

于 2009-07-23T18:16:39.957 回答
0

你的程序有什么要求?你会有多少元素?什么样的结构?

例如,如果您有多个元素的结构,并且您需要遍历这些元素的数组来搜索某些东西,那么最好不要使用结构数组,而是使用数组结构。那是因为经常使用的成员将并排放置,因此缓存内存可以正常工作。

如果您想利用 SIMD(向量)操作,您应该通过一些边界对齐所有成员。

很难提出正确的建议,因为我不知道你对你的数据有什么期望。

于 2009-07-24T07:50:21.443 回答