无忧商务网,免费信息发布推广平台,您可以 [登陆后台] 或 [免费注册] 无忧商务网 | 企业黄页 | 产品库存 | 供求信息 | 最新报价 | 企业资讯 | 展会信息
黄页信息| 库存信息| 技术服务| 供应信息| 求购信息| 二手信息| 加工信息| 供求库| 报价库| 展会库| 代理信息| 保健| 生活黄页| 食谱| 网络黄页| 水族休闲| 人力HR| 招聘
首页>>生活网>>生活保健>>3C小百科-消费性电子-其他
C6000软件优化经验总结(2)

<STRONG>1、源代码:</STRONG>
<P>void fir_fxd1(short input[], short coefs[], short out[])</P>
<P>{</P>
<P>    int i, j;</P>
<P>    for (i = 0; i &lt; 40; i++)</P>
<P>    {</P>
<P>      for (j = 0; j &lt; 16; j++)</P>
<P>            out[i*16+j]= coefs[j] * input[i + 15 - j];</P>
<P>   }</P>
<P>}</P>
<P>     <STRONG>  2、改编后的代码:</STRONG></P>
<P>void fir_fxd2(const short input[], const short coefs[], short out[])</P>
<P>{</P>
<P>   int i, j;</P>
<P> </P>
<P>    for (i = 0; i &lt; 40; i++)</P>
<P>    {</P>
<P>      for (j = 0; j &lt; 16; j++)</P>
<P>            out[i*16+j]= coefs[j] * input[i + 15 - j];</P>
<P>   }</P>
<P>   <STRONG>     3、优化方法说明:</STRONG></P>
<P>       C6000编译器如果确定两条指令是不相关的,则安排它们并行执行。 关键字const可以指定一个变量或者一个变量的存储单元保持不变。这有助于帮助编译器确定指令的不相关性。例如上例中,源代码不能并行执行,而结果改编后的代码可以并行执行。</P>
<P>  <STRONG>     4、技巧:</STRONG></P>
<P>       使用const可以限定目标,确定存在于循环迭代中的存储器的不相关性。</P>
<P>五、</P>
<P>   <STRONG>    1、源代码:</STRONG></P>
<P>void vecsum(short *sum, short *in1, short *in2, unsigned int N)</P>
<P>{</P>
<P>    int i;</P>
<P> </P>
<P>    for (i = 0; i &lt; N; i++)</P>
<P>        sum[i] = in1[i] + in2[i];</P>
<P>}</P>
<P>       <STRONG>2、改编后的代码:</STRONG></P>
<P>void vecsum6(int *sum, const int *in1, const int *in2, unsigned int N)</P>
<P>{</P>
<P>    int i;</P>
<P>    int sz = N &gt;&gt; 2;</P>
<P> </P>
<P>    _nassert(N &gt;= 20);</P>
<P> </P>
<P>    for (i = 0; i &lt; sz; i += 2)</P>
<P>    {</P>
<P>        sum[i]   = _add2(in1[i]  , in2[i]);</P>
<P>        sum[i+1] = _add2(in1[i+1], in2[i+1]);</P>
<P>    }</P>
<P>}</P>
<P>       <STRONG>3、优化方法说明:</STRONG></P>
<P>源代码中,函数变量的定义是 short *sum, short *in1, short *in2,  改编后的代码函数变量是 int *sum, const int *in1, const int *in2,  整数类型由16位改编成32位,这时使用内联指令&#8220;_add2&#8221;一次可以完成两组16位整数的加法,效率提高一倍。注意这里还使用了关键字const和内联指令_nassert优化源代码。</P>
<P>  <STRONG>     4、技巧</STRONG>:</P>
<P>用内联指令_add2、_mpyhl、_mpylh完成两组16位数的加法和乘法,效率比单纯16位数的加法和乘法提高一倍。</P>
<P>    <STRONG>   六、if...else...语句的优化</STRONG></P>
<P>(一)</P>
<P>      <STRONG> 1、源代码:</STRONG></P>
<P>    if (sub (ltpg, LTP_GAIN_THR1) &lt;= 0)</P>
相关资讯
类别浏览
安徽 北京 福建 甘肃 广东 广西 贵州 海南 河北 河南 黑龙江 湖北 湖南 吉林 江苏 宁夏 青海 山东 山西 陕西 上海 四川 天津 新疆 西藏 云南 浙江 重庆 辽宁 江西 内蒙古
无忧商务网 版权所有 Copyright © 2020.6 www.cn5135.com All Rights Reserved. 湘ICP备12008603号
本站所有产品都是会员自行发布,所有信息都有对方的企业名片和联系方式,如果您需要咨询产品具体参数和细节,请直接联系和咨询厂商,谢谢。
行业子站: 机械 库存 建材 物流 礼品 能源 农业 汽摩 食品 通讯 五金 玩具 矿产 印刷 休闲 服务 服装 化工 环保 电子 纺织 电工 电脑 电器 办公 安全 包装 仪器 家居