J'écris une application qui lit de grands tableaux de flottants et effectue quelques opérations simples avec eux. J'utilise des flottants parce que je pensais qu'ils seraient plus rapides que les doubles, mais après avoir fait quelques recherches, j'ai découvert qu'il y avait une certaine confusion à ce sujet. Quelqu'un peut-il m'éclairer à ce sujet ?
Réponses
Trop de publicités?Avec l'arithmétique de la FPU 387, les flottants ne sont plus rapides que les doubles pour certaines opérations itératives longues comme pow, log, etc (et seulement si le compilateur définit le mot de contrôle de la FPU de manière appropriée).
Avec l'arithmétique SSE emballée, cela fait cependant une grande différence.
Matthijs,
Vous avez tort. Le 32 bits est bien plus efficace que le 16 bits - dans les processeurs modernes... Peut-être pas en termes de mémoire, mais en termes d'efficacité, le 32 bits est la voie à suivre.
Vous devriez vraiment mettre à jour votre professeur avec quelque chose de plus "actuel" ;)
Quoi qu'il en soit, pour répondre à la question, float et double ont exactement les mêmes performances, du moins sur mon intel i7 870 (en théorie).
Voici mes mesures :
(j'ai créé un "algorithme" que j'ai répété 10.000.000 fois, puis répété 300 fois, et j'ai obtenu une moyenne).
double
1 cœur = 990ms 4 cœurs = 340 ms 6 cœurs = 282 ms 8 cœurs = 250 ms
float
1 cœur = 992ms 4 cœurs = 340 ms 6 cœurs = 282 ms 8 cœurs = 250 ms
J'ai toujours pensé que les processeurs étaient optimisés ou identiques, que ce soit en float ou en double. En cherchant des optimisations pour mes calculs intensifs (beaucoup de sorties d'une matrice, comparaisons de deux valeurs), j'ai découvert que les flottants sont environ 13 % plus rapides.
Cela m'a surpris, mais je suppose que c'est dû à la nature de mon problème. Je n'effectue pas de transferts entre float et double dans le cœur des opérations et mes calculs sont principalement des additions, des multiplications et des soustractions.
Ceci est sur mon i7 920. J'utilise un système d'exploitation 64 bits.
Cela indique que les flottants sont légèrement plus rapides que les doubles : http://www.herongyang.com/cs_b/performance.html
En général, chaque fois que vous effectuez une comparaison des performances, vous devez tenir compte des cas particuliers, par exemple si l'utilisation d'un type de produit nécessite des conversions supplémentaires ou un traitement des données. Ces éléments s'additionnent et peuvent contredire des repères génériques comme celui-ci.
- Réponses précédentes
- Plus de réponses