首页 > 试题广场 >

请阅读下面的代码,提出意见与建议,并优化代码

[问答题]

请阅读下面的代码,提出意见与建议,并优化代码

源代码: 
#define BYTE unsigned char    //256个字节,数值范围[0,255]BYTE Fun1(BYTE nOral,BYTE nTemp)
{
    BYTE nResult = (((nTemp <128)?(2*nOral *nTemp/255):(255-2*(255-nOral)*(255-nTemp)/255)));
    nResult = 2*((nOral>>1)+64)*nResult/255;
    return nResult;
}
void Test()
{
    intnWidth = 10000;       int nHeight = 10000;
  BYTE*pOralData = new BYTE(nWidth*nHeight); 
    BYTE*pTempData = new BYTE(nWidth*nHeight);
   ...//赋值不考虑,每个值的范围在0-255之间
  int i,j;
    for (j=0;j<nHeight;j++)
   {      
        for (i=0;i<nWeight;i++)      
        {
         BYTE* pOral = pOralData + i*nHeight + i;
       BYTE* pTemp = pTempData– j*nHeight + i;          
            pOral[0] = Fun1(pOral[0],pTemp[0]);
      }
   }
}


1.fun函数中存在大量重复运算,一步运算应改为多步运算,提取重复计算的值。
2.数据量大,数据集中于255内的乘法,构造适合量数量级的乘法表。
发表于 2017-03-04 15:48:33 回复(0)