矿石收音机论坛

 找回密码
 加入会员

QQ登录

只需一步,快速开始

搜索
查看: 4039|回复: 20

请教一下51单片机,这两种写法哪个执行快

[复制链接]
     
发表于 2018-6-29 23:35:40 | 显示全部楼层 |阅读模式
如题:附图。

第一种

第一种

第二种

第二种
     
发表于 2018-7-13 07:12:36 来自手机 | 显示全部楼层
前面分析够明确了。另外说一句:单片机中,别用高级语言那一套。代码空间够的话,别整那么多函数调用,直接堆代码或者define都要节约不少入栈出栈时间。注释够不会造成什么软件工程,可读性等问题。

评分

1

查看全部评分

回复 支持 1 反对 0

使用道具 举报

     
 楼主| 发表于 2018-6-29 23:37:07 | 显示全部楼层
第一种code=8248,被坛标挡住了。
回复 支持 反对

使用道具 举报

     
发表于 2018-6-30 01:59:22 | 显示全部楼层
你要是问那句执行的快慢就要看那句的汇编代码;
你要是问整个程序执行的快慢,当然是代码量少的快了!
回复 支持 反对

使用道具 举报

     
发表于 2018-6-30 07:33:50 | 显示全部楼层
keil有执行时钟周期统计,模拟运行一下就可以看出来。
回复 支持 反对

使用道具 举报

     
发表于 2018-6-30 08:01:11 | 显示全部楼层
代码量少的不一定快,只能说是代码效率高一些。真要计算所耗时间,还应当将汇编打出来才行。
回复 支持 反对

使用道具 举报

     
发表于 2018-6-30 08:18:24 | 显示全部楼层
提示: 作者被禁止或删除 内容自动屏蔽
回复 支持 反对

使用道具 举报

     
 楼主| 发表于 2018-6-30 09:43:20 | 显示全部楼层
本帖最后由 isoimg2130 于 2018-6-30 09:50 编辑
blc220 发表于 2018-6-30 07:33
keil有执行时钟周期统计,模拟运行一下就可以看出来。


麻烦帮忙看一下,这样说来,是不是语句少的执行快?
QQ截图20180630093947.png
QQ截图20180630093836.png
回复 支持 反对

使用道具 举报

     
发表于 2018-6-30 10:28:51 | 显示全部楼层
本帖最后由 longshort 于 2018-6-30 10:39 编辑
isoimg2130 发表于 2018-6-30 09:43
麻烦帮忙看一下,这样说来,是不是语句少的执行快?


前一个,循环中的一次需要13个时钟周期;后一个,循环中的一次需要15个时钟周期。大体上是这样。

但两个过程中都遇到了长调用,调用中执行的时间就不好估计了,还要看调用的代码是多少。

回复 支持 反对

使用道具 举报

     
 楼主| 发表于 2018-6-30 11:34:00 | 显示全部楼层
longshort 发表于 2018-6-30 10:28
前一个,循环中的一次需要13个时钟周期;后一个,循环中的一次需要15个时钟周期。大体上是这样。

但 ...

从软件运行的时间来看,好像第二种快啊。
回复 支持 反对

使用道具 举报

     
 楼主| 发表于 2018-6-30 11:46:19 | 显示全部楼层
壹法拉 发表于 2018-6-30 01:59
你要是问那句执行的快慢就要看那句的汇编代码;
你要是问整个程序执行的快慢,当然是代码量少的快了!

麻烦帮忙看下八楼的图片
回复 支持 反对

使用道具 举报

     
 楼主| 发表于 2018-6-30 11:49:13 | 显示全部楼层
书到用时 发表于 2018-6-30 08:18
没错,看一下交插列表文件,看生成了几天汇编指令就知道了。

我看了,汇编语句多的那个,从软件运行的数据来看,反而快。不知道我这样看对不对。图在八楼。
回复 支持 反对

使用道具 举报

     
发表于 2018-6-30 12:25:21 | 显示全部楼层
提示: 作者被禁止或删除 内容自动屏蔽
回复 支持 反对

使用道具 举报

     
发表于 2018-6-30 13:38:41 | 显示全部楼层
isoimg2130 发表于 2018-6-30 11:34
从软件运行的时间来看,好像第二种快啊。

前一个过程有一个长调用,后一个过程有两个长调用。如果前一个过程中的长调用所耗时间超过后一个过程中两个长调用的总耗时,那么后一个过程更快是完全可能的。你把三个长调用的汇编都打出来就清楚了。
回复 支持 反对

使用道具 举报

     
发表于 2018-6-30 18:36:08 | 显示全部楼层
一般是第一个快,除非CPU有和C指针对应的数据处理,否则指针自加要单独代码来处理。
回复 支持 反对

使用道具 举报

     
发表于 2018-6-30 18:54:48 | 显示全部楼层
isoimg2130 发表于 2018-6-30 11:46
麻烦帮忙看下八楼的图片

记得好像……这个软件有个能计算局部语句运行时长的功能,具体怎么样想不起来;
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 加入会员

本版积分规则

小黑屋|手机版|矿石收音机 ( 蒙ICP备05000029号-1 )

蒙公网安备 15040402000005号

GMT+8, 2024-4-25 08:30

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

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