开发者
我要评分
获取效率
正确性
完整性
易理解
在线提单
论坛求助

选项 -fipa-reorder-fields

内存空间布局优化之结构体重排优化,根据结构体成员所占空间大小,将其按从大到小的顺序重新排列,以减少因边界对齐引入的padding,从而降低结构体整体内存占用,并提高cache的命中率。 例如,将以下结构体

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
struct S
{
    double a;
    int b;
    double c;
    double d;
    short e;
    double f;
    double g;
    double h;
    double i;
};

经过重排后转化为:

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
struct S.reorder
{
    double a;
    double i;
    double c;
    double d;
    double f;
    double g;
    double h;
    int b;
    short e;
}

适用方法

在选项中加入:

1
-O3 -flto -flto-partition=one -fipa-reorder-fields

-fipa-reorder-fields选项,需要在-O3 -flto -flto-partition=one全局同时开启的基础上才使能。

SPEC性能提升效果:SPECCPU2017 intrate 505.mcf子项性能提升20%。