値の配列をナビゲートするためにポインターを使用する方が良いですか、それとも添字付きの配列名を使用する方が良いですか?
コンパイラは両方のアプローチをどのように扱いますか?
値の配列をナビゲートするためにポインターを使用する方が良いですか、それとも添字付きの配列名を使用する方が良いですか?
コンパイラは両方のアプローチをどのように扱いますか?
私は短いテストをしました。int arr[10]
すべてのセルを作成し10
て、通常の for ループを使用するように設定int
しint*
ました。
私が奇妙だったのは (Midhun MP の引数を受け入れます) ポインター インデックス付きループ アセンブリ コードが、通常のアプローチ (1 行以上) よりも大きかったことです。しかし、O3
最適化の出力をオンにすると、まったく同じでした。
IMO コードは読みやすく、そもそもエラーなく動作する必要があります。マイクロ最適化は、本当に必要な場合にのみ実行できます。それ以外の場合は、読みやすさがパフォーマンスを上回ります。
それがどのように機能するか興味がある場合。このテストは自分で行ってください。コードの 2 つのバージョンを準備し、それをコンパイルしてgcc -S
出力を比較します。