CIでは、ポインタを使用するとプログラムの実行が速くなることに注意してください。実際の変数に移動する前にポインタ変数をフェッチする必要があるため、どうすれば可能ですか?
4 に答える
ポインターを使用しても、プログラムの実行は速くなりません。スマートなアルゴリズムにより、プログラムの実行が高速化されます。ポインターを正しい方法で使用することで、アルゴリズムをよりスマートにできる場合があります。ポインターは、問題を解決するための魔法の杖ではありません。
ただし、ポインターは単なる設計パラダイムであり、関数型プログラミングを使用すると、ポインターはまったく使用されません。
This is not true. The reason for faster program execution is not the availablility of pointers. It's a question of what you do with the pointers. The (possibly) faster program execution yields from the fact that no hidden functionality is introduced with C.
Take a string for example. Common implementations in other languages introduce a length field along with the string in order to keep track of the length of the string. This "bookkeeping" (although hidden from the programmer) causes extra cycles to be executed.
Another example is the fact that C does not check if the pointer you are dereferencing is valid or not. This evaluation would also cost extra cycles.
質問に対するすべての回答は、私よりもはるかに C の知識が豊富な人からのものであることを認識しています (そして、私は実際には私のリーグ外です)、IMVHO および/または限られた知識ですが、ポインターは効率を向上させます。
OPの質問に答えるには(そしてプログラムの実行とフェッチに関する残りを無視します):
ポインターはどのようにプログラムの効率を向上させることができますか?
データの重複を避ける。この効率は、ユーザー定義の変数「構造」を扱う場合にのみ注目に値する場合があります。
これは私がCポインターで見つけた素敵な読み物です: Why C has Pointers
C 標準では必要な速度が指定されていないため、速度を C の機能に帰するのは意味がありません。一部の C 実装は、他のものよりも最適なマシン コードを生成することを考慮してください。 C 1の特定の実装。実装と仕様を混同しないでください。
1: C の特定の実装の速度を有意義に比較するには、OS (メジャー バージョンとマイナー バージョン)、コンパイラ (メジャー バージョンとマイナー バージョン)、CPU (モデル)、メインボード、メモリについて言及することをお勧めします。 (モデルと構成) および使用したコマンド ライン引数。