Bonjour,


Est-ce qu'une bonne âme voudrait bien me fournir un bout de code qui permettrait de mettre en évidence les optimisations possibles lors de l'usage d'un pointeur restreint sous GCC 4.7.2.5 ?


Je viens d'essayer de faire un programme (un peu bateau) de copie de mémoire :
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
17
18
19
20
21
22
23
24
#include <stdio.h>
//using namespace std;
#define IT 900000
void mcp ( int nb, 
           #ifdef WITH
           const char * const restrict ptr_src,
           char * const restrict ptr_dst
           #else
           const char * const ptr_src,
           char * const  ptr_dst
           #endif
          ){
        for (int i=0; i<nb; i++)
                *(ptr_dst+i)=*(ptr_src+i);
}
 
int main(void){
        int tab[IT];
        for (int i = 0; i < IT; i++)
                *(tab+i)=i;
        int tb[IT];
        mcp(IT * sizeof(int),(char*) tab,(char*) tb);
        return 0;
}
J'obtiens exactement le même code assembleur dans tous les niveaux d'optimisation possibles que j'utilise le mot clef restrict ou pas...

Du coup je ne vois pas trop l'utilité du truc.

Merci d'avance.