Une croyance de longue date parmi les programmeurs est que les calculs d'entiers sont intrinsèquement plus rapide que les calculs à virgule flottante. Cependant, cette hypothèse n'est peut-être plus valable pour les processeurs multicœurs modernes.
Pour évaluer la vitesse relative des calculs d'entiers et de virgules flottantes sur diverses architectures de processeur, examinons dans certaines données :
Intel Xeon X5550 64 bits à 2,67 GHz, gcc 4.1.2 -O3 :
short add/sub: 1.005460 [0] short mul/div: 3.926543 [0] long add/sub: 0.000000 [0] long mul/div: 7.378581 [0] long long add/sub: 0.000000 [0] long long mul/div: 7.378593 [0] float add/sub: 0.993583 [0] float mul/div: 1.821565 [0] double add/sub: 0.993884 [0] double mul/div: 1.988664 [0]
Processeur AMD Opteron(tm) double cœur 32 bits 265 à 1,81 GHz, gcc 3.4.6 -O3 :
short add/sub: 0.553863 [0] short mul/div: 12.509163 [0] long add/sub: 0.556912 [0] long mul/div: 12.748019 [0] long long add/sub: 5.298999 [0] long long mul/div: 20.461186 [0] float add/sub: 2.688253 [0] float mul/div: 4.683886 [0] double add/sub: 2.700834 [0] double mul/div: 4.646755 [0]
Ces résultats montrent que, sur ces architectures, l'écart de performances entre nombre entier et virgule flottante les opérations sont relativement petites. Dans certains cas, les calculs en virgule flottante peuvent même être plus rapides que les opérations sur les nombres entiers, en particulier pour les types de données plus longs comme « long long ».
Plusieurs facteurs influencent les performances des calculs en virgule flottante. et calculs d'entiers :
Pour tester avec précision les performances des calculs à virgule flottante et entières sur un matériel cible spécifique , suivez les étapes suivantes :
Alors que les calculs d'entiers étaient autrefois nettement plus rapides que les calculs à virgule flottante, cet écart s'est considérablement réduit sur le matériel moderne. L'architecture superscalaire, les FPU dédiés et les bibliothèques à virgule flottante efficaces ont rendu les opérations à virgule flottante comparables en vitesse aux opérations sur les nombres entiers. Par conséquent, il est essentiel d'évaluer le matériel et la charge de travail spécifiques avant de supposer que les calculs d'entiers sont intrinsèquement plus rapides.
Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!