您的位置:程序门 -> 专题开发/技术/项目 ->



找到一段优化的好东东,对比赛应该有用


[收藏此页] [打印本页]选择字色:背景色:字体:[][][]


找到一段优化的好东东,对比赛应该有用
发表于:2007-01-04 13:26:51 楼主
代替dist   =   sqrt(distx   +   disty   +   distz)的东东:

void   cssetestdlg(
                                                                                                float*   parray1,   //   [输入]   源数组1
                                                                                                float*   parray2,   //   [输入]   源数组2
float*   parray3,   //   [输入]   源数组3
                                                                                                float*   presult,   //   [输出]   用来存放结果的数组
                                                                                                int   nsize)   //   [输入]   数组的大小
        {
                int   nloop   =   nsize/   4;

                __m128   m1,   m2,   m3,   m4;

                __m128*   psrc1   =   (__m128*)   parray1;
                __m128*   psrc2   =   (__m128*)   parray2;
__m128*   psrc3   =   (__m128*)   parray3;
                __m128*   pdest   =   (__m128*)   presult;


                __m128   m0_5   =   _mm_set_ps1(0.5f);   //   m0_5[0,   1,   2,   3]   =   0.5

                for   (   int   i   =   0;   i   <   nloop;   i++   )
                {
                        m1   =   _mm_mul_ps(*psrc1,   *psrc1);   //   m1   =   *psrc1   *   *psrc1
                        m2   =   _mm_mul_ps(*psrc2,   *psrc2);
                        m3   =   _mm_mul_ps(*psrc3,   *psrc3);
m4   =   _mm_add_ps(m1,   m2);
m4   =   _mm_add_ps(m4,   m3);
                        *pdest   =   _mm_sqrt_ps(m4);   //   m4   =   sqrt(m3)

                        psrc1++;
                        psrc2++;
psrc3++;
                        pdest++;
                }
        }
发表于:2007-01-04 13:32:161楼 得分:0
不用pd似乎会降低精度哎
发表于:2007-01-04 14:50:022楼 得分:0
isline   (缘清)        

呵呵,终于看到你的作品了
发表于:2007-01-05 12:51:053楼 得分:0
不是double
发表于:2007-01-23 22:34:014楼 得分:0
我把上面的代码编译了一下,   与sqrt(*psrc1   *   *psrc1   +*psrc2   *   *psrc2   +*psrc3   *   *psrc3)
这样的纯c代码相比,   到倒慢了,   请问,   是怎么回事儿?  
每个数组的大小都是400k,   我反复试过了,   无论是用vc编译,   还是用intel   c++编译,   打开了所有的优化,   都是这样的结果,   我简直不敢相信.
请大家指教一下.
发表于:2007-01-23 23:03:375楼 得分:0
另外,   我用的是赛杨2.6,   vs2003,   intel   c++   9.1
发表于:2007-01-24 10:26:226楼 得分:0
哪位帮忙解答一下?


快速检索

最新资讯
热门点击