📄 c6000软件优化经验总结(2).htm
字号:
<P> dm0 = dm1 = 0x7fff;</P>
<P> d0 =
(Word16 *)&d[0];</P>
<P> d1 =
(Word16 *)&d[1];</P>
<P> #pragma MUST_ITERATE(32,256,64);</P>
<P> for (j = 0; j < Nsiz; j+=2)</P>
<P> {</P>
<P> n0 = *d0;</P>
<P> d0 += 2;</P>
<P> n1 = *d1; </P>
<P> d1 += 2;</P>
<P> if (n0 <= dm0)</P>
<P> {</P>
<P> dm0 = n0;</P>
<P> jj0 = j;</P>
<P> }</P>
<P> if (n1 <= dm1)</P>
<P> {</P>
<P> dm1 = n1;</P>
<P> jj1 = j+1;</P>
<P> }</P>
<P> }</P>
<P> if (dm1 != dm0)</P>
<P> {</P>
<P> index[m] = (dm1 < dm0)? jj1:jj0;</P>
<P> }</P>
<P> else</P>
<P> {</P>
<P> index[m] = (jj1 > jj0)? jj1:jj0;</P>
<P> }</P>
<P>3、优化说明</P>
<P> 求数组的最小值程序,优化时为了提高程序效率在一个循环之内计算N=1,3,5..和n=2,4,6...的最小值,然后在比较二者的大小以求得整个数组的最小值。</P>
<P>八、</P>
<P>1、源程序</P>
<P> for (k = 0; k < NB_PULSE; k++)</P>
<P> {</P>
<P> i = codvec[k];</P>
<P> j = sign[i]; </P>
<P> index = mult(i, Q15_1_5);</P>
<P> track = sub(i, extract_l(L_shr(L_mult(index, 5),
1)));</P>
<P> if (j > 0)</P>
<P> {</P>
<P> if (i < l_subfr) code[i] = add(code[i],
4096); </P>
<P> codvec[k] += (2 * L_SUBFR);</P>
<P> }</P>
<P> else</P>
<P> {</P>
<P> if (i < l_subfr) code[i] = sub(code[i],
4096); </P>
<P> index = add(index, 16);</P>
<P> }</P>
<P> if (indx[track] < 0)</P>
<P> {</P>
<P> indx[track] = index;</P>
<P> }</P>
<P> else</P>
<P> {</P>
<P> if (((index ^ indx[track]) & 16) == 0)</P>
<P> {</P>
<P> if (sub(indx[track], index) <= 0)</P>
<P> {</P>
<P> indx[track] = shl((indx[track]
& 16), 3)</P>
<P>
+ shr(extract_l(L_mult((indx[track] &
15), NB_POS)), 1) + (index & 15);</P>
<P> }</P>
<P> else</P>
<P> {</P>
<P> indx[track] = shl((index & 16),
3)</P>
<P>
+ shr(extract_l(L_mult((index & 15),
NB_POS)), 1) + (indx[track] & 15);</P>
<P> }</P>
<P> }</P>
<P> else</P>
<P> {</P>
<P> if (sub((indx[track] & 15), (index
& 15)) <= 0)</P>
<P> {</P>
<P> indx[track] = shl((index & 16),
3)</P>
<P>
+ shr(extract_l(L_mult((index & 15),
NB_POS)), 1) + (indx[track] & 15);</P>
<P> }</P>
<P> else</P>
<P> {</P>
<P> indx[track] = shl((indx[track]
& 16), 3)</P>
<P>
+ shr(extract_l(L_mult((indx[track] & 15),
NB_POS)), 1) + (index & 15);</P>
<P> }</P>
<P> }</P>
<P> }</P>
<P> }</P>
<P>2、优化后的程序</P>
<P> for (k = 0; k < 8; k++)</P>
<P> {</P>
<P> i =
codvec[k];</P>
<P> j = sign[i];</P>
<P> index
= _smpy(i, 6554)>>16;</P>
<P> track = i -
index*5;</P>
<P> con
= (j > 0);</P>
<P>
codvec[k] = codvec[k] + 110*con;</P>
<P>
index = index + (!con)*16; </P>
<P> conn = (i <
l_subfr);</P>
<P> cono = (j > 0)? 1:-1;</P>
<P> code[i] = code[i] + 4096*conn*cono; </P>
<P>
n0 = index;</P>
<P>
t0 = indx[track];</P>
<P>
n1 = n0&16;</P>
<P>
t1 = t0&16;</P>
<P>
n2 = n0&15;</P>
<P>
t2 = t0&15;</P>
<P> tmp0 = (_sshl(n1,19)>>16) + n2*NB_POS +
t2;</P>
<P> tmp1 = (_sshl(t1,19)>>16) + t2*NB_POS +
n2;</P>
<P> conp = (((n1 == t1)&&(t0 >
n0))||((n1 != t1)&&(t2 <= n2)));</P>
<P>
tmp = conp*tmp0 + (!conp)*tmp1;</P>
<P> if (t0 < 0)</P>
<P> indx[track] = n0;</P>
<P> else</P>
<P> indx[track] = tmp;</P>
<P> }</P>
<P>3、优化说明</P>
<P> 源程序中在循环中含有许多的if结构,在优化时对if结构首先进行化简,再将化简后的if结构用条件运算表达式进行改写,最后使循环可以Pipeline。</P><BR></TD></TR></TBODY></TABLE><BR>
<TABLE class=hight1 cellSpacing=0 cellPadding=0 width="100%"
bgColor=#cccccc border=0>
<TBODY>
<TR>
<TD> </TD></TR></TBODY></TABLE><BR>
<TABLE
style="BORDER-RIGHT: #cccccc 1px solid; BORDER-TOP: #cccccc 1px solid; BORDER-LEFT: #cccccc 1px solid; BORDER-BOTTOM: #cccccc 1px solid"
height=29 cellSpacing=0 cellPadding=0 width="100%" border=0>
<TBODY>
<TR bgColor=#ffa45b>
<TD class=hight2> </TD></TR>
<TR bgColor=#ff7300>
<TD class=font13 style="PADDING-LEFT: 10px" height=20><IMG
src="C6000软件优化经验总结(2).files/icon06.gif" align=absMiddle> <FONT
color=#ffffff><STRONG>相关文章</STRONG></FONT></TD></TR>
<TR bgColor=#f29800>
<TD class=hight2> </TD></TR>
<TR>
<TD style="PADDING-LEFT: 10px; LINE-HEIGHT: 24px">· <A class=link13
title="文章标题:TMS320VC5509的工作流程 作 者:佚名 更新时间:2006-2-22 15:30:34 点击次数:90"
href="http://www.icembed.com/info.asp?ArticleID=1421">TMS320VC5509的工作流程</A>[<FONT
color=red>90</FONT>]<BR>· <A class=link13
title="文章标题:TI-MSP430F149在TCP/IP上的扩展 作 者:佚名 更新时间:2006-2-22 15:25:00 点击次数:95"
href="http://www.icembed.com/info.asp?ArticleID=1419">TI-MSP430F149在TCP/IP上的扩展</A>[<FONT
color=red>95</FONT>]<BR>· <A class=link13
title="文章标题:AVR芯片的ISP全攻略 作 者:佚名 更新时间:2006-2-22 15:22:52 点击次数:67"
href="http://www.icembed.com/info.asp?ArticleID=1418">AVR芯片的ISP全攻略</A>[<FONT
color=red>67</FONT>]<BR>· <A class=link13
title="文章标题:pci卡设计心得 作 者:佚名 更新时间:2006-2-22 15:18:04 点击次数:81"
href="http://www.icembed.com/info.asp?ArticleID=1416">pci卡设计心得</A>[<FONT
color=red>81</FONT>]<BR>· <A class=link13
title="文章标题:C6000软件优化经验总结(3) 作 者:佚名 更新时间:2006-2-22 15:10:46 点击次数:95"
href="http://www.icembed.com/info.asp?ArticleID=1413">C6000软件优化经验总结(3)</A>[<FONT
color=red>95</FONT>]<BR></TD></TR></TBODY></TABLE><BR>
<TABLE
style="BORDER-RIGHT: #cccccc 1px solid; BORDER-TOP: #cccccc 1px solid; BORDER-LEFT: #cccccc 1px solid; BORDER-BOTTOM: #cccccc 1px solid"
cellSpacing=0 cellPadding=0 width="100%" border=0>
<TBODY>
<TR bgColor=#ffa45b>
<TD class=hight2> </TD></TR>
<TR bgColor=#ff7300>
<TD class=font13 style="PADDING-LEFT: 10px" height=20><IMG
src="C6000软件优化经验总结(2).files/icon06.gif" align=absMiddle> <FONT
color=#ffffff><STRONG>文章评论</STRONG></FONT></TD></TR>
<TR bgColor=#f29800>
<TD class=hight2> </TD></TR>
<TR>
<TD
style="PADDING-RIGHT: 10px; PADDING-LEFT: 10px; PADDING-BOTTOM: 10px; LINE-HEIGHT: 24px; PADDING-TOP: 10px"> 没有任何评论
</TD></TR></TBODY></TABLE><BR>(*只显示最新10条评论。评论内容只代表网友观点,与本站立场无关。) <BR><BR>
<TABLE cellSpacing=0 cellPadding=0 width="100%" border=0>
<TBODY>
<TR>
<TD
style="PADDING-LEFT: 8px; FONT-WEIGHT: bold; FONT-SIZE: 13px; COLOR: #ffffff; LINE-HEIGHT: normal; FONT-STYLE: normal; FONT-VARIANT: normal"
width="32%" bgColor=#666666 height=26><IMG height=14
src="C6000软件优化经验总结(2).files/icon11.gif" width=14> 发表评论</TD>
<TD class=table-r-b style="PADDING-LEFT: 10px" width="68%"
bgColor=#cccccc>
<TABLE cellSpacing=0 cellPadding=0 width="100%" border=0>
<TBODY>
<TR>
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -