[讨论]用C语言写代码,如何优化代码尺寸大小

[复制链接]
inter_zhou 发表于 2009-7-12 18:40 | 显示全部楼层

楼上的确是很专业,我还比较外行!

come_on1 发表于 2009-7-13 10:12 | 显示全部楼层

受教了!

看了这么多,学到不少东西。继续学习!
 楼主| 古道热肠 发表于 2009-7-13 11:23 | 显示全部楼层

哈哈,abc_ice在83楼的论断的确有道理

如果函数返回值是一个uchar,的确应该用ACC返回.还好位变量是用进位位C返回,效率较高.
印象中Keil早期也是给人做OEM生产的.
 楼主| 古道热肠 发表于 2009-7-13 17:38 | 显示全部楼层

总结一下,告一段落,谢谢大家参与.

谢谢大家各抒已见
从宏观上提出的办法网友已给出了最佳答案
1.程序结构--代码复用   
2.算法--专用算法代替通用算法

从微观上来解决,很多网友已给出了速度又快,代码尺寸又小的演示程序,只要用心优化,总能做得更好!

哈哈,如果大家喜欢,可以开展下一个议题.
许世霞 发表于 2009-7-15 09:02 | 显示全部楼层

云雾中!

1:能否把“高内聚,低耦合,模块功能要单纯”这个说法做个详细的阐述呢?
2:宏观上,程序结构--代码复用;算法--专用算法代替通用算法。能再细致的总结一下吗?怎么个代码复用,什么样的是专用算法,什么样的是通用算法。
3:可不可以将微观上的代码优化方法把大家讨论的做个总结呢?让我这个莱鸟也能享受一下前辈们的劳动成果呵呵。。。。

    我是莱鸟,问题有点菜,不要笑我哦!期待中
pengwang2008 发表于 2009-7-16 20:40 | 显示全部楼层

程序量

还是小点好,特别是低价位的
Airwill 发表于 2009-7-16 21:19 | 显示全部楼层

79楼的代码可以编写 A51子程序库来完成

只是, KEIL 对于 A51 子程序, 都认为会改变所有寄存器!

另外, 感觉论坛里 每页 20 贴, 太紧张, 这样的帖子不长, 却分成了很多页!
而那个广告的签名也占了太多的显示版面. 是否可以将其移到专门的地方, 显示一会就够了.
 楼主| 古道热肠 发表于 2009-7-17 12:42 | 显示全部楼层

讨论结束了

myic200610 发表于 2009-7-18 00:08 | 显示全部楼层

RE

学习了
jindiaozhanji 发表于 2009-7-20 11:06 | 显示全部楼层

学习中、、、

过去一直都知道,资源有限,该怎么为代码瘦身却一直不会,期待那位大虾能出本书,哈哈
Black_Boy 发表于 2009-7-20 19:13 | 显示全部楼层

使用指针

Black_Boy 发表于 2009-7-20 19:18 | 显示全部楼层

使用指针、结构体……

刚刚按错了,一般我在写菜单的时候,经常性用到的是结构体,结构体的嵌套也可以实现菜单的分层,通过指针调用结构体的基本属性,更能体现程序的分块化。还有像楼上各位说的,要节省RAM,只读形式的数组直接存在CODE区,比如有时AD检测要涉及到处理小数的时候,尽量不用浮点数,通过整数计算得出结果,在进行小数点的处理会比较好点。
hnk123 发表于 2009-7-21 16:21 | 显示全部楼层

回复

多用char
这个占的空间小点
feather 发表于 2009-7-22 11:16 | 显示全部楼层

童鞋,好好琢磨你的第二条吧

WOAILYMD 发表于 2009-7-22 13:57 | 显示全部楼层

47楼的是存在于KEIL中

有时候没有声明函数,而且把函数放在调用者后面,编译会出错,这时有2种办法,第一种,补声明;第二种,不声明,但把函数改放在调用者后面,则编译均会通过。
第2种方法是否省代码没注意过,应该会省点吧,其实这很好理解,被调用函数放在调用者前面,不声明只定义,自然是可以的了。
cdlongbo 发表于 2018-10-16 11:51 | 显示全部楼层
学习了!
mailshichao 发表于 2018-10-19 10:53 | 显示全部楼层
还好我不用一个字节一个字节的去扣flash的空间,公司更在乎的时候产品什么时候能出来;对于稍微功能多一点的程序来说,完善的程序架构比一点一点扣处理器的效率好多的。
eydj2008 发表于 2018-10-19 12:01 | 显示全部楼层
速度才是要优化的, 代码无所谓, 现在随便也有64K 256K 上M的
速度才是关键的.
要将一切算法 换成+-移位,  所有浮点转换UINT
然后又不能用64位 很多浮点转成UINT 都会面临大问题.
您需要登录后才可以回帖 登录 | 注册

本版积分规则

快速回复 在线客服 返回列表 返回顶部