プログラムは毎分何千回もこの関数に入り、これらの変数が再定義されて再び破棄されるたびWndProc
に、クラス内の関数の外でこれらの変数を定義して、時間とリソースを節約する方がよいでしょうか。
時間とリソースに関しては、ほとんど違いはありません。これらはローカル変数であり、スタックに格納されます。スレッドの作成時にスタック全体がすでに予約されており、これらの変数のメモリは、このプロシージャが最初に実行されたときまでにコミットされます。つまり、switch
これらの変数を参照しない条件の場合、変数の存在によって引き起こされる実行時またはリソースのニーズの違いを測定できない可能性があります。
レイモンドは、それWndProc
を反省的に呼ぶことができると指摘します。に多くのローカル変数がある場合WndProc
、結果として得られるスタックの使用量は最適ではない可能性があります。ボトルネックがスタックの使用であった実際のアプリケーションはまだ想像できませんWndProc
。
そうは言っても、WndProc
すべての変数を含む1つの大きなswitchステートメントであるメソッドは悪い習慣です。この関数のローカル名前空間を多くの異なる変数で汚染したくないでしょう。ウィンドウプロシージャで処理するメッセージごとに個別のハンドラ関数を作成することをお勧めします。
最後に、クラスでこれらの変数を宣言することをお勧めします。これをしないでください。可能な場合は、ローカル変数が常に優先されます。これらの変数をローカルとして宣言することは確かに可能です。それらは、呼び出す個別のハンドラー関数のローカルである必要がありWndProc
ますが。