侯佩:置顶! at 2012-04-23 12:40
为了优化“64位像素转32位像素”,我测试了多种算法,并分别在VC6、VC2010、C#2010、VB6上实现了这些算法,同时还对比测试了MMX、SSE指令集版算法的性能。
测试成绩详见——
http://blog.csdn.net/zyl910/article/details/7458757
请大家帮忙做一下测试,看看其他硬件环境下的性能。
测试程序下载——
http://files.cnblogs.com/zyl910/noif_Test.rar
http://dl.dbank.com/c069c6thd7
------解决方案--------------------------------------------------------
我来拿分的,上个 Intel parallel studio 2011 xe 版本的编译器的测试
源代码,是你的
【深入探讨用位掩码代替分支(4):VC2010速度测试 】
http://blog.csdn.net/zyl910/article/details/7403497
没有任何改动源代码
Intel parallel studio 2011 xe + 最新的 update ...
编译器选项: (默认的选项,然后,在 属性里面的优化选项,
+ 使用了qxhost---使用本机最高支持的sse的版本,
其它的qvec等,一大堆选项,还没试。。。。
/Zi /nologo /W3 /O2 /Oi /Ot /Qipo /D "WIN32" /D "NDEBUG" /D "_CONSOLE" /D "_UNICODE" /D "UNICODE" /EHsc /GS /Gy /fp:precise /QxHost /Zc:wchar_t /Zc:forScope /Fp"x64\Release\noifVC2010.pch" /FAs /Fa"x64\Release\" /Fo"x64\Release\" /Fd"x64\Release\vc100.pdb"
== noif:VC2010(64) on 64bit ==<Press any key to continue>
f0_if[1]: 906
f0_if[2]: 872
f0_if[3]: 879
f1_min[1]: 274
f1_min[2]: 274
f1_min[3]: 271
f2_neg[1]: 437
f2_neg[2]: 441
f2_neg[3]: 442
f3_sar[1]: 410
f3_sar[2]: 367
f3_sar[3]: 366
<Press any key to exit>
下面的是,VC 2010 的默认设置。
/Zi /nologo /W3 /WX- /O2 /Oi /Ot /GL /D "WIN32" /D "NDEBUG" /D "_CONSOLE" /D "_UNICODE" /D "UNICODE" /Gm- /EHsc /GS /Gy /fp:precise /Zc:wchar_t /Zc:forScope /Fp"x64\Release\noifVC2010.pch" /FAs /Fa"x64\Release\" /Fo"x64\Release\" /Fd"x64\Release\vc100.pdb" /Gd /errorReport:queue
== noif:VC2010(64) on 64bit ==<Press any key to continue>
f0_if[1]: 1443
f0_if[2]: 1440
f0_if[3]: 1428
f1_min[1]: 1553
f1_min[2]: 1575
f1_min[3]: 1554
f2_neg[1]: 383
f2_neg[2]: 380
f2_neg[3]: 385
f3_sar[1]: 246
f3_sar[2]: 245
f3_sar[3]: 246
<Press any key to exit>
------解决方案--------------------------------------------------------
你拿vc2010默认的(没开mmx、sse)的和intel并行编辑器默认的(开了sse的)比,根本没得比。
vc支持sse2优化。开了就会更快。vc11beta还支持avx优化
vc的Optimization选项里面用Full Optimization、Favor Fast Code,还要在Code Generation选项里面,Enable Enhanced Instruction Set里面选优化指令集的类型。
自己可以想,vc6都支持的优化,到了更新的vc版本反而不支持了,这个本身就有问题。
------解决方案--------------------------------------------------------
VC2010的/arch:SSE2选项基本是个摆设,它只是告诉编译器允许使用到SSE2指令集,不是必须的,很多情况下根本不生成SSE指令。