Optimisation Compilateur visual studio
Salut à tous!
Je me retrouve devant un comportement bien curieux de la vitesse d'execution de mon code. Je m'explique:
Code:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22
|
for (int i = 1; i < magnitude_->height-1; ++i)
{
for (int j = 1; j < magnitude_->width-1; ++j)
{
currentMagnitude = magnitude_->imageData[srcOffset2+j];
val1 = static_cast <uchar_t> (magnitude_->imageData[i*magnitude_->widthStep+j+1]);
val2 = static_cast <uchar_t> (magnitude_->imageData[i*magnitude_->widthStep+j-1]);
int toto = j;
if (( currentMagnitude < val1) || (currentMagnitude < val2) )
{
toto = 1;
}
magnitude_->imageData[0] = toto;
}
} |
Ce bout de code s'execute en ~3 ms
Code:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16
|
for (int i = 1; i < magnitude_->height-1; ++i)
{
for (int j = 1; j < magnitude_->width-1; ++j)
{
currentMagnitude = magnitude_->imageData[srcOffset2+j];
val1 = static_cast <uchar_t> (magnitude_->imageData[i*magnitude_->widthStep+j+1]);
val2 = static_cast <uchar_t> (magnitude_->imageData[i*magnitude_->widthStep+j-1]);
int toto = j;
magnitude_->imageData[0] = toto;
}
} |
Celui-ci en 1.6ms
Code:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20
|
for (int i = 1; i < magnitude_->height-1; ++i)
{
for (int j = 1; j < magnitude_->width-1; ++j)
{
currentMagnitude = magnitude_->imageData[srcOffset2+j];
val1 = static_cast <uchar_t> (magnitude_->imageData[i*magnitude_->widthStep+j+1]);
val2 = static_cast <uchar_t> (magnitude_->imageData[i*magnitude_->widthStep+j-1]);
int toto = j;
if (( currentMagnitude < val1) || (currentMagnitude < val2) )
{
toto = 1;
}
}
} |
et celui-là en 1.8ms
Je cherche à comprendre d'où peut venir cette différence. Options du compilo? Je patauge.
Merci d'avance pour vos réponse!
Frantz
PS: Code compilé en utilisant visual studio 2008.