私は、あなたが現代のコンパイラよりも良い決定をしていると考える特別な理由がない限り、Cでレジスタ変数を使用しないことをお勧めします。Cの静的ローカル変数は実行速度に影響しますか?
ローカル静的変数は関数の呼び出しの間にありますが、実行速度が重要なときに静的変数を使用するのは意味がありますか?
私は6502エミュレータで作業しています(楽しく学習するためです)。エミュレートされた操作のほとんどはローカル変数を必要としませんが、いくつかはそうします。私は下の例を貼り付けました。基本的には、これらの変数を静的変数として宣言することに何らかの利点があるのだろうかと思います。関数呼び出しの間で値を保持するのではなく、その都度ストレージスペースが再割り当てされないようにします。これはコンパイラに任せておくのが最善でしょうか?事前:)典型的なx86
システムで
しかし、静的変数と非静的変数は異なるセマンティクスを持っていますか?彼らの寿命は異なります。正確には交換できません。 –
もう少し早すぎる最適化*のケースです。パフォーマンスの問題を*(間違いなく)特定した後にのみ最適化します。つまり、スタックポインタが何バイト変更されるかはCPUの問題ではないと思うので、ローカル変数(典型的なスタックベースの実装では)はそれほど遅くはありません。 –
変数を静的にすると、コードを読みにくくなり、デバッグが難しくなり、非常に興味深いバグの原因となります。潜在的な速度の改善があれば、これらの欠点を相殺することができると私は非常に疑念を抱いています。 – zoul