在 Visual Studio 2010 上,当我在以下代码中启用了增强指令集时,执行时间实际上会增加。
void add(float * input1, float * input2, float * output, int size)
{
for(int iter = 0; iter < size; iter++)
{
output[iter] = input1[iter] * input2[iter];
}
}
int main()
{
const int SIZE = 10000000;
float *in1 = new float[SIZE];
float *in2 = new float[SIZE];
float *out = new float[SIZE];
for(int iter = 0; iter < SIZE; iter++)
{
in1[iter] = std::rand();
in2[iter] = std::rand();
out[iter] = std::rand();
}
clock_t start = clock();
for(int iter = 0; iter < 100; iter++)
{
add(in1, in2, out, SIZE);
}
clock_t end = clock();
double time = difftime(end,start)/(double)CLOCKS_PER_SEC;
system("PAUSE");
return 0;
}
当启用SSE2时,time
变量的运行时间约为2.0
秒,但在未设置时为约1.7
秒。 我使用Windows 7 64位,VS 2010专业版,发布配置,并针对速度进行了优化。
是否有任何解释可以说明为什么启用SSE会导致更长的执行时间?
new float[SIZE];
会提供适当对齐的数据吗(我是指SSE对齐)? - R. Martinho Fernandes