Forum |  HardWare.fr | News | Articles | PC | S'identifier | S'inscrire | Shop Recherche
976 connectés 

  FORUM HardWare.fr
  Programmation
  C++

  RVO et performance

 


 Mot :   Pseudo :  
 
Bas de page
Auteur Sujet :

RVO et performance

n°1650495
Alonz
Posté le 28-11-2007 à 18:17:53  profilanswer
 

Je me posais une question de performance/bonne pratique en C++ ?
 
considérons le code ci-dessous
 

Code :
  1. // definitions
  2. CString GetS(CString A)
  3. {
  4.     CString S="%s %s" + A;
  5.     return S;
  6. }
  7. void GetS(CString A, CString &S)
  8. {
  9.     S="%s %s" + A; 
  10. }
  11. // utilisations
  12. //1
  13. {
  14. CString bb;
  15. bb.Format(GetS("bbb" ),truc,machin);
  16. }
  17. //2
  18. {
  19. CString bb;
  20. CString tp = GetS("bbb" ) ;
  21. bb.Format(tp ,truc,machin);
  22. }
  23. //3
  24. {
  25. CString bb,tp;
  26. tp = GetS("bbb" ) ;
  27. bb.Format(tp ,truc,machin);
  28. }
  29. //4
  30. {
  31. CString bb , tp;
  32. GetS("bbb",tp) ;
  33. bb.Format(tp ,truc,machin);
  34. }


 
Quelle est le code qui vous semble le plus efficace ? pourquoi ?

mood
Publicité
Posté le 28-11-2007 à 18:17:53  profilanswer
 

n°1650506
Joel F
Real men use unique_ptr
Posté le 28-11-2007 à 18:39:46  profilanswer
 

Code :
  1. void GetS(const std::string& a, std::string& b )
  2. {
  3.   b = "%s %s" + a;
  4. }


 
C'ets cool de pas copier a pour rien.
et std::string > CString :o

n°1650561
Alonz
Posté le 28-11-2007 à 21:44:06  profilanswer
 

évidemment oui.

Code :
  1. CString GetS(const CString& A)
  2.   {
  3.      CString S="%s %s" + A;
  4.      return S;
  5.   }
  6.   void GetS(const CString& A, CString &S)
  7.   {
  8.      S="%s %s" + A;
  9.   }


n°1650665
Joel F
Real men use unique_ptr
Posté le 29-11-2007 à 10:08:28  profilanswer
 

bah void GetS(const CString& A, CString &S) est mieux

n°1650672
Alonz
Posté le 29-11-2007 à 10:19:21  profilanswer
 

en même temps c'est pas la question, je parle des utilisations possibles, et pourquoi...

n°1650675
Joel F
Real men use unique_ptr
Posté le 29-11-2007 à 10:22:18  profilanswer
 

j'ai bien envie de répondre à coté en te disqant que std::strign + stringstream font tout ça 10x plus proprement

n°1650745
Taz
bisounours-codeur
Posté le 29-11-2007 à 12:09:27  profilanswer
 

J'aurais tendance à dire que la NRVO ne va marcher que si ta fonction est inline, puisque beaucoup de compilateurs ne font cette optimisation que s'il n'y a qu'un seul return (sauf LTO ?).

n°1650903
Alonz
Posté le 29-11-2007 à 15:45:45  profilanswer
 

ça je ne sais pas si la rendre inline va changer quel que chos, le code la haut n'est qu'un exemple bidon pour parler théorie la fonction ne peut être inliner parfois...
 
déja on peut disqualifier la 3
On crée une variable temporaire + opérateur = ,
qui génère une variable temp aussi si pas de RVO.


Message édité par Alonz le 29-11-2007 à 15:47:46

Aller à :
Ajouter une réponse
  FORUM HardWare.fr
  Programmation
  C++

  RVO et performance

 

Sujets relatifs
Performance sur les dates ?[SQL] Indicateur de performance pour une base Oracle
Différence de performance entre Access et SQL Server ?mesurer la performance d'une requête, d'un index
[PHP] mysql VS mysqli en terme de performance?[PostgreSQL] Alias de table et performance
mesure de performance d'un programme[SESSION] taille limite et performance.
[VB.NET] Impact performance de l'utilisation de microsoft.visualbasic 
Plus de sujets relatifs à : RVO et performance


Copyright © 1997-2022 Hardware.fr SARL (Signaler un contenu illicite / Données personnelles) / Groupe LDLC / Shop HFR