VC6、VC2010、C#2010、VB6和MMX、SSE指令集 运算性能大比拼(64位像素转32位像素)。请大家帮忙测试
为了优化“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
[解决办法]
破电脑测试一下VC2010(32) on 32bit
Intel(R) G530
== noif:VC2010(32) on 32bit ==<Press any key to continue>
f0_if[1]: 1526
f0_if[2]: 1506
f0_if[3]: 1503
f1_min[1]: 1854
f1_min[2]: 1857
f1_min[3]: 1847
f2_neg[1]: 447
f2_neg[2]: 460
f2_neg[3]: 447
f3_sar[1]: 382
f3_sar[2]: 392
f3_sar[3]: 381
[解决办法]
== noif:VC6 ==<Press any key to continue>
f0_if[1]: 2578
f0_if[2]: 2844
f0_if[3]: 3094
f1_min[1]: 3359
f1_min[2]: 3422
f1_min[3]: 3485
f2_neg[1]: 1921
f2_neg[2]: 1891
f2_neg[3]: 1922
f3_sar[1]: 1719
f3_sar[2]: 1797
f3_sar[3]: 1796
<Press any key to exit>
== noif:VB6 ==
f0_if[1]:6828
f0_if[2]:7609
f0_if[3]:7734
f2_neg[1]:3329
f2_neg[2]:3343
f2_neg[3]:3469
f2_negB[1]:7078
f2_negB[2]:7313
f2_negB[3]:7546
== noif:VC6 SIMD ==<Press any key to continue>
f4_mmx[1]: 1083.0
f4_mmx[2]: 1191.4
f4_mmx[3]: 1240.2
f5_sse[1]: 1248.1
f5_sse[2]: 1303.8
f5_sse[3]: 1342.8
<Press any key to exit>
== noif:VC2010(32) on 32bit ==<Press any key to continue>
f0_if[1]: 5094
f0_if[2]: 5984
f0_if[3]: 6031
f1_min[1]: 7500
f1_min[2]: 7735
f1_min[3]: 7828
f2_neg[1]: 2578
f2_neg[2]: 2672
f2_neg[3]: 2609
f3_sar[1]: 2531
f3_sar[2]: 2657
f3_sar[3]: 2547
<Press any key to exit>
一台04年的赛扬2.4的CPU。
[解决办法]
一台intel core(TM) I3 cPU m380 2.53GHZ 2GB内存,WIN7系统
== noif:VC2010(32) on 32bit ==<Press any key to continue>
f0_if[1]: 3132
f0_if[2]: 2415
f0_if[3]: 1796
f1_min[1]: 3014
f1_min[2]: 2929
f1_min[3]: 2674
f2_neg[1]: 497
f2_neg[2]: 497
f2_neg[3]: 513
f3_sar[1]: 392
f3_sar[2]: 384
f3_sar[3]: 388
<Press any key to exit>
== noif:VC6 SIMD ==<Press any key to continue>
f4_mmx[1]: 107.3
f4_mmx[2]: 75.0
f4_mmx[3]: 67.1
f5_sse[1]: 43.1
f5_sse[2]: 41.3
f5_sse[3]: 41.6
<Press any key to exit>
== noif:VC6 ==<Press any key to continue>
f0_if[1]: 3884
f0_if[2]: 3602
f0_if[3]: 3620
f1_min[1]: 2959
f1_min[2]: 2936
f1_min[3]: 2937
f2_neg[1]: 1569
f2_neg[2]: 1563
f2_neg[3]: 1555
f3_sar[1]: 1530
f3_sar[2]: 1532
f3_sar[3]: 1497
<Press any key to exit>
== noif:VB6 ==
f0_if[1]:8115
f0_if[2]:8126
f0_if[3]:7040
f2_neg[1]:2315
f2_neg[2]:2240
f2_neg[3]:2057
f2_negB[1]:3514
f2_negB[2]:3478
f2_negB[3]:3227
== noif:C#2010(any) on 32bit ==<Press any key to continue>
f0_if[1]: 4798
f0_if[2]: 2967
f0_if[3]: 2783
f1_min[1]: 2052
f1_min[2]: 1846
f1_min[3]: 1829
f2_neg[1]: 2372
f2_neg[2]: 2372
f2_neg[3]: 2361
f2_negB[1]: 2467
f2_negB[2]: 2478
f2_negB[3]: 2484
f3_sar[1]: 477
f3_sar[2]: 476
f3_sar[3]: 476
f3_sarB[1]: 725
f3_sarB[2]: 728
f3_sarB[3]: 733
<Press any key to exit>
== noif:C#2010(x86) on 32bit ==<Press any key to continue>
f0_if[1]: 2856
f0_if[2]: 2391
f0_if[3]: 2371
f1_min[1]: 1839
f1_min[2]: 1830
f1_min[3]: 1834
f2_neg[1]: 2393
f2_neg[2]: 2366
f2_neg[3]: 2371
f2_negB[1]: 2473
f2_negB[2]: 2476
f2_negB[3]: 2468
f3_sar[1]: 475
f3_sar[2]: 472
f3_sar[3]: 467
f3_sarB[1]: 723
f3_sarB[2]: 718
f3_sarB[3]: 736
<Press any key to exit>
[解决办法]
AMD 四核CPU 单核2GHz
== noif:VB6 ==
f0_if[1]:2108
f0_if[2]:2107
f0_if[3]:2109
f2_neg[1]:1261
f2_neg[2]:1260
f2_neg[3]:1259
f2_negB[1]:1968
f2_negB[2]:1970
f2_negB[3]:1966
[解决办法]
== noif:VC6 ==<Press any key to continue>
f0_if[1]: 1439
f0_if[2]: 1466
f0_if[3]: 1452
f1_min[1]: 1514
f1_min[2]: 1529
f1_min[3]: 1549
f2_neg[1]: 498
f2_neg[2]: 498
f2_neg[3]: 498
f3_sar[1]: 495
f3_sar[2]: 501
f3_sar[3]: 493
<Press any key to exit>
[解决办法]
== noif:C#2010(x86) on 64bit ==<Press any key to continue>f0_if[1]: 2067f0_if[2]: 2057f0_if[3]: 2061f1_min[1]: 1611f1_min[2]: 1586f1_min[3]: 1590f2_neg[1]: 2052f2_neg[2]: 2048f2_neg[3]: 2055f2_negB[1]: 2125f2_negB[2]: 2141f2_negB[3]: 2148f3_sar[1]: 411f3_sar[2]: 412f3_sar[3]: 409f3_sarB[1]: 624f3_sarB[2]: 637f3_sarB[3]: 635<Press any key to exit>== noif:C#2010(x64) on 64bit ==<Press any key to continue>f0_if[1]: 1539f0_if[2]: 1541f0_if[3]: 1535f1_min[1]: 1561f1_min[2]: 1551f1_min[3]: 1554f2_neg[1]: 2073f2_neg[2]: 2062f2_neg[3]: 2069f2_negB[1]: 2524f2_negB[2]: 2538f2_negB[3]: 2540f3_sar[1]: 411f3_sar[2]: 404f3_sar[3]: 398f3_sarB[1]: 488f3_sarB[2]: 495f3_sarB[3]: 488<Press any key to exit>== noif:C#2010(any) on 64bit ==<Press any key to continue>f0_if[1]: 1542f0_if[2]: 1540f0_if[3]: 1532f1_min[1]: 1549f1_min[2]: 1546f1_min[3]: 1547f2_neg[1]: 2065f2_neg[2]: 2061f2_neg[3]: 2064f2_negB[1]: 2508f2_negB[2]: 2515f2_negB[3]: 2529f3_sar[1]: 401f3_sar[2]: 404f3_sar[3]: 403f3_sarB[1]: 496f3_sarB[2]: 497f3_sarB[3]: 497<Press any key to exit>== noif:VC6 ==<Press any key to continue>f0_if[1]: 2064f0_if[2]: 2033f0_if[3]: 2048f1_min[1]: 1569f1_min[2]: 1574f1_min[3]: 1572f2_neg[1]: 964f2_neg[2]: 964f2_neg[3]: 959f3_sar[1]: 811f3_sar[2]: 823f3_sar[3]: 816<Press any key to exit>== noif:VC6 SIMD ==<Press any key to continue>f4_mmx[1]: 39.6f4_mmx[2]: 38.9f4_mmx[3]: 38.8f5_sse[1]: 26.1f5_sse[2]: 25.7f5_sse[3]: 25.5<Press any key to exit>== noif:VC2010(32) on 64bit ==<Press any key to continue>f0_if[1]: 1525f0_if[2]: 1507f0_if[3]: 1511f1_min[1]: 2181f1_min[2]: 2184f1_min[3]: 2174f2_neg[1]: 418f2_neg[2]: 420f2_neg[3]: 421f3_sar[1]: 325f3_sar[2]: 322f3_sar[3]: 321<Press any key to exit>== noif:VC2010(64) on 64bit ==<Press any key to continue>f0_if[1]: 1452f0_if[2]: 1451f0_if[3]: 1443f1_min[1]: 1555f1_min[2]: 1557f1_min[3]: 1569f2_neg[1]: 383f2_neg[2]: 386f2_neg[3]: 379f3_sar[1]: 248f3_sar[2]: 244f3_sar[3]: 249<Press any key to exit>
[解决办法]
DELL Precision M4500
== noif:C#2010 on 32bit ==<Press any key to continue>
f0_if[1]: 2280
f0_if[2]: 2488
f0_if[3]: 2521
f1_min[1]: 1793
f1_min[2]: 1762
f1_min[3]: 1762
f2_neg[1]: 2326
f2_neg[2]: 2324
f2_neg[3]: 2302
f2_negB[1]:2394
f2_negB[2]:2400
f2_negB[3]:2421
f3_sar[1]: 494
f3_sar[2]: 488
f3_sar[3]: 494
f3_sarB[1]: 735
f3_sarB[2]: 770
f3_sarB[3]: 761
<Press any key to exit>
[解决办法]
DELL Precision M4500
== noif:C#2010(any) on 32bit ==<Press any key to continue>
f0_if[1]: 2262
f0_if[2]: 2440
f0_if[3]: 2243
f1_min[1]: 1792
f1_min[2]: 1768
f1_min[3]: 1785
f2_neg[1]: 2307
f2_neg[2]: 2352
f2_neg[3]: 2360
f2_negB[1]:2369
f2_negB[2]:2397
f2_negB[3]:2346
f3_sar[1]: 479
f3_sar[2]: 469
f3_sar[3]: 463
f3_sarB[1]: 763
f3_sarB[2]: 744
f3_sarB[3]: 774
<Press any key to exit>
[解决办法]
DELL Precision M4500, Win7
== noif:VB6 ==
f0_if[1]:2831
f0_if[2]:2874
f0_if[3]:2896
f2_neg[1]:1250
f2_neg[2]:1386
f2_neg[3]:1520
f2_negB[1]:2698
f2_negB[2]:2647
f2_negB[3]:2262
VB6 TestFull 死机了,Not Responding
== noif:VB6 ==
f0_if[1]:2745
f0_if[2]:2851
f0_if[3]:2845
== noif:vc6 ==<Press any key to continue>
f0_if[1]: 2285
f0_if[2]: 2258
f0_if[3]: 2221
f1_min[1]: 1795
f1_min[2]: 1848
f1_min[3]: 1922
f2_neg[1]: 1070
f2_neg[2]: 1114
f2_neg[3]: 1005
f3_sar[1]: 992
f3_sar[2]: 1013
f3_sar[3]: 1066
<Press any key to exit>
[解决办法]
DELL Precision M4500, Win7
== noif:vc6 SIMD==<Press any key to continue>
f4_mmx[1]: 53.4
f4_mmx[2]: 52.7
f4_mmx[3]: 52.3
f4_sse[1]: 31.8
f4_sse[2]: 31.7
f4_sse[3]: 32.1
<Press any key to exit>
== noif:VC2010(32) on 32bit ==<Press any key to continue>
f0_if[1]: 1782
f0_if[2]: 1795
f0_if[3]: 1767
f1_min[1]: 2550
f1_min[2]: 2512
f1_min[3]: 2598
f2_neg[1]: 609
f2_neg[2]: 575
f2_neg[3]: 583
f3_sar[1]: 460
f3_sar[2]: 415
f3_sar[3]: 432
<Press any key to exit>
[解决办法]
英特尔 Pentium(奔腾) 双核 E5300 @ 2.60GHz winXP 2G内存
== noif:VB6 ==
f0_if[1]:2686
f0_if[2]:2574
f0_if[3]:2533
f2_neg[1]:1130
f2_neg[2]:1139
f2_neg[3]:1132
f2_negB[1]:1812
f2_negB[2]:1829
f2_negB[3]:1815
不好意思,别的复制不出来,有谁给支个招呢?看了前面几位的回复,我也不知道在cmd中如何重定向~~
[解决办法]
WinXP SP3, Inter(R) Core(TM) 2 Duo CPU E6550 @ 2.33Hz
没有 .Net Framework 4.0,只能测 VB, VC
== noif:VB6 ==
f0_if[1]:2791
f0_if[2]:2783
f0_if[3]:2791
f2_neg[1]:1248
f2_neg[2]:1256
f2_neg[3]:1252
f2_negB[1]:2010
f2_negB[2]:2006
f2_negB[3]:2005
== noif:VC6 ==
f0_if[1]: 2486
f0_if[2]: 2484
f0_if[3]: 2489
f1_min[1]: 1840
f1_min[2]: 1835
f1_min[3]: 1840
f2_neg[1]: 1020
f2_neg[2]: 1025
f2_neg[3]: 1020
f3_sar[1]: 998
f3_sar[2]: 992
f3_sar[3]: 994
== noif:VC6 SIMD ==
f4_mmx[1]: 58.8
f4_mmx[2]: 59.3
f4_mmx[3]: 58.9
f5_sse[1]: 42.1
f5_sse[2]: 41.3
f5_sse[3]: 41.1
------解决方案--------------------
x201 i5 M560 8G winServer2008 R2 x64
== noif:C#2010(x86) on 64bit ==<Press any key to continue>f0_if[1]: 2220f0_if[2]: 2229f0_if[3]: 2213f1_min[1]: 1709f1_min[2]: 1708f1_min[3]: 1713f2_neg[1]: 2222f2_neg[2]: 2228f2_neg[3]: 2219f2_negB[1]: 2297f2_negB[2]: 2301f2_negB[3]: 2329f3_sar[1]: 471f3_sar[2]: 449f3_sar[3]: 450f3_sarB[1]: 683f3_sarB[2]: 684f3_sarB[3]: 691<Press any key to exit>== noif:C#2010(x64) on 64bit ==<Press any key to continue>f0_if[1]: 1656f0_if[2]: 1643f0_if[3]: 1642f1_min[1]: 1682f1_min[2]: 1668f1_min[3]: 1674f2_neg[1]: 2240f2_neg[2]: 2246f2_neg[3]: 2240f2_negB[1]: 2745f2_negB[2]: 2747f2_negB[3]: 2741f3_sar[1]: 452f3_sar[2]: 447f3_sar[3]: 447f3_sarB[1]: 536f3_sarB[2]: 540f3_sarB[3]: 543<Press any key to exit>== noif:C#2010(any) on 64bit ==<Press any key to continue>f0_if[1]: 1656f0_if[2]: 1658f0_if[3]: 1658f1_min[1]: 1686f1_min[2]: 1682f1_min[3]: 1684f2_neg[1]: 2227f2_neg[2]: 2229f2_neg[3]: 2240f2_negB[1]: 2734f2_negB[2]: 2724f2_negB[3]: 2728f3_sar[1]: 447f3_sar[2]: 453f3_sar[3]: 454f3_sarB[1]: 547f3_sarB[2]: 543f3_sarB[3]: 545<Press any key to exit>== noif:VC6 ==<Press any key to continue>f0_if[1]: 2103f0_if[2]: 2117f0_if[3]: 2168f1_min[1]: 1715f1_min[2]: 1723f1_min[3]: 1709f2_neg[1]: 912f2_neg[2]: 910f2_neg[3]: 931f3_sar[1]: 916f3_sar[2]: 933f3_sar[3]: 926<Press any key to exit>== noif:VC6 SIMD ==<Press any key to continue>f4_mmx[1]: 42.8f4_mmx[2]: 42.8f4_mmx[3]: 44.3f5_sse[1]: 28.8f5_sse[2]: 28.4f5_sse[3]: 28.3<Press any key to exit>== noif:VC2010(32) on 64bit ==<Press any key to continue>f0_if[1]: 1617f0_if[2]: 1617f0_if[3]: 1614f1_min[1]: 2345f1_min[2]: 2347f1_min[3]: 2337f2_neg[1]: 464f2_neg[2]: 456f2_neg[3]: 463f3_sar[1]: 349f3_sar[2]: 353f3_sar[3]: 353<Press any key to exit>== noif:VC2010(64) on 64bit ==<Press any key to continue>f0_if[1]: 1559f0_if[2]: 1551f0_if[3]: 1558f1_min[1]: 1683f1_min[2]: 1687f1_min[3]: 1724f2_neg[1]: 433f2_neg[2]: 459f2_neg[3]: 433f3_sar[1]: 280f3_sar[2]: 309f3_sar[3]: 301<Press any key to exit>
[解决办法]
OS: Windows XPSP3
CPU: Intel(R) Core(TM) i3_2120 CPU @ 3.30GHz(四核CPU)
== noif:VB6 ==
f0_if[1]:1797
f0_if[2]:1828
f0_if[3]:1813
f1_iif[1]:54203
f1_iif[2]:53531
f1_iif[3]:53328
f2_neg[1]:672
f2_neg[2]:687
f2_neg[3]:688
f2_negB[1]:1375
f2_negB[2]:1344
f2_negB[3]:1359
== noif:VC6 ==<Press any key to continue>
f0_if[1]: 1297
f0_if[2]: 1296
f0_if[3]: 1282
f1_min[1]: 1312
f1_min[2]: 1313
f1_min[3]: 1328
f2_neg[1]: 453
f2_neg[2]: 453
f2_neg[3]: 453
f3_sar[1]: 438
f3_sar[2]: 437
f3_sar[3]: 438
<Press any key to exit>
== noif:VC2010(32) on 32bit ==<Press any key to continue>
f0_if[1]: 1079
f0_if[2]: 1093
f0_if[3]: 1078
f1_min[1]: 1344
f1_min[2]: 1328
f1_min[3]: 1328
f2_neg[1]: 329
f2_neg[2]: 328
f2_neg[3]: 328
f3_sar[1]: 281
f3_sar[2]: 281
f3_sar[3]: 266
<Press any key to exit>
== noif:VC6 SIMD ==<Press any key to continue>
f4_mmx[1]: 23.4
f4_mmx[2]: 23.4
f4_mmx[3]: 23.4
f5_sse[1]: 16.6
f5_sse[2]: 16.6
f5_sse[3]: 15.6
<Press any key to exit>
[解决办法]
OS: Win7-32bit
CPU: DualCore Intel Pentium E5500, 2800 MHz (14 x 200)
== noif:C#2010(x86) on 32bit ==<Press any key to continue>
f0_if[1]:1994
f0_if[2]:2013
f0_if[3]:2022
f1_min[1]:1610
f1_min[2]:1585
f1_min[3]:1588
f2_neg[1]:2013
f2_neg[2]:2005
f2_neg[3]:2017
f2_negB[1]:2168
f2_negB[2]:2187
f2_negB[3]:2207
f3_sar[1]:450
f3_sar[2]:452
f3_sar[3]:440
f3_sarB[1]:666
f3_sarB[2]:665
f3_sarB[3]:658
== noif:C#2010(any) on 32bit ==<Press any key to continue>
f0_if[1]:1982
f0_if[2]:2012
f0_if[3]:1991
f1_min[1]:1593
f1_min[2]:1623
f1_min[3]:1617
f2_neg[1]:2130
f2_neg[2]:2082
f2_neg[3]:2010
f3_sar[1]:446
f3_sar[2]:440
f3_sar[3]:442
f3_sarB[1]:663
f3_sarB[2]:670
f3_sarB[3]:666
== noif:VB6 ==
f0_if[1]:2376
f0_if[2]:2361
f0_if[3]:2363
f2_neg[1]:1050
f2_neg[2]:1052
f2_neg[3]:1050
f2_negB[1]:1673
f2_negB[2]:1676
f2_negB[3]:1711
== noif:VC6 ==
f0_if[1]:2137
f0_if[2]:2139
f0_if[3]:2139
f1_min[1]:1569
f1_min[2]:1607
f1_min[3]:1583
f2_neg[1]:858
f2_neg[2]:907
f2_neg[3]:851
f3_sar[1]:827
f3_sar[2]:826
f3_sar[3]:828
== noif:VC6 SIMD ==
f4_mmx[1]:52.7
f4_mmx[2]:50.3
f4_mmx[3]:49.4
f5_sse[1]:36.9
f5_sse[2]:34.4
f5_sse[3]:34.3
== noif:VC2010(32) on 32bit ==
f0_if[1]:1485
f0_if[2]:1467
f0_if[3]:1463
f1_min[1]:2177
f1_min[2]:2175
f1_min[3]:2177
f2_neg[1]:389
f2_neg[2]:389
f2_neg[3]:389
f3_sar[1]:341
f3_sar[2]:342
f3_sar[3]:342
[解决办法]