Bonjour,
je me demandai si entre ces deux ecriture il y aura une differance de performance et pourquoi?

Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
int h ;
int w;
std::vector<char> buffer;
chargerBuffer(buffer,h,w);
 
std::vector<float> bufferout(buffer.size());
 
for(int i=0;i<h;++i)
 for (int j =1;j<w;++j)
 {
 bufferout[i*w+j] = buffer[i*w+j]-buffer[i*w+j-1];
 }
et
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
int h ;
int w;
std::vector<char> buffer;
chargerBuffer(buffer,h,w);
 
std::vector<float> bufferout(buffer.size());
 
for(int i=0;i<h;++i)
 {
 std::vector<char>::iterator itIn =buffer.begin() + i*w;
 std::vector<float>::iterator itout =bufferout.begin()+i*w;
  for (int j =1;j<w;++j)
  {
  *(itout +j) = *(itIn +j)-(itIn +j-1);
  }
 }

A mon avis les multiplication en moins ne change rien.
Je me demande si il y aurait pas une différence au niveau du chargement de la memoire pour le CPU, et que l'écriture 2 est meilleur.

Une autre question, est il vrai que le parcoure d'un tableau est plus rapide quand on va de la fin au debut?

merci