VC图像处理编译优化+代码优化>>SSE2? 我在自学用VC做个包含图像处理的小程序,想提高图片处理的效率,在网上查到了很多,比如透明混合方面有很多使用MMX和SSE2编写的,但是我看VC编译优化里面有SSE2选项以及最快优化,不知道优化的算法+编译优化能代替或接近那些汇编的效率吗?或者说用什么样的方式写代码能生成一样或接近完全用SSE2编写的代码?比如for循环里采用并行优化+SSE2编译优化能吗?如果可行,那研究优化算法比现学汇编语言更好些。 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 其实编译优化、代码优化和SSE并不是做比较的,其实都可以看成是优化的一种手段,你在编译优化、代码优化的同时也能做SSE的 也可以考虑使用OpenMP提高效率 谢谢楼上各位的回答,我现在还希望有人能用代码证明下,因为我还不会汇编及SSE2,也不会编译后查看汇编代码。我先打个比方:double array[20] = {0.0};//赋值省略for(int i = 0; i < 20; i += 4){ array[i] = array[i] * 12.5 + 54;//仅表示算法相同 array[i + 1] = array[i + 1] * 12.5 + 54;// array[i + 2] = array[i + 2] * 12.5 + 54;// array[i + 3] = array[i + 3] * 12.5 + 54;//}不知这点代码算不算简单的并行运算,通过VC编译器SSE2优化后的汇编码与直接采用SSE2指令编写的代码编译后的汇编码是否接近,或是效率接近?希望哪位仁兄能帮忙验证下,或有更合适的代码证明下,先谢了 VC的sse2优化效果不明显,基本上选o2就是最大速度了。要用sse请使用intel c++ 同意楼上。1、你那个代码,仅算法上应该只是符合并行运算的概念,编译后运行快也应该主要是流程加长循环减少的缘故,类似内联的作用,但是如果你的那个算法较复杂,加入多线程才是真正意义的并行运算。2、纯CPU运算的情况下,使用SSE2寄存器运算,同时处理多位,达到并行运算的效果,但更适用于连续、字节对齐并有相同算法的情况,有必要的情况下首先优化算法,然后考虑是否加入多线程,然后考虑个别适用SSE加速的算法。3、VC包含SSE指令的C++头文件,学一下,在原有算法的基础上替代优化很好理解4、并行运算能力GPU比CPU强多了,图形方面可以利用DirectX,科学计算方面利用流处理,推荐NVIDIA的CUDA编程。 请教个自绘CButton问题 用GDI+DrawImage 画上去的图片会变大 在窗口中显示滚动的正弦函数 怎样在线程中控制进度条 关于使用ISAPI或者WebService的时候出现用户身份权限的问题 知道CBitMap指针,怎样用DrawDibDraw将图绘制到屏幕上 求助:用ado连接access的vc多文档应用程序 碰到一个奇怪的编绎错误 C2059 关于数据库中的数据类型为何不匹配?????????? 如何获得一个回调函数中的数据 MFC求救!!!快!!! 如何把一个HANDLE变量的值赋给静态文本框?
double array[20] = {0.0};
//赋值省略
for(int i = 0; i < 20; i += 4)
{
array[i] = array[i] * 12.5 + 54;//仅表示算法相同
array[i + 1] = array[i + 1] * 12.5 + 54;//
array[i + 2] = array[i + 2] * 12.5 + 54;//
array[i + 3] = array[i + 3] * 12.5 + 54;//
}
不知这点代码算不算简单的并行运算,通过VC编译器SSE2优化后的汇编码与直接采用SSE2指令编写的代码编译后的汇编码是否接近,或是效率接近?
希望哪位仁兄能帮忙验证下,或有更合适的代码证明下,先谢了
1、你那个代码,仅算法上应该只是符合并行运算的概念,编译后运行快也应该主要是流程加长循环减少的缘故,类似内联的作用,但是如果你的那个算法较复杂,加入多线程才是真正意义的并行运算。
2、纯CPU运算的情况下,使用SSE2寄存器运算,同时处理多位,达到并行运算的效果,但更适用于连续、字节对齐并有相同算法的情况,有必要的情况下首先优化算法,然后考虑是否加入多线程,然后考虑个别适用SSE加速的算法。
3、VC包含SSE指令的C++头文件,学一下,在原有算法的基础上替代优化很好理解
4、并行运算能力GPU比CPU强多了,图形方面可以利用DirectX,科学计算方面利用流处理,推荐NVIDIA的CUDA编程。