RVO

RVO - C++ - Programmation

Marsh Posté le 05-10-2009 à 21:07:15    

Salut,
 
je viens d'être mis au parfum du concept de RVO
cela veut il dire que si on développe sur un compilo récent, il est préférable de passer les objets par valeur au fonction ?
le retour aussi ?
 
Merci


---------------
.
Reply

Marsh Posté le 05-10-2009 à 21:07:15   

Reply

Marsh Posté le 05-10-2009 à 21:19:58    

Pourquoi est-ce que tu penses qu'une optimisation concernant la valeur de retour a un effet sur le choix de la manière dont il faut passer des paramètres?


---------------
The truth is rarely pure and never simple (Oscar Wilde)
Reply

Marsh Posté le 05-10-2009 à 21:28:51    

http://cpp.developpez.com/faq/cpp/ [...] vo_impacts
 
je pense pas je lis, je lis mal ?

Message cité 1 fois
Message édité par Glock 17Pro le 05-10-2009 à 21:32:41

---------------
.
Reply

Marsh Posté le 05-10-2009 à 22:26:03    

Reply

Marsh Posté le 05-10-2009 à 22:54:25    

ça me choque là pour le coup qu'un passage par valeur soit moins gourmand qu'une ref


---------------
.
Reply

Marsh Posté le 07-10-2009 à 10:02:56    


 
Oui.  Mais tu as une excuse, l'article en lui-meme cause de la confusion.  La (N)RVO n'a rien a faire ici.
 
Il faut regarder ce que tu compares.  Oui, c'est moins couteux de passer par copie que de passer par reference pour
faire une copie ensuite
dans les cas ou tu passes un temporaire car dans ce cas, le temporaire est utilise pour l'objet
local plutot que de le copier.
 
Ou intervient la (N)RVO, c'est lors de la generation du temporaire.  La (N)RVO permet d'avoir un constructeur de copie
en moins.
 
Donc petit tableau du nombre d'appels au constructeur de copie pour (note la ligne 6 quand COPIE n'est pas defini)

Code :
  1. #ifdef COPIE
  2. void f(T o) {
  3. }
  4. #else
  5. void f(T const& p) {
  6.    T o(p);
  7. }
  8. #endif
  9. T g() {
  10.    return T(42);
  11. }
  12. ...
  13. f(g());


 

             Ref  Copie
Sans RVO      2     1
Avec RVO      1     0


---------------
The truth is rarely pure and never simple (Oscar Wilde)
Reply

Marsh Posté le 09-10-2009 à 08:25:25    

d'acc je vois un peu mieux ty


---------------
.
Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed