Tag: 内存优化

C结构中的自动字段重新排序以避免填充

我花了几分钟手动重新排序结构中的字段,以减少填充效果[1],这感觉就像几分钟太多。 我的直觉是说我的时间可能更好地花在编写Perl脚本上,或者为我做这种优化。 我的问题是这是否也是多余的; 是否已经有一些我不知道的工具,或者我应该能够启用[2]打包结构的一些编译器function? 由于需要在几种不同的体系结构中一致地优化这一事实,因此问题更加复杂,因此无论使用何种工具都需要能够考虑不同的结构对齐和指针大小。 编辑:快速澄清 – 我想要做的是重新排序源代码中的字段,以避免填充,而不是“填充”结构编译没有填充。 编辑#2:另一个复杂因素:根据配置,某些数据类型的大小也可能会发生变化。 显而易见的是针对不同体系结构的指针和指针差异,但也有浮点类型(16,32或64位,取决于’精确性’),校验和(8位或16位取决于“速度”)和一些其他非显而易见的东西。 [1]所讨论的结构在嵌入式设备上被实例化了数千次,因此结构的每个4字节减少可能意味着该项目的go和no-go之间的差异。 [2]可用的编译器是GCC 3. *和4. *,Visual Studio,TCC,ARM ADS 1.2,RVCT 3. *以及其他一些更加模糊的编译器。