---
title: 优化编译选项，提升程序性能
description: "C/C++代码在编译时，GCC编译器将源码翻译成CPU可识别的指令序列，写入可执行程序的二进制文件中。CPU在执行指令时，通常采用流水线的方式并行执行指令，以提高性能，因此指令执行顺序的编排将对流水线执行效率有很大影响。通常在指令流水线中要考虑：执行指令计算的硬件资源数量、不同指令的执行周期、指令间的数据依赖等因素。可以通过通知编译器程序所运行的目标平台（CPU）指令集、流水线，来获取更好的指令序列编排。在GCC 9.1.0版本，支持了鲲鹏处理器所兼容的ARMv8指令集、tsv110流水线。"
url: https://www.hikunpeng.com/document/detail/zh/perftuning/tuningtip/kunpengtuning_12_0046.html
sourcePath: /source/zh/perftuning/tuningtip/kunpengtuning_12_0046.html
indexId: 675405885e32944232e2b3d8863f88542266649d5300253c8f07e530a0a3f31b58
---
# 优化编译选项，提升程序性能

#### 原理

C/C++代码在编译时，GCC编译器将源码翻译成CPU可识别的指令序列，写入可执行程序的二进制文件中。CPU在执行指令时，通常采用流水线的方式并行执行指令，以提高性能，因此指令执行顺序的编排将对流水线执行效率有很大影响。通常在指令流水线中要考虑：执行指令计算的硬件资源数量、不同指令的执行周期、指令间的数据依赖等因素。可以通过通知编译器程序所运行的目标平台（CPU）指令集、流水线，来获取更好的指令序列编排。在GCC 9.1.0版本，支持了鲲鹏处理器所兼容的ARMv8指令集、tsv110流水线。


#### 修改方式

- 在Euler系统中使用GCC编译器，可以在CFLAGS和CPPFLAGS中增加编译选项：
  1 -mtune=tsv110 -march=armv8-a

- 在其它操作系统中，可以升级GCC版本到9.1.0，并在CFLAGS和CPPFLAGS中增加编译选项：
  1 -mtune=tsv110 -march=armv8-a
