Le code a très probablement été adapté du Matlab ou du FORTRAN qui sont en column major alors que C/C++ sont en row major. Dans le cas présent, à chaque fois que la boucle interne passe à l'itération suivante, au lieu d'accéder à l'élément mémoire d'à côté, on fait un saut, qui peut sortir du cache, et là c'est le drame. Un défaut de cache à chaque itération de boucle, ça pardonne pas.
[^] # Re: et avec pypy ?
Posté par serge_sans_paille (site web personnel) . En réponse au journal Quand Pythran fait tourner du Python plus vite que du C++, c'est que.... Évalué à 10.
Le code a très probablement été adapté du Matlab ou du FORTRAN qui sont en column major alors que C/C++ sont en row major. Dans le cas présent, à chaque fois que la boucle interne passe à l'itération suivante, au lieu d'accéder à l'élément mémoire d'à côté, on fait un saut, qui peut sortir du cache, et là c'est le drame. Un défaut de cache à chaque itération de boucle, ça pardonne pas.