⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 嵌入式实时程序设计中c-c++代码的优化.htm

📁 canopen 通信协议
💻 HTM
📖 第 1 页 / 共 2 页
字号:
            </FONT><FONT color=#0000ff 
            size=2>标号放在一个switch语句中,并且是嵌套switch语句的最外层,发生相对频率相对低的case标号放在另一个switch语句中。比如,下面的</FONT><FONT 
            color=#0000ff size=2>程序段把相对发生频率低的情况放在缺省的case标号内。 </FONT><FONT 
            color=#0000ff size=2>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 
            pMsg=ReceiveMessage(); 
            <BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; switch 
            (pMsg-&gt;type) <BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; { 
            <BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; case FREQUENT_MSG1: 
            <BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; handleFrequentMsg(); 
            <BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; break; 
            <BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; case FREQUENT_MSG2: 
            <BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; handleFrequentMsg2(); 
            <BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; break; 
            <BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; ...... 
            <BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; case FREQUENT_MSGn: 
            <BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; handleFrequentMsgn(); 
            <BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; break; 
            <BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 
            default:&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 
            //嵌套部分用来处理不经常发生的消息 <BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 
            switch (pMsg-&gt;type) 
            <BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; { 
            <BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; case INFREQUENT_MSG1: 
            <BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 
            handleInfrequentMsg1(); 
            <BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; break; 
            <BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; case INFREQUENT_MSG2: 
            <BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 
            handleInfrequentMsg2(); 
            <BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; break; 
            <BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; ...... 
            <BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; case INFREQUENT_MSGm: 
            <BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 
            handleInfrequentMsgm(); 
            <BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; break; 
            <BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; } 
            <BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; } 
            <BR>&nbsp;&nbsp;&nbsp;&nbsp; 
            如果switch中每一种情况下都有很多的工作要做,那么把整个switch语句用一个指向函数指针的表来替换会更加有效,比如下面的</FONT><FONT 
            color=#0000ff size=2>switch语句,有三种情况: </FONT>
            <P><FONT color=#0000ff 
            size=2>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; enum MsgType{Msg1, 
            Msg2, Msg3} <BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; switch 
            (ReceiveMessage() <BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; { 
            <BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; case Msg1; 
            <BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; ...... 
            <BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; case Msg2; 
            <BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; ..... 
            <BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; case Msg3; 
            <BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; ..... 
            <BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; } </FONT>
            <P><FONT color=#0000ff size=2>&nbsp;&nbsp;&nbsp;&nbsp; 
            为了提高执行速度,用下面这段代码来替换这个上面的switch语句。 </FONT>
            <P><FONT color=#0000ff 
            size=2>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; /*准备工作*/ 
            <BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; int handleMsg1(void); 
            <BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; int handleMsg2(void); 
            <BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; int handleMsg3(void); 
            <BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; /*创建一个函数指针数组*/ 
            <BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; int (*MsgFunction 
            [])()={handleMsg1, handleMsg2, handleMsg3}; 
            <BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 
            /*用下面这行更有效的代码来替换switch语句*/ 
            <BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 
            status=MsgFunction[ReceiveMessage()](); </FONT>
            <P><FONT color=#0000ff size=2>&nbsp;&nbsp;&nbsp;&nbsp; 
            (10)避免使用C++的昂贵特性 </FONT></P><FONT color=#0000ff 
            size=2>&nbsp;&nbsp;&nbsp;&nbsp; 
            C++在支持现代软件工程、OOP、结构化等方面对C进行了卓有成效的改进,但在程序代码容量、执行速度、程序复杂程度等方面比C语言程序性能差一些。并不是所有的C++特性都是肮贵的。比如,类的定义是完全有益的。公有和私有成员数据及函数的列表与一个 
            struct 
            及函数原形的列表并没有多大的差别。单纯的加入类既不会影响代码的大小,也不会影响程序的效率。但C++的多重继承、虚拟基类、模板、 
            异常处理及运行类型识别等特性对代码的大小和效率有负面的影响,因此对于C++的一些特性要慎重使用,可做些实验看看它们对应用程序的影响。</FONT> 

            <P>&nbsp;&nbsp;&nbsp;&nbsp; <FONT color=#0000ff size=3>4 总结语</FONT> 
            </P>&nbsp;&nbsp;&nbsp;&nbsp; 
            <P><FONT color=#0000ff 
            size=2>在嵌入式实时程序设计时可以运用上面介绍的一种或多种技术来优化代码。上面介绍的方法主要是为了提高代码的效率。但是事实上,在使用这些技术提高代码运行速度的同时会相应的产生一些负面的影响,比如增加代码的大小、降低程序可读性等。不过你可以让C/C++编 
            译器来进行减少代码大小的优化,而手动利用以上技术来减少代码的执行时间。在嵌入式程序设计中合理地使用这几种技术有时会达到很好 
            的优化效果。</FONT> </P>
            <P 
            align=center>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 
            <FONT color=#0000ff size=2>转载自《微计算机信息》2003年第1期</FONT> 
        </P></TD></TR></TBODY></TABLE></TD></TR></TBODY></TABLE></DIV>
<TABLE height=52 width=767 border=0>
  <TBODY>
  <TR>
    <TD width=300><IMG height=61 src="嵌入式实时程序设计中C-C++代码的优化.files/NAME0.jpg" 
      width=300></TD>
    <TD width=457>
      <DIV align=center><IMG height=60 src="嵌入式实时程序设计中C-C++代码的优化.files/DD11.jpg" 
      width=435></DIV></TD></TR></TBODY></TABLE>
<TABLE borderColor=#000000 height=20 cellSpacing=0 cellPadding=0 width=739 
border=0>
  <TBODY>
  <TR vAlign=center align=middle>
    <TD width=18 background=嵌入式实时程序设计中C-C++代码的优化.files/bar_bg0.gif 
    height=20></TD>
    <TD width=58 background=嵌入式实时程序设计中C-C++代码的优化.files/bar_bg1.gif>
      <DIV align=center><SPAN lang=zh-cn style="FONT-SIZE: 9pt"><FONT 
      color=#0000ff><A href="http://www.bol-system.com/Index.html" 
      target=_self>首 页</A></FONT></SPAN></DIV></TD>
    <TD width=16 background=嵌入式实时程序设计中C-C++代码的优化.files/bar_bg2.gif> </TD>
    <TD width=66 background=嵌入式实时程序设计中C-C++代码的优化.files/bar_bg1.gif><FONT 
      color=#0066ff size=2><A 
      href="http://www.bol-system.com/ABOUTBOL.HTM">实验室简介</A></FONT></TD>
    <TD width=18 background=嵌入式实时程序设计中C-C++代码的优化.files/bar_bg2.gif> </TD>
    <TD width=62 background=嵌入式实时程序设计中C-C++代码的优化.files/bar_bg1.gif>
      <DIV align=center><SPAN lang=zh-cn style="FONT-SIZE: 9pt"><FONT 
      color=#0033ff><A href="http://www.bol-system.com/&cedil;&acute;&Ouml;&AElig;&Oacute;&Uacute;%20NEWS/jjfa.htm" 
      target=_blank></A></FONT><FONT color=#0033cc><A 
      href="http://www.bol-system.com/products.HTM" target=_blank><FONT 
      color=#0000cc>产品与服务</FONT></A></FONT></SPAN></DIV></TD>
    <TD width=18 background=嵌入式实时程序设计中C-C++代码的优化.files/bar_bg2.gif> </TD>
    <TD width=58 background=嵌入式实时程序设计中C-C++代码的优化.files/bar_bg1.gif><SPAN 
      lang=zh-cn style="FONT-SIZE: 9pt"><FONT color=#0033ff><A 
      href="http://www.bol-system.com/&cedil;&acute;&Ouml;&AElig;&Oacute;&Uacute;%20NEWS/hzhb.htm" 
      target=_blank></A><A href="http://www.bol-system.com/Solution.HTM" 
      target=_blank><FONT color=#0000ff>解决方案</FONT></A></FONT></SPAN></TD>
    <TD width=18 background=嵌入式实时程序设计中C-C++代码的优化.files/bar_bg2.gif> </TD>
    <TD width=55 background=嵌入式实时程序设计中C-C++代码的优化.files/bar_bg1.gif><FONT 
      style="FONT-SIZE: 9pt" color=#0033ff><SPAN lang=zh-cn 
      style="FONT-SIZE: 9pt"><FONT color=#0033ff><A 
      href="http://www.bol-system.com/Tools.HTM">开发<FONT 
      color=#0066ff>平台</FONT></A></FONT></SPAN></FONT></TD>
    <TD width=21 background=嵌入式实时程序设计中C-C++代码的优化.files/bar_bg2.gif></TD>
    <TD width=65 background=嵌入式实时程序设计中C-C++代码的优化.files/bar_bg1.gif><SPAN 
      lang=zh-cn style="FONT-SIZE: 9pt"><FONT color=#0066ff><A 
      href="http://www.bol-system.com/news.HTM">热点新闻</A></FONT></SPAN></TD>
    <TD width=10 background=嵌入式实时程序设计中C-C++代码的优化.files/bar_bg2.gif></TD>
    <TD width=59 background=嵌入式实时程序设计中C-C++代码的优化.files/bar_bg1.gif><SPAN 
      lang=zh-cn style="FONT-SIZE: 9pt"><FONT color=#0066ff><A 
      href="http://www.bol-system.com/support.HTM" 
      target=_blank>技术支持</A></FONT></SPAN></TD>
    <TD width=18 background=嵌入式实时程序设计中C-C++代码的优化.files/bar_bg2.gif></TD>
    <TD width=58 background=嵌入式实时程序设计中C-C++代码的优化.files/bar_bg1.gif><FONT 
      style="FONT-SIZE: 9pt" color=#0066ff></FONT><FONT style="FONT-SIZE: 9pt" 
      color=#0033ff><SPAN lang=zh-cn style="FONT-SIZE: 9pt"><FONT 
      color=#0033ff><A href="http://www.bol-system.com/PARTNER.HTM" 
      target=_blank><FONT 
      color=#0000ff>合作伙伴</FONT></A></FONT></SPAN></FONT><FONT 
      style="FONT-SIZE: 9pt" color=#0066ff><SPAN lang=zh-cn></SPAN></FONT></TD>
    <TD width=18 background=嵌入式实时程序设计中C-C++代码的优化.files/bar_bg2.gif></TD>
    <TD width=58 background=嵌入式实时程序设计中C-C++代码的优化.files/bar_bg1.gif><SPAN 
      style="FONT-SIZE: 9pt"><FONT color=#0066ff><A 
      href="http://www.bol-system.com/CONTACT.HTM" 
      target=_blank>联系我们</A></FONT></SPAN></TD>
    <TD width=45 background=嵌入式实时程序设计中C-C++代码的优化.files/bar_bg3.gif colSpan=3 
    height=20> </TD></TR></TBODY></TABLE>
<P>&nbsp;</P></BODY></HTML>

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -