C6000软件优化经验总结(3)
???? ????????????????? ?ix = j;
????????????????????? }
????????????????? }
????????????????? tmp2[ix] = -32768;
???????????????
? tmp[i] = ix;
???? }
?????? 2、优化后的程序
?????? if (n0>n1) {temp=n0;n0=n1;n1=temp;}
?????? if (n1>n2) {temp=n1;n1=n2;n2=temp;}
???? if (n2>n3) {temp=n2;n2=n3;n3=temp;}
???? if (n3>n4) {temp=n3;n3=n4;n4=temp;}
???? if (n0>n1) {temp=n0;n0=n1;n1=temp;}
???? if (n1>n2) {temp=n1;n1=n2;n2=temp;}
???? if (n2>n3) {temp=n2;n2=n3;n3=temp;}
???? if (n0>n1) {temp=n0;n0=n1;n1=temp;}
???? if (n1>n2) {return n1;}
?????? 3、优化说明
????????源程序也为一个求中值的问题,由于已知循环次数固定为5,因此将循环展开使用if语句直接求取中值。
十、
?????? 1、源程序
static Word16 Bin2int (Word16 no_of_bits,? Word16 *bitstream)
{
??? Word16 value, i, bit;
?
??? value = 0;
??? for (i = 0; i < no_of_bits; i++)
??? {
??????? value = shl (value, 1);
??????? bit = *bitstream++;
??????? if (sub (bit, BIT_1) == 0)
??????? value = add (value, 1);
??? }
??? return (value);
}