应用编译优化的作用是:提高运行能力因为程序优化前,有3个变量需要3个寄存器,一次乘法运算。程序优化后,只有1个变量需要一个寄存器,没有乘法运算。
并且这个优化看起来很微不足道,但实际上用途很广。为了程序的可读性和可维护性,大多数程序员应该还是会选用第一种方式。
写3行程序而不是直接甩下一行int ticks = 491520让后来读程序的人摸不到头脑。有了编译器的优化,程序员既可以写出易读的程序又不必担心性能受影响。
尤其是在嵌入式领域,很多低端芯片根本就没有硬件乘法器,如果程序不做上述优化可能这3行代码需要几十个cycle,优化过后一个cycle就搞定。
应用编译优化的级别:
第一级:代码调整。
代码调整是一种局部的思维方式;基本上不触及算法层级;它面向的是代码,而不是问题; 所以:语句调整,用汇编重写、指令调整、换一种语言实现、换一个编译器、循环展开、参数传递优化等都属于这一级。
第二级:新的视角。
新的视角强调的重点是针对问题的算法;即选择和构造适合于问题的算法。
第三级:表驱动状态机。
将问题抽象为另一种等价的数学模型或假想机器模型,比如构造出某种表驱动状态机;这一级其实是第二级的延伸,只是产生的效果更加明显,但它有其本身的特点。
首先把经常用到的“相同的功能”、“重复的 *** 作”写成一个一个子程序或函数,在用到的地方放一条调用指令就可以了。然后,你还要了解每条指令的构造。比如汇编里面你明知道长调用会比短调用占空间,那能用短调用的地方就不要用长调用了。又比如在C语言里面,能定义为字节变量的数据就不要定义为整型变量也是一样的道理。
单片机高手团为你解答
第一步:编译release版本
第二步:
strip 命令
扩展
整优化等级
通过修改默认优化等级方式减少体积,以cpu换空间,如果不是必要,建议不要改
在Cargo.toml中新增下面配置
开启 LTO
减少体积,增加链接时间也是一个取舍问题
在Cargo.toml中新增下面配置
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)