查看: 1815|回复: 3

[其他] 每天解决一个问题24:C代码优化问题

[复制链接]
  • TA的每日心情
    擦汗
    2022-3-3 09:56
  • 签到天数: 4 天

    连续签到: 1 天

    [LV.2]偶尔看看I

    106

    主题

    836

    帖子

    4

    金牌会员

    Rank: 6Rank: 6

    积分
    1527
    最后登录
    2023-6-12
    发表于 2015-9-17 21:25:15 | 显示全部楼层 |阅读模式
    本帖最后由 jinyi7016 于 2015-9-17 21:33 编辑

    背景
    随这产品越做越大,逻辑越来越复杂,汇编用的越来越少了,C用的越来越多了,但是C的编译,连接都是由编译器完成,有时候,编译器又很傻,自己优化代码就很重要的。
    解决
    此处只是列出我本人用到的,能想到的几种优化方法,肯定是不够的,不全的,还请各位补充,指教。
    一、用移位来代替乘、除法。
    虽然移位只能做2的倍数的乘、除法,但在二进制中,2还是很有用的。
    二、计算公式中可以确定的数要自己选算出来,不要一个简单的已知的数据也让芯片去算。
    三、尽量不用小数的去算。
    四、善用指针
    虽然用好指针并不是一朝一夕的事,但是先从简易的不易错的开始,慢慢练习。
    五、多用自加自减指令。
    用a+=1代替a=a+1;
    等等。
    六、数学函数,不要烂用。
    平方就用乘法吧。
    用查表计算 sin cos吧,虽然牺牲了空间。
    七、可以试试宏函数
    1. #define  max(x,y) {(x)>(y)?(x):(y)}
    复制代码

    八、适当的嵌入汇编
    延伸
    自主知识产权并不是指要有自己的产品,更重要的是要有自己的算法,好的算法就是一点一点优化出来的。
    之于其他一些比较常用的还有内联函数,switch与if ,for 与while,等等之类的,大家可以自行试验一下,看看哪个效率更高。

                       如果觉得还行,请支持
                               ↓
    我知道答案 目前已有3人回答
    回复

    使用道具 举报

    该用户从未签到

    3

    主题

    24

    帖子

    0

    注册会员

    Rank: 2

    积分
    70
    最后登录
    2015-12-23
    发表于 2015-9-17 21:43:47 | 显示全部楼层
    楼主真仔细!!!!!!!!
    freescaleic.org.png
    回复 支持 反对

    使用道具 举报

  • TA的每日心情
    擦汗
    2022-3-3 09:56
  • 签到天数: 4 天

    连续签到: 1 天

    [LV.2]偶尔看看I

    106

    主题

    836

    帖子

    4

    金牌会员

    Rank: 6Rank: 6

    积分
    1527
    最后登录
    2023-6-12
     楼主| 发表于 2015-9-17 21:45:00 | 显示全部楼层
    伊谢尔伦 发表于 2015-9-17 21:43
    楼主真仔细!!!!!!!!

    如果觉得有用,请点 捕获.PNG
    回复 支持 反对

    使用道具 举报

    该用户从未签到

    2

    主题

    49

    帖子

    0

    注册会员

    Rank: 2

    积分
    79
    最后登录
    2015-9-21
    发表于 2015-9-18 09:46:56 来自手机 | 显示全部楼层
    楼主真用心
    回复 支持 反对

    使用道具 举报

    您需要登录后才可以回帖 注册/登录

    本版积分规则

    关闭

    站长推荐上一条 /3 下一条

    Archiver|手机版|小黑屋|恩智浦技术社区

    GMT+8, 2025-9-13 19:15 , Processed in 0.093638 second(s), 25 queries , MemCache On.

    Powered by Discuz! X3.4

    Copyright © 2001-2024, Tencent Cloud.

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