查看: 1048|回复: 2

[其他] 每天解决一个问题23:编译软件的优化

[复制链接]
  • TA的每日心情
    擦汗
    2021-9-9 22:51
  • 签到天数: 415 天

    连续签到: 1 天

    [LV.9]以坛为家II

    79

    主题

    3088

    帖子

    21

    金牌会员

    Rank: 6Rank: 6

    积分
    5181
    最后登录
    2022-5-23
    发表于 2015-9-16 22:02:44 | 显示全部楼层 |阅读模式
    每天解决一个问题23:编译软件的优化

      今天,一位女工程师问了我一个为问题,如下

    switch(A)
    {
            switch(B)
            {
            
                    switch(C)
                    {
                            switch(D)
                            {
                                    switch(E)
                                    {
                                    E111111;
                                    E222222;
                                    E333333;
                                    E555555; //这一段仿真的时候没有的呢?程序出错了呢?
                                    }        
                            }
                    }
            }        
    }


    咋一看,也把我愣住了,难道是switch嵌套的次数太多了?

    可怎么会呢,程序怎么会错呢,不应该把?

    jietu1.jpg


    有灰色阴影的就是实际的代码段了,而这里没有,而且还程序执行错误???


    等稍微冷静了下,忽然就想到问题所在了。


    编译器一般都对程序代码进行优化,比如在一个函数中,
    几次调用同样一个函数,编译器就会优化最终跳转到同一个函数代码段,这样就避免了flash的浪费。



    举例说明:
    jietu2.jpg

    jietu3.jpg

    jietu4.jpg

    jietu5.jpg

    jietu6.jpg



    看程序代码段是不是跳转到公用的函数代码段了,这样的优化节省了程序的空间。
    还有程序的问题,是有个函数写错了,不是嵌套太多导致的后果。


    虽然简单,还是挺值得分享的。
    altium2.gif







    我知道答案 目前已有2人回答
    该会员没有填写今日想说内容.
    回复

    使用道具 举报

    该用户从未签到

    61

    主题

    965

    帖子

    0

    金牌会员

    Rank: 6Rank: 6

    积分
    2394
    最后登录
    1970-1-1
    发表于 2015-9-17 08:31:46 | 显示全部楼层
    学习                  
    回复 支持 反对

    使用道具 举报

  • TA的每日心情
    开心
    2017-2-9 14:16
  • 签到天数: 17 天

    连续签到: 1 天

    [LV.4]偶尔看看III

    25

    主题

    1785

    帖子

    0

    金牌会员

    Rank: 6Rank: 6

    积分
    2250
    最后登录
    2024-6-11
    发表于 2015-9-17 14:33:05 | 显示全部楼层
    学习了,谢谢分享
    freescaleic.org.png
    回复 支持 反对

    使用道具 举报

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

    本版积分规则

    关闭

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

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

    GMT+8, 2025-7-21 01:59 , Processed in 0.095731 second(s), 24 queries , MemCache On.

    Powered by Discuz! X3.4

    Copyright © 2001-2024, Tencent Cloud.

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