Sur Visual Studio 2010, lorsque j'active les ensembles d'instructions améliorés sur le code suivant, le temps d'exécution augmente en réalité.
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;
}
Je reçois systématiquement environ 2.0
secondes pour la variable time
avec SSE2 activé, mais environ 1.7
secondes lorsqu'il est "Non défini". Je construis sur Windows 7 64bits, VS 2010 professionnel, configuration de sortie, optimisé pour la vitesse.
Y a-t-il une explication pour laquelle activer SSE entraîne un temps d'exécution plus long?