je suis pas persuadé que le gain en performance soit considérable quand on utilise des templates.
Peut-être dans certaines catégorie d'applications, avec très peu de code et beaucoup de calculs, il y a un gain lié au fait que le compilateur génère du code plus "spécialisé", mais le comportement lié à l'utilisation des templates fait exploser la taille des librairies et le temps de compilation.
Hors le volume du code instancié en mémoire à un impact très négatif sur les performances (et c'est très très chiant à optimiser).
L'exemple cité dans ce journal montre un cache statique... C'est quand même plus lisible d'appeler la fonction sur les valeurs à la première utilisation (ou de la remplir au fil de l'eau en stockant le résultat). Il y a bien des façons d'initialiser un cache, quelle est la stratégie du compilateur? que change les options de compilation? Par exemple si j'écris 2 fois la ligne
Est-ce qu'il va stocker 2 fois les résultats? Si ces lignes sont dans 2 librairies différentes, que ce passe t-il? (bien sûr qu'il va stocker 2 fois les résultats... )
Et si le prime_sieve est dans une autre librairie, que ce passe t-il?
[^] # Re: Ça pique les yeux
Posté par YBoy360 (site web personnel) . En réponse au journal Mémorisation partielle de fonction constexpr. Évalué à 2.
je suis pas persuadé que le gain en performance soit considérable quand on utilise des templates.
Peut-être dans certaines catégorie d'applications, avec très peu de code et beaucoup de calculs, il y a un gain lié au fait que le compilateur génère du code plus "spécialisé", mais le comportement lié à l'utilisation des templates fait exploser la taille des librairies et le temps de compilation.
Hors le volume du code instancié en mémoire à un impact très négatif sur les performances (et c'est très très chiant à optimiser).
L'exemple cité dans ce journal montre un cache statique... C'est quand même plus lisible d'appeler la fonction sur les valeurs à la première utilisation (ou de la remplir au fil de l'eau en stockant le résultat). Il y a bien des façons d'initialiser un cache, quelle est la stratégie du compilateur? que change les options de compilation? Par exemple si j'écris 2 fois la ligne
Est-ce qu'il va stocker 2 fois les résultats? Si ces lignes sont dans 2 librairies différentes, que ce passe t-il? (bien sûr qu'il va stocker 2 fois les résultats... )
Et si le prime_sieve est dans une autre librairie, que ce passe t-il?
En tout cas la syntaxe est impressionnante.