• [^] # Re: Remboursez nos invitations !

    Posté par . En réponse à la dépêche C++17 exprime la virgule flottante en hexadécimal et offre des cadeaux aux lecteurs de LinuxFr.org. Évalué à 2.

    Je viens de lire rapidement la dépêche sur le court-circuit du constructeur par copie. A la fin, dans "Un code portable est moins performant que l’élision", j'emmetrai quelques reserves sur ce qui est dit.

    • Je ne connais aucun compilateur qui ne fait pas l'elision de la copie lors du retour par valeur. Comme vous l'avez vu, gcc et clang nécessitent des options pour ne pas faire cette optimisation. Le retour par valeur est donc en général bien plus efficace est portable.

    • Si vous voulez un petit jeu, essayez le code suivant:

      std::array"double, 2" f(const std::array"double, 2"& x) {
      std::array"double, 2" y{};
      y[0] = std::sin(x[0] + x[1]);
      y[1] = std::cos(x[0] + x[1]);
      return y;
      }

    et écrivez le même code avec un retour "par référence". Vous verrez que le retour par valeur est 2 fois plus rapide (avec un bon compilateur. Il me semble qu'il faut soit icpc, soit gcc >= 6.0).