++和--从for循环中的资源开销来理解之间的差异

Posted perseverance52

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了++和--从for循环中的资源开销来理解之间的差异相关的知识,希望对你有一定的参考价值。

++和- -从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

  学无止境。 ——荀子

以上是关于++和--从for循环中的资源开销来理解之间的差异的主要内容,如果未能解决你的问题,请参考以下文章

从编译器层面理解C#中的闭包的这个坑!

对于Python和Java之间的循环差异

用php打出1到100之间的偶数之和,还有奇数之和,还有定义一个变量,用for循环打出来,总共三个

Actionscript:for..in 循环的输出在 Flash IDE 和浏览器中的显示之间发生变化

从源码剖析Go语言基于信号抢占式调度

亲,用matlab中的while循环来求1到10的阶乘的和的编程怎么写,谢谢