关于struct的使用问题

[复制链接]
1228|6
手机看帖
扫描二维码
随时随地手机跟帖
hh312|  楼主 | 2014-2-16 18:21 | 显示全部楼层 |阅读模式
使用struct可以使数据结构更加清晰,看起来很不错,但是好像会增加很大的运行时间开销,比如,在CCS5下,编C2000系列的代码,
如果 a = 1,则汇编是一个语句,仅一个机器周期;
如果使用了struct,比如 struct.a = 1,就是两条汇编语句,两个周期;
如果是使用了指针,比如 struct->a = 1,就是3条汇编,3个周期了。
我的程序为了实现通用性,减少代码量,使用大量的函数,参数都是结构体指针,也就是整个程序基本就是架在结构体上的,现在总体运行效率很不满意,在网上搜索了一下,也没见到什么讨论struct优化速度的,不知各位高手对这个问题有什么看法,是否有什么好的折中方案?我以前都是写计算机上的小程序,对这类效率问题根本不在乎,现在写硬件才发觉问题很大。

相关帖子

dirtwillfly| | 2014-2-16 21:21 | 显示全部楼层
貌似楼主的程序都是上位机编程的思路。在单片机上,可以用#define来实现更好的移植性

使用特权

评论回复
dirtwillfly| | 2014-2-16 21:21 | 显示全部楼层

使用特权

评论回复
hh312|  楼主 | 2014-2-16 21:57 | 显示全部楼层
dirtwillfly 发表于 2014-2-16 21:21
可以参考:https://bbs.21ic.com/icview-663790-1-1.html

非常感谢!但#define这个貌似关系不大。您说得很对,我比较趋向高级语言的编程习惯,VB.net用得比较熟,我的程序可能用class封装会比struct更完美,但是C++的运行速度是不是更低了?而且C2000好像没支持C++。

我的程序其实就是一块芯片控制多个电机,每个电机的运行控制函数基本一样,参数也基本一样,所以一开始就考虑做尽量少的函数,每个电机的参数封装成struct,逐个送入函数取处理,这样看起来结构是清晰,代码量也少,但是刚刚发现struct的指针调用居然是普通变量的3倍时间。

使用特权

评论回复
coslight| | 2014-2-17 08:31 | 显示全部楼层
程序就是这样,可移植性好的程序,大多都会经过封装,浪费时序也就是必须的了,这个要考虑折中了

使用特权

评论回复
xiongxiao| | 2014-2-17 11:32 | 显示全部楼层
mark

使用特权

评论回复
firstblood| | 2014-2-20 23:11 | 显示全部楼层
我来学习参考的了:):loveliness:

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

9

主题

42

帖子

1

粉丝