4.1 VOLATILE关键字
当你使用一个不能被编译器优化的变量时,需要使用volatile关键字,如果在需要使用 volatile 的地方没有使用它,编译器可能会优化对变量的访问,从而生成非预期的代码,甚至移除程序中原本预期的功能。
4.2 循环优化
循环的执行时间可能会随着迭代次数的增加而显著增长。如果每次迭代都要检查循环条件,这种开销可能会降低循环的执行性能。
4.3 函数内联
kf32clang会判断内联某个函数是否可以提升性能,当可以提升性能时会自动对该函数进行内联。这种自动内联通常不会显著增加代码体积,并且你可以使用编译器提示(hints)和选项来影响或控制函数是否被内联。
4.4 C和C++中的栈使用
C 和 C++ 都会使用栈(stack)。例如,栈中通常保存以下内容:
4.5 紧凑数据空间分配
通过将数据打包到结构体中,可以减少应用程序所需的内存。这在嵌入式系统中尤其重要,尤其是当你需要存储和访问大型数据数组时。
4.6 针对代码大小或性能进行优化
KF32工具链会采用多种技术进行代码优化,其中一些技术可提升代码性能,而另一些技术则能减小代码体积。不同的优化存在一定的冲突,也就是说,提高代码性能的技术可能会导致代码体积增大,而减小代码体积的技术可能会降低性能。例如,编译器可以展开小循环以获得更高的性能,但缺点是代码体积会增加。