• [^] # Re: C++, où quand le code asm généré est plus lisible

    Posté par (site web personnel) . En réponse au journal [C++14 ] Expressions template pour les nuls. Évalué à 2. Dernière modification le 01 juin 2016 à 10:38.

    Peut-être que je n'ai pas assez fait de C++ pour voir à quel point c'est génial, mais j'ai l'impression que le code assembleur que tu présentes est plus simple que le code C++.

    Parce que le code assembleur que tu vois en bas n'est pas représentatif du code templated que tu vois plus haut, ni même comparable.

    Le code C++ templated que tu vois plus haut est valide pour une infinité de combinaison de mul / add et pour une infinité d'expressions différente.

    Alors que le code assembler que tu vois plus bas est valide uniquement pour la simple expression "auto expr = add(cst(12), mul(ref(a), ref(b)));" avec des paramètres donnés.

    Si tu gardes ça à l'esprit, alors non le code C++ n'est pas verbeux, il est même extrêmement concis.
    Ce que tu as écris en C++ se rapproche au final d'un un "micro-compiler" d'expressions mathématiques. Alors que ce que tu as en assembler est juste une simple opération mathématique sur une range.

    C'est là toute la magie de la méta-programmation en C++, faire tout ce que tu peux faire à compile time à compile time pour générer un runtime aussi léger que possible ( en théorie du moins ).
    ```