找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索
查看: 1880|回复: 10
收起左侧

MCU寄存器赋值,内存效率问题

[复制链接]
ID:709761 发表于 2022-1-12 09:11 | 显示全部楼层 |阅读模式
   2种方法,哪个内存执行效率高


    方法1:   


                  w=w+60;
                  y=60000-w;        
                 PWMA_CCR3 = w; //20微秒


                      PWMA_CCR4 = y; //占空比


方法2:

         
                      PWMA_CCR3 = w+60; //20微秒
                      PWMA_CCR4 =60000-w; //占空比

回复

使用道具 举报

ID:807591 发表于 2022-1-12 11:11 | 显示全部楼层
往往一般笨方法 仿真下来时间最短。。高大上的往往耗时最长,当然这取决于编译器。。
回复

使用道具 举报

ID:415064 发表于 2022-1-12 11:59 | 显示全部楼层
应该是1快,但是没必要扣这个   
回复

使用道具 举报

ID:221871 发表于 2022-1-12 13:09 | 显示全部楼层
对编译器而言,方法二应该更有利于生成优化的代码。
回复

使用道具 举报

ID:221871 发表于 2022-1-12 13:20 来自触屏版 | 显示全部楼层
对编译优化而言,有倾向速度优化(最终代码运算速度快)和倾向存储优化(最终代码占用字节少),前者是“时间优化”
回复

使用道具 举报

ID:221871 发表于 2022-1-12 13:26 来自触屏版 | 显示全部楼层
后者是“节约空间”,往往是“时间”与“空间”相互制约,现代单片机一般芯片程序存储器都足够,故“速度”问题更显得重要,可参考Keil等编程软件编译的各种优化等级的描述,默认是速度与空间兼顾均衡的优化等级。”
回复

使用道具 举报

ID:50910 发表于 2022-1-12 15:33 | 显示全部楼层
这个跟使用的机器指令和编译器有关。
回复

使用道具 举报

ID:887371 发表于 2022-1-12 15:59 | 显示全部楼层
你方法2应改成 PWMA_CCR4 =60000-60-w;
回复

使用道具 举报

ID:887371 发表于 2022-1-12 16:21 | 显示全部楼层
楼主的方法2和方法1不等效。
方法2应改成:
                      PWMA_CCR3 = w+60; //20微秒
                      PWMA_CCR4 =60000-60-w; //占空比
我倾向于方法2效率高,因为计算结果不需要经过临时变量w、y就直接传到了PWMA_CCR。

假如2个表达式计算量都非常大,并且PWMA_CCR3和PWMA_CCR4要求几乎同时赋值的情形下,就只能用方法1。
回复

使用道具 举报

ID:624769 发表于 2022-1-12 19:35 | 显示全部楼层
首先,
你2和1,PWMA_CCR4 的结果是不等的。

所以,在这钟不等结果下, 2的执行时间肯定更短。
回复

使用道具 举报

ID:526108 发表于 2022-1-12 19:44 | 显示全部楼层
2快,你可以看生成的hex字节会变少,反汇编的步骤也不少了
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|51黑电子论坛 |51黑电子论坛6群 QQ 管理员QQ:125739409;技术交流QQ群281945664

Powered by 单片机教程网

快速回复 返回顶部 返回列表