<meter id="pryje"><nav id="pryje"><delect id="pryje"></delect></nav></meter>
          <label id="pryje"></label>

          新聞中心

          EEPW首頁(yè) > 嵌入式系統(tǒng) > 設(shè)計(jì)應(yīng)用 > 高效的C編程之:寄存器分配

          高效的C編程之:寄存器分配

          作者: 時(shí)間:2013-09-30 來(lái)源:網(wǎng)絡(luò) 收藏

          本文引用地址:http://www.ex-cimer.com/article/257018.htm

          比較下面兩個(gè)完成同樣功能的函數(shù),分析全局的操作對(duì)程序性能的影響。

          intf(void);

          intg(void);

          interrs;

          voidtest1(void)

          {

          errs+=f();

          errs+=g();

          }

          voidtest2(void)

          {

          intlocalerrs=errs;

          localerrs+=f();

          localerrs+=g();

          errs=localerrs;

          }

          編譯結(jié)果如下。

          test1

          STMDBsp!,{v1,lr}

          BLf

          LDRv1,[pc,#L00002c-.-8]

          LDRa2,[v1,#0]

          ADDa1,a1,a2

          STRa1,[v1,#0]

          BLg

          LDRa2,[v1,#0]

          ADDa1,a1,a2

          STRa1,[v1,#0]

          LDMIAsp!,{v1,pc}

          L00002c

          DCD|x$dataseg|

          test2

          STMDBsp!,{v1,v2,lr}

          LDRv1,[pc,#L00002c-.-8]

          LDRv2,[v1,#0]

          BLf

          ADDv2,a1,v2

          BLg

          ADDa1,a1,v2

          STRa1,[v1,#0]

          LDMIAsp!,{v1,v2,pc}

          從編譯的結(jié)果中可以看出,test1中每次對(duì)全局errs的訪問(wèn)都會(huì)使用耗時(shí)的Load/Store指令;而test2只使用了一次內(nèi)存訪問(wèn)指令。這對(duì)提高程序的整體性能有很大幫助。

          3.指針鏈

          指針鏈(PointerChains)常被用來(lái)訪問(wèn)結(jié)構(gòu)體內(nèi)部。下面的例子顯示了一個(gè)典型的指針鏈的使用。

          typedefstruct{intx,y,z;}Point3;

          typedefstruct{Point3*pos,*direction;}Object;

          voidInitPos1(Object*p)

          {

          p->pos->x=0;

          p->pos->y=0;

          p->pos->z=0;

          }

          上面的代碼每次使用“p->pos”時(shí)都會(huì)對(duì)變量重新取值。為了提高代碼效率,將程序改寫(xiě)如下。

          voidInitPos2(Object*p)

          {

          Point3*pos=p->pos;

          pos->x=0;

          pos->y=0;

          pos->z=0;

          }

          經(jīng)過(guò)改寫(xiě)的代碼,減少了內(nèi)存訪問(wèn)次數(shù),提高程序的執(zhí)行效率,另外也可以在object結(jié)構(gòu)體中增加一個(gè)point3域,專(zhuān)門(mén)作為指向p->pos的指針。

          塵埃粒子計(jì)數(shù)器相關(guān)文章:塵埃粒子計(jì)數(shù)器原理

          上一頁(yè) 1 2 3 下一頁(yè)

          評(píng)論


          相關(guān)推薦

          技術(shù)專(zhuān)區(qū)

          關(guān)閉
          看屁屁www成人影院,亚洲人妻成人图片,亚洲精品成人午夜在线,日韩在线 欧美成人 (function(){ var bp = document.createElement('script'); var curProtocol = window.location.protocol.split(':')[0]; if (curProtocol === 'https') { bp.src = 'https://zz.bdstatic.com/linksubmit/push.js'; } else { bp.src = 'http://push.zhanzhang.baidu.com/push.js'; } var s = document.getElementsByTagName("script")[0]; s.parentNode.insertBefore(bp, s); })();