Pagini: [1]   În jos
  Imprimă  
Ajutor Subiect: Niste intrebari de optimizare  (Citit de 1963 ori)
0 Utilizatori şi 1 Vizitator pe acest subiect.
timotei21
Strain


Karma: 2
Deconectat Deconectat

Mesaje: 5



Vezi Profilul
« : Martie 11, 2008, 19:07:55 »

Deci am niste intrebari legate de optimizarea unor operatii in C++

Ce este mai rapid dintre:
1)

 o matrice cu 2 linii si m coloane
 
Cod:
#define M 100
 int matrice[3][M];

 SAU
 
 un vector de structuri
 
Cod:
#define M 100
 struct st{ int x; int y;}; st vector[M];

2)
  folosirea unei variabile intr-o functie:

  folosind variabila global
 
  SAU
 
  transmitand-o ca parametru
Memorat
StTwister
Client obisnuit
**

Karma: 11
Deconectat Deconectat

Mesaje: 86



Vezi Profilul
« Răspunde #1 : Martie 11, 2008, 20:28:42 »

1) Teoretic, matricea, mai ales in cazurile in care este adaptata sa nu sparga linia de cache

2) Transmiterea ca parametru e mai rapida pentru ca variabila e stocata pe stiva, la care accesul este mai rapid

In fine, astea sunt detalii care conteaza prea putin, si in cea mai mare majoritate a cazurilor, nu iti vor aduce puncte in plus.
Corectati-ma daca am gresit
Memorat
gogu
Client obisnuit
**

Karma: 42
Deconectat Deconectat

Mesaje: 98



Vezi Profilul
« Răspunde #2 : Martie 11, 2008, 21:41:07 »

Daca nu vrei sa spagi cache-ul ar trebui sa fie mai eficienta varianta de struct in medie pentru ca atunci cand ai nevoie de x, probabil ai nevoie si de y si nu ai decat o citire din RAM daca nu sunt in cache.

Oricum, la 100 de elemente chiar nu ar trebui sa conteze ca intra oricum totul in cache.

La transmiterea parametrilor pentru intregi/reale nu ar trebui sa conteze, oricum optimizeaza bine compilatorul. Pentru structuri mari de date ai grija ca poate dura ceva sa le incarce in stiva asa ca foloseste transmiterea prin referinta unde e sigur.
Memorat
StTwister
Client obisnuit
**

Karma: 11
Deconectat Deconectat

Mesaje: 86



Vezi Profilul
« Răspunde #3 : Martie 11, 2008, 22:30:47 »

Daca nu vrei sa spagi cache-ul ar trebui sa fie mai eficienta varianta de struct in medie pentru ca atunci cand ai nevoie de x, probabil ai nevoie si de y si nu ai decat o citire din RAM daca nu sunt in cache.

In cazul asta poti declara matricea asa:
Cod:
#define M 100
int matrice[M][2]
Ce vroiam sa spun e ca matricea iti ofera mai multa flexibilitate in cazul asta, si poti s-o adaptez in functie de traversarile pe care le faci. Detalii irelevante anyway...
Memorat
Pagini: [1]   În sus
  Imprimă  
 
Schimbă forumul:  

Powered by SMF 1.1.19 | SMF © 2006-2013, Simple Machines