私はサブルーチンに想定されたシェイプ配列として宣言されたサブルーチンに配列を渡そうとしていました。それは、代わりにポインタを渡すことで私が解決できたいくつかの問題を私に与えてくれました。Doポインタはコンパイラの最適化を阻害しますか?
しかし、高い評判を持つ一部のユーザーのコメントに私に語った:
ポインタを追加するも、それが今日の作業を行う必要はありませんコンパイラのオプティマイザを伝えるの合理的な方法です。
は、誰もがこの上の短い説明を提供してもらえますか?言語はFortran 95ですが、他の言語にも当てはまると思います。
私はOPが[このコメント]を参照していると思います(http://stackoverflow.com/questions/41009109/subroutine-not-returning-correct-numerical-values-in-assumed-shape-array-due-to #comment69272729_41032273)。 – 4castle
それは本当です。 SIMDでは、ポイントが連続して索引付けされているかどうかにかかわらず、データが順次であることを保証することは困難です。 多くのFortranは特にベクトル/配列をターゲットにしているので、Fortranではほとんどの言語よりも本当らしいです。しかし、コンパイラーの勇気はすべて、概してfortranとcの間でアセンブリがほぼ同じになる漸近線に近づいています。一般的にはいくつかのことを意味し、より難しいコードはより多くの作業を必要とします。 – Holmz
@ 4castle誤った情報が(ポインタを使って) "あなたはもはや配列セクションを渡すことができません"という誤った情報が含まれているため、元のコメントへのリンクは意図的に含まれていませんでした。サブルーチンへの引数として渡す前に、配列セクションにポインタを代入するよりも簡単な方法はありません。 – Mephisto