选项 -fipa-struct-reorg
内存空间布局优化,将结构体成员在内存中的排布进行新的排列组合,来提高cache的命中率。
- 结构体拆分:将结构体的冷热成员单独拆分成一个结构体类型图1 结构体拆分优化原理示意图
将以下结构体:
struct S { type1 field1; // Hot field type2 field2; }; S *v;
转化为:
struct S_hot { type1 field1; }; struct S_cold { type2 field2; }; S_hot *v_hot;S_cold *v_cold;
- 结构体数组优化:将结构体的数组转化为数组的结构体。图2 结构体数组优化原理示意图
将以下结构体:
struct { type1 field1; type2 field2; type3 field3; } arr[N];
转化为:
struct { type1 field1[N]; type2 field2[N]; type3 field3[N]; } arr;
使用方法
在编译选项中加入:
-O3 -flto -flto-partition=one -fipa-struct-reorg
-fipa-struct-reorg选项,需要在-O3 -flto -flto-partition=one全局同时开启的基础上才使能。
SPEC性能提升效果:SPECCPU2017 intrate 505.mcf子项性能提升20%。
父主题: 静态编译优化