天天看点

一条随手的Arduino sketch优化 以Examples-02.Digital-Debounce为例

原文的代码 暂时去掉注释,便于显示重点。

编译结果:

Sketch uses 1116 bytes (3%) of program storage space. Maximum is 30720 bytes.

Global variables use 19 bytes (0%) of dynamic memory, leaving 2029 bytes for local variables. Maximum is 2048 bytes.

优化手段1:选用够用的数据类型,这里面的int对象,都是小于255的,可以换成byte:

  

Sketch uses 1074 bytes (3%) of program storage space. Maximum is 30720 bytes.

Global variables use 17 bytes (0%) of dynamic memory, leaving 2031 bytes for local variables. Maximum is 2048 bytes.

效果:

程序空间减少42字节;SRAM减少2字节。

继续淦:

里面有一个函数在相近的位置,用了两遍,且貌似挺复杂的,就是:millis();

将其合二为一,但是又要增加一个全局变量,试试效果:

  编译结果:

Sketch uses 1052 bytes (3%) of program storage space. Maximum is 30720 bytes.

又干掉22字节的程序空间,SRAM竟然没变?

(1166-1052)/1166 = 104/1166 = 9.8%

将近10%的优化成果,这还没使用骨灰级的寄存器大法来优化pinMode和digitalRead/Write。

后续再试:const byte debounceDelay    = 50; 结果还是1052、17,看来是编译器自动将其优化了。