搜索
bottom↓
回复: 2

关于C++在WINAVR上的优化问题

[复制链接]

出0入0汤圆

发表于 2006-11-8 19:15:13 | 显示全部楼层 |阅读模式
优化与很多有关~~~本想放入水潭,可二姨最近过生日迷糊了~~~



inline//不加inline将增大空间6个字节

void UsiObj::CommandExec(void)

{

...............

}



//inline//加inline将增大空间40个字节

void UsiObj::Exec(void)

{

....................

}



class AdcObj {

private:

  unsigned char AdcNum;//加volatile将增大空间72个字节

  unsigned char AdcCount;//加volatile将增大空间4个字节

  volatile unsigned int AdcSum[8];//不改变

  unsigned int AdcMax[8];//加volatile将增大空间4个字节

  volatile unsigned int AdcMin[8];//不改变

..............................

};



/*-------------------------------------------------------------------

优化示例:

  while (PINB & (1 << SCL));//等待SCL=0主机处理结束

上句将比下句代码多编译16个字节

  while ((unsigned char)tmp = (PINB & (1 << SCL)));//等待SCL=0主机处理结束

--------------------------------------------------------------------*/



/*-------------------------------------------------------------------

优化示例:

          USIDR = TxBuffer[Count];//发送8位数据1个字节

        Count ++;

以上2句将比下句代码多编译26个字节

          USIDR = TxBuffer[Count++];//发送8位数据1个字节

--------------------------------------------------------------------*/



/*-------------------------------------------------------------------

优化示例:

        if (((USIDR << 4) ^ USIDR) >= 0xf0) {//Command高低4位相反

上句将比下几句代码多编译14个字节

//        tmp = USIDR;

//      tmp <<= 4;

//        tmp ^= USIDR;

//        if (tmp >= 0xf0) {//Command高低4位相反

--------------------------------------------------------------------*/



/*-------------------------------------------------------------------

优化示例(此前Status=4):

        Status ++;

上句将比下句代码多编译2个字节

        Status = 5;

--------------------------------------------------------------------*/



/*-------------------------------------------------------------------

优化示例(此前Status=5):

        Status --;

上句将比下句代码多编译6个字节(这个有些不定,至少在2字节以上)

        Status = 4;

--------------------------------------------------------------------*/



/*-------------------------------------------------------------------

优化示例:

  for(i = 31; i >= 13; i --) {

上句将比下句代码多编译2~4个字节

  for(i = 13; i <= 31; i ++) {

--------------------------------------------------------------------*/

出0入0汤圆

发表于 2006-12-6 12:26:22 | 显示全部楼层
我还发现:



if (ich&8){

上句将比下句代码多编译2~4个字节

if ((ich|0xF7) ==0xFF) {

出0入0汤圆

发表于 2007-6-28 11:43:02 | 显示全部楼层
if (ich&8){

上句将比下句代码多编译2~4个字节  

if ((ich|0xF7) ==0xFF) {



为什么我感觉上句的效率高呢???
回帖提示: 反政府言论将被立即封锁ID 在按“提交”前,请自问一下:我这样表达会给举报吗,会给自己惹麻烦吗? 另外:尽量不要使用Mark、顶等没有意义的回复。不得大量使用大字体和彩色字。【本论坛不允许直接上传手机拍摄图片,浪费大家下载带宽和论坛服务器空间,请压缩后(图片小于1兆)才上传。压缩方法可以在微信里面发给自己(不要勾选“原图),然后下载,就能得到压缩后的图片】。另外,手机版只能上传图片,要上传附件需要切换到电脑版(不需要使用电脑,手机上切换到电脑版就行,页面底部)。
您需要登录后才可以回帖 登录 | 注册

本版积分规则

手机版|Archiver|amobbs.com 阿莫电子技术论坛 ( 粤ICP备2022115958号, 版权所有:东莞阿莫电子贸易商行 创办于2004年 (公安交互式论坛备案:44190002001997 ) )

GMT+8, 2024-5-10 15:01

© Since 2004 www.amobbs.com, 原www.ourdev.cn, 原www.ouravr.com

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