ルックアップテーブルを使ってテキストメッセージを解析するMessageクラスがあります。私はたくさんのメッセージを受け取り、たくさんのオブジェクトを作成して破壊するので、同じ値を持つ同じテーブルを何度も何度も初期化しないように、これらのルックアップテーブルを静的メンバーとして宣言すると考えました。ルックアップテーブルは静的であるべきです
これは正しいアプローチですか、もっと適切なC++の方法ですか?
ありがとうございました。
ルックアップテーブルを使ってテキストメッセージを解析するMessageクラスがあります。私はたくさんのメッセージを受け取り、たくさんのオブジェクトを作成して破壊するので、同じ値を持つ同じテーブルを何度も何度も初期化しないように、これらのルックアップテーブルを静的メンバーとして宣言すると考えました。ルックアップテーブルは静的であるべきです
これは正しいアプローチですか、もっと適切なC++の方法ですか?
ありがとうございました。
私はコンパイラがこれを最適化すると期待していますが、これは正しい方法です。あなたのアプリケーションをベンチマークし、テーブルを静的なものとして宣言しますか?
大きなルックアップテーブルが多数ある場合、パフォーマンスは向上しますが、テーブルは常にメモリに保持されます。
これらはクラス変数、つまりクラスレベルでは静的である可能性があります。そうすれば、サブクラスがあればそれを利用することができ、個々のメソッドの静的ローカル変数として「隠されている」場合よりも少し目に見えます。
はい、すべて正常です。ときにはそれは良い解決策です。関数staticは一度だけ作成されます。また、シングルトンオブジェクトを使用することもできますが、より広いアクセシビリティがあります。
マルチスレッドアプリケーションを使用している場合、およびルックアップテーブルにこのテーブルよりも早く破棄される可能性のある別のデータへのポインタが含まれている場合は注意してください。
あなたのメッセージクラスが参照情報を共有している場合、スタティックルックアップを実際に一度しか初期化されないように独自のクラスに抽象化する価値があるかもしれません。
ただし、静的なクラスメンバーは確かに移動方法です。
シングルトンパターンを使用することもできます。