J'essayais de passer un tableau à un sous-programme, déclaré dans le sous-programme comme un tableau de formes supposé. Cela m'a donné quelques problèmes que j'ai pu résoudre en passant un pointeur à la place.Les pointeurs empêchent-ils les optimisations du compilateur?
Mais certains utilisateurs avec une grande réputation me dit dans un commentaire:
Ajout pointeur est aussi une façon raisonnable de dire l'optimisateur compilateurs qu'il n'a pas à faire un travail aujourd'hui.
Quelqu'un peut-il offrir une courte explication à ce sujet? La langue est Fortran 95, bien que je crois que cela s'applique à d'autres langues.
Je pense que l'OP fait référence à [ce commentaire] (http://stackoverflow.com/questions/41009109/subroutine-not-returning-correct-numerical-values-in-assumed-shape-array-due-to # comment69272729_41032273). – 4castle
C'est vrai. Pour SIMD, il est difficile de garantir que les données sont séquentielles, que le point soit indexé séquentiellement. Il est probablement plus vrai pour Fortran que la plupart des langues, car beaucoup de Fortran cible spécifiquement les vecteurs/tableaux. Mais les tripes des compilateurs se rapprochent généralement toutes d'une asymptote où l'assemblage peut être presque identique entre fortran et c. Généralement signifie pour certaines choses, et le code plus difficile nécessite plus de travail. – Holmz
@ 4castle Je n'ai pas inclus de lien exprès vers le commentaire original, car il contient des informations trompeuses: (en utilisant un pointeur) "vous n'êtes plus capable de passer des sections de tableau", ce qui est faux. Rien n'est plus facile que d'assigner un pointeur à une section de tableau avant de la passer en argument au sous-programme. – Mephisto