最佳C结构定义

时间:2009-07-23 17:19:09

标签: c optimization compiler-construction structure definition

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

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

详情将不胜感激。

此致 -J

这个问题还需要优化策略来交叉编译这样的C结构。

3 个答案:

答案 0 :(得分:6)

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

答案 1 :(得分:5)

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

以下是一些关于pahole的文章可能对您有所帮助:

答案 2 :(得分:0)

您的计划有哪些要求?你有多少元素?什么样的结构?

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

如果您想利用SIMD(矢量)操作,您应该按照某些边界对齐所有成员。

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