5.4.2 : Comment se fait-ce ?



Récapitulons la situation :



Sauf que, les benchmarks montrent que :



Ce qui contredit les programmes complets, où :



Donc, où se situe l'arnaque ?

Note : Il s'agit bien d'une arnaque et non d'un oubli ou d'une erreur, qui était parfaitement voulue, préméditée et orchestrée avec tout ce que cela implique !


Bien que l'explication ai déjà été donnée plus tôt, sinon on n'aurai pas trouver la taille des blocs, nous allons l'approfondir.

Les benchmarks tests des images entre :



Or, les programmes calculent des images en HD, soit 1920\times 1080 = 2\,073\,600 float, soit 8.294400 Mo (donc plus grandes que le cache L3 de 8 Mo)

Ces images ne peuvent donc pas être stockées dans les caches, et le rapatriment des données devient très cher en temps.

Cela implique que :



Comme les benchmarks et les programmes ne calculent pas dans les mêmes conditions, ils ont des résultats différents. Et après analyse du "Pourquoi" on se rend compte que ces résultats sont complémentaires.

La figure 13 résume les performances obtenues.

nothing nothing

Figure 13 : À gauche : temps total d'éxécution des différentes implémentations. À droite : accélération par rapport à la première.



Il est important de ne pas se faire avoir par les benchmarks fallacieux des uns et des autres qui voudraient prouver n'importe quoi : cela va du calcul très compliqué qui se fait en moins d'un cycle par élément, à ceux qui veulent à tout prix montrer que Python est un langage rapide comme si il y avait un pompon à la clé.


Faire un test de une seconde pour montrer que Python est plus rapide que Julia, c'est comme montrer qu'une deux-cheveaux démarre plus vite qu'une Ferrari : ça n'a aucun sens.
Confucius du calcul haute performance (qui préfère manifestement les Ferraris)