12.3.9 : Classique VS deux std::transform

La figure 13 montre les performances de nos implémentations masquées et non-séquentielles et vectorisées avec deux std::transform imbriquées comparées aux performance classiques.

Il faut reconnaitre que les deux implémentations ne sont pas trivialles, l'une comme l'autre, mais elles ont des performances proche. Même si celle qui utilise deux std::transform utilise une entrée-sortie pour ne pas allouer un temporaire supplémentaire. Cette petite truande fait que ces deux implémentations n'ont pas les mêmes contraintes en terme d'utilisation, car l'une prend des données d'entrées en lecture seule, l'autre pas. Mais on va dire que dans ce cas, l'important est la performance et le fait de limiter les indices à donner au compilateur car l'analyse de données qui utilise la nouvelle implémentation devrait pouvoir être adaptée sans trop de soucis noteC'est bien sûr un postulat et seul le temps pourra trancher, mais c'est la meilleure implémentation moderne que j'ai réussi à faire..

nothing nothing

Figure 13 : En haut : le temps de calcul total de nos implémentations non-sequentielles et vectorisées avec deux std::transform imbriquées comparé à l'implémentation classique. En bas : le temps de calcul par élément de ces implémentations.