IAR拥有灵活的优化等级设置,包括不同等级和不同层级的编译优化设置。本文将介绍IAR的编译优化等级设置,不同的编译优化等级设置涉及的编译器优化行为不同。 不同优化等级适应不同的应用需求,MCU资源空间有限时可选择针对代码大小进行优化,对应用实时响应要求较高的情形则应选择针对代码运行速度进行优化。且需注意在项目调试过程中不应将优化等级设置的过高,因高度优化会导致调试过程需要的一些信息丢失。 编译优化设置 IAR的编译优化等级设置由Option->C/C++Complier->Optimizations打开。如下图所示,IAR提供了4个优化等级设置,分别为None、Low、Medium和High。图右侧勾选部分代表不同编译器优化行为的使能情况,通过High和Medium等级优化的对比,可以发现设置的编译优化等级越高,使能的编译器优化行为越多。
图‑1
图‑2 针对高等级优化,IAR还提供了更灵活的控制。在高等级编译优化时,可以选择项目的编译优化倾向,针对代码大小优化(Size)、针对代码运行速度优化(Speed)或平衡状态。
图‑3 其中,选择针对代码运行速度优化(Speed)时,若MCU剩余的资源空间足够,还可以勾选“No size constraints”选项,该选项将让编译器牺牲一部分的空间占用来换取最快的代码执行速度。这将导致编译的目标文件体积增大,但可以获得更快的代码运行速度。
图‑4 IAR提供了多层级的优化等级设置,在工程名称处右键打开Option后进行设置的优化等级设置是针对整个工程生效。IAR也允许对某一个目录或者单独的某一个文件进行单独的优化等级设置。如下图所示,在main.c文件处右键选择Option,勾选红框处的“Override inherited settings”,该选项的含义是使main.c文件的优化等级设置覆掉原来的工程优化等级设置。因此可以对某一个目录或文件应用与整个工程不同的优化等级设置,灵活的优化等级设置能够适应更多的应用情形。 |