Les pointeurs sont-ils si avantageux côté performance ?

ZackyBambou Messages postés 11 Date d'inscription lundi 20 janvier 2003 Statut Membre Dernière intervention 15 mars 2005 - 7 janv. 2004 à 18:05
magic_Nono Messages postés 1878 Date d'inscription jeudi 16 octobre 2003 Statut Membre Dernière intervention 16 mars 2011 - 19 janv. 2004 à 00:16
ZackrBambou

Voici je débute en c++ puisque je cherchais un langange pouvant optimiser la rapidité de mes programme par la mémoire et les calcul au cpu, je fais des tests pour m'assurer comment je peux sauver de la mémoire et gagner de la vitesse vs visual basic.

Or je croyais l'utilisation d'un pointeur pourrait m'aider sur ce point, mais je ne vois pas comment !

Voici un exemple
j'ai la variable int base =5;
ensuite j'ai mon pointeur soit int *pBase=0;

j'initialise le pointeur
pBase = &base;

ensuite j'évalue
le résultat est le suivant en utilisant la fonction sizeof() de iostream.h


La VALEUR de base est : 5
L'ADRESSE de base est :0x0042ED50

La TAILLE de base est :4 octets


La VALEUR de pBase est :0x0042ED50
L'ADRESSE de pBase est :0x004326A4
La TAILLE de pBase est :4


La VALEUR de *pBase : 5
L'ADRESSE de *pBase : 0x004326A4

La TAILLE de *pBase : 4

Donc si j'ai une variable définie par une struct personnelle pouvant chargé 10 megs en mémoire et que je déclare les megs pointeur... je me trouve avec un autre 10 megs en mémoire + un 4 octect de pBase tout comme si j'avais initialisé une seconde var temporaire à la valeur de base ce qui est beaucoup plus simple non ?


ex pour être sur qu'on se comprenne
int base = 5;
int tmpbase = 0;
base = tmpbase;
fini !


Si je me trompe quelque-part puisque je recherche vraiment la meilleur méthode de programmer avec le c++ faites-le moi savoir ca sera apprécié et peut-être verrais-je la lumière hihihi

Zacky ! Have Nice Day

3 réponses

cs_djl Messages postés 3011 Date d'inscription jeudi 26 septembre 2002 Statut Membre Dernière intervention 27 novembre 2004 7
7 janv. 2004 à 19:10
eu... c'est sur que pour faire une affectation c'est pas necessaire un pointeur. avec un pointeur tu peut alouer, liberer, pointer...
0
sebseb42 Messages postés 495 Date d'inscription dimanche 6 juillet 2003 Statut Membre Dernière intervention 9 novembre 2007 1
7 janv. 2004 à 19:30
en gros, l'avantage du pointeur, c'est que tu peux dire a une fonction "voila, les 10 megs de données sont la-bas, va les chercher" plutot que dire "tient, mange toi 10 megs dans la tronche" en les donnant en données.

typedef struct s_data
{
int machin;
int truc;
...
// 10 megs de données

} t_data;

ensuite tu as une fonction comme ca :

...
t_data my_data_struct;

my_data_struct.machin = 5;
my_data_struct.truc = 5;
// et ainsi de suite

traitement_data(my_data_struct); // allocation de 10 megs sur la pile, 100% de chance d'avoir un stack overflow au run-time

// ou alors...

traitement_data(&my_data_struct); // 4 octets allouer sur la pile, aucun problemes

Voila, j'espere que ca t'aura permis de voir un peu plus claire aux pointeurs
0
magic_Nono Messages postés 1878 Date d'inscription jeudi 16 octobre 2003 Statut Membre Dernière intervention 16 mars 2011
19 janv. 2004 à 00:16
En résumé,
passer un paramètre dans une fonction la copie,

donc, quelque soit ce param, en général, cela permet de sécuriser les fonctions...
(un param IN ne sera pas modifié...)
mais si ce param est gros (ex: un gros tableau, un grosse classe)
Le travail devient + lent et la taille nécessaire en RAM augmente alors que ce n'est pas forcément nécessaire...
L'idée est alors de ne passer que l'@ en param
et seule cette adresse est copiée...

-une des idées à la base de MétaProg était de pouvoir vérifier que les param transmis par adresse sont modifiés...-
(MP et pas MPLight pour ceux qui me suivent...)
[ref ds mes srces...à venir...}

@+
Magic Nono: l'informagicien!
0
Rejoignez-nous