邪魔にならないように...
Premature optimization is the root of all evil
Make use of OOP
etc.
理解します。今後の参考のために、灰白質に保存できる特定の操作の速度に関するアドバイスを探しています。
Animation クラスがあるとします。アニメーションは、ループする (何度も再生する) か、ループしない (1 回再生する) か、一意のフレーム時間を持つかどうかなどを指定できます。これらの「どちらかまたは」属性が 3 つあるとします。Animation クラスのどのメソッドも、せいぜいこれらのいずれかをチェックすることに注意してください (つまり、これは if-elseif の巨大なブランチの場合ではありません)。
ここにいくつかのオプションがあります。
1) 上記の属性のブール値メンバーを与え、適切なアクションを実行するためにアニメーションを再生するときに if ステートメントを使用してそれらをチェックします。
- 問題: アニメーションが再生されるたびに条件がチェックされます。
2) 基本アニメーション クラスを作成し、LoopedAnimation や AnimationUniqueFrames などの他のアニメーション クラスを派生させます。
- 問題:
vector<Animation>
. また、考えられるすべての組み合わせに対して個別のクラスを作成すると、コードが肥大化するように見えます。
3) テンプレートの特殊化を使用し、それらの属性に依存する関数を特殊化します。のようにtemplate<bool looped, bool uniqueFrameTimes> class Animation
。
- 問題: これに関する問題は、
vector<Animation>
何かのアニメーションに対して を使用できないことです。むくむこともあります。
これらのオプションのそれぞれがどのような速度を提供するのだろうか? 3 番目のオプションでは s の一般的なコンテナーを反復処理できないため、1 番目と 2 番目のオプションに特に興味がありますAnimation
。
要するに、vtable fetch と条件付きのどちらが高速ですか?