单指令多数据的程序优化问题
luyued 发布于 2011-06-07 09:27 浏览 N 次有没有用过SIMD ,SSE 做过效率优化的朋友啊?我编写了一个测试程序,通过vtune进行性能分析,发现function1(); 的执行时间比function2();的执行时间要长,没有成功的优化性能。问题出在哪里了呢?
#include
using namespace std;
#include
void function1()
{
//for(int i=0;i<1000000000;i++){
// __m128i *a,*b,c;
// __declspec(align(16)) short arrayA[8]={1,1,1,1,1,1,1,1};
// __declspec(align(16)) short arrayB[8]={2,2,2,2,2,2,2,2};
// short arrayC[8]={0};
// a=(__m128i*)arrayA;
// b=(__m128i*)arrayB;
// c=_mm_add_epi16(*a,*b);
// ::memcpy(arrayC,&c,8*sizeof(short));
// //cout< //}
for(int i=0;i<1000000000;i++){
__m128i a,b,c;
__declspec(align(16)) short arrayA[8]={1,1,1,1,1,1,1,1};
__declspec(align(16)) short arrayB[8]={2,2,2,2,2,2,2,2};
a = _mm_load_si128((__m128i*)(arrayA));
b = _mm_load_si128((__m128i*)(arrayB));
__declspec(align(16)) short arrayC[8]={0};
c=_mm_add_epi16(a,b);
_mm_store_si128((__m128i*)(arrayC),c);
//cout< }
}
void function2()
{
for(int j=0;j<1000000000;j++){
short arrayA[8]={1,1,1,1,1,1,1,1};
short arrayB[8]={2,2,2,2,2,2,2,2};
short arrayC[8]={0};
arrayC[0]=arrayA[0]+arrayB[0];
arrayC[1]=arrayA[1]+arrayB[1];
arrayC[2]=arrayA[2]+arrayB[2];
arrayC[3]=arrayA[3]+arrayB[3];
arrayC[4]=arrayA[4]+arrayB[4];
arrayC[5]=arrayA[5]+arrayB[5];
arrayC[6]=arrayA[6]+arrayB[6];
arrayC[7]=arrayA[7]+arrayB[7];
//cout< }
}
void main()
{
function1();
function2();
}
MSN空间完美搬家到新浪博客!
- 06-21· 爱可视605WIFI暑促!购机还送
- 06-21· 疯狂降价1200元爱可视404
- 06-11· Ellen呼吁粉丝协力阻止捕杀
- 06-11· 【引用】『八卦』未来英
- 06-10· 升级Android 2.2!爱可视101评
- 06-10· 爱可视环球首发5款Androi
- 06-09· 台湾母子3人因贫病交迫中
- 06-09· Genetically modified tobacco co
- 06-09· 英国《独立报》:中国女演
- 06-09· Rascal Flatts - Summer Nights (
- 06-09· 收音机厂商(22)
- 06-08· 问板终极贴【2009年6月20日
- 06-08· 爱可视平板电脑新品 让你
- 06-08· 升级Android2.2!爱可视101平板
- 06-08· 法国爱可视推出限量版上
- 06-08· 高清之王爱可视AV530仅售
- 06-08· ARCHOS-605 爱可视--30GB-触摸
- 06-08· [转载]【原创】爱可视10
- 06-07· c++标准库中endl的实现(转
- 06-07· 单指令多数据的程序优化