++和- -从for循环中的资源开销来理解之间的差异
在嵌入式单片机开发中,如果资源开销有限,尽量优化并减少资源占用是一项更必不可少的工作。
- 举例对比一下
++
和--
在包含有for循环的函数中差异 - 例举:
++
void Delay(unsigned long cnt) //产生“阻塞延时”的延时函数
{
unsigned long i;
for(i=0;i < cnt; i++);
}
#include "REG52.H"
void Delay(unsigned long cnt); //函数的声明
sbit led =P2^0;
void Delay(unsigned long cnt) //阻塞式延时函数
{
unsigned long i;
for(i=0;i < cnt; i++);
}
void main()
{
while(1)
{
led =0; //LED灯亮。
Delay(5000); //阻塞延时
led=1; //LED灯灭。
Delay(5000); //阻塞延时
}
}
- Keil编译信息
- 例举:
--
void Delay(unsigned long cnt) //阻塞式延时函数
{
for(; cnt > 0; cnt--);
}
从上面的函数中,可以看到,
--
减少了一个中间变量的开销。
#include "REG52.H"
void Delay(unsigned long cnt); //函数的声明
sbit led =P2^0;
void Delay(unsigned long cnt) //阻塞式延时函数
{
for(; cnt > 0; cnt--);
}
void main()
{
while(1)
{
led =0; //LED灯亮。
Delay(5000); //阻塞延时
led=1; //LED灯灭。
Delay(5000); //阻塞延时
}
}
- 编译信息
从两者编译的信息可以看出,编译后,所占的容量是有差异的。这也是一点小小的优化的地方。
基于VSM Studio仿真资源
本实验基于
Proteus8.12
平台
链接:https://pan.baidu.com/s/1clmWeaiIXZ7ucghF4cXzzQ
提取码:2emi
学无止境。 ——荀子 |
---|