質問
ルックアップテーブルを使用してテキストメッセージを解析するMessageクラスがあります。私は多くのメッセージを受け取り、多くのオブジェクトを作成および破棄するので、それらのルックアップテーブルを静的メンバーとして宣言して、同じテーブルが同じ値で何度も初期化されるのを防ぎます。
それは正しいアプローチですか、それともより適切なC ++の方法がありますか?
ありがとう。
解決
これは正しい方法のように聞こえますが、コンパイラがこれを最適化することを期待しています。アプリケーションのベンチマークを行って、テーブルを静的として宣言すると速度が上がりますか?
大きなルックアップテーブルが多数ある場合、パフォーマンスは向上しますが、テーブルは常にメモリに保持されることに注意してください。
他のヒント
メッセージクラスがルックアップ情報を共有している場合、静的ルックアップを独自のクラスに抽象化する価値があるため、実際には一度だけ初期化されます。
とにかく、静的クラスのメンバーは間違いなく行く方法です。
クラス変数、つまりクラスレベルで静的にすることができます。そうすれば、もしあればサブクラスで利用でき、おそらく<!> quot; hidden <!> quot;個々のメソッドの静的ローカル変数として。
はい、すべてOKです。時々それは良い解決策です:一度だけ作成される静的関数。また、シングルトンオブジェクトを使用することもできますが、より広いアクセシビリティを備えています。
マルチスレッドアプリケーションを使用している場合、およびルックアップテーブルに、このテーブルよりも早く破棄される可能性のある別のデータへのポインタが含まれている場合は注意してください。
シングルトンパターンの使用もこれに有効です。