---
title: 选项 -fipa-struct-reorg
description: "内存空间布局优化，将结构体成员在内存中的排布进行重新排列组合，以提高cache命中率。"
url: https://www.hikunpeng.com/document/detail/zh/kunpengdevkithistory/hgcc/hist-hgcc/kunpenghgcc_06_0021.html
sourcePath: /source/zh/kunpengdevkithistory/hgcc/hist-hgcc/kunpenghgcc_06_0021.html
indexId: 14b0195a61de2a6c0fff9b67e3a5416369f64fb118bc6c525fa3ed009749945371
---
# 选项 -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%。
