只是为了摆脱它...
Premature optimization is the root of all evil
Make use of OOP
etc.
我明白。只是寻找一些关于某些操作速度的建议,我可以将它们存储在我的灰质中以供将来参考。
假设您有一个动画课程。动画可以循环播放(反复播放)或不循环播放(播放一次),它可能有或没有唯一的帧时间,等等。假设有 3 个“非此即彼”属性。请注意,Animation 类的任何方法最多将检查其中之一(即,这不是 if-elseif 的巨大分支的情况)。
这里有一些选项。
1) 为上面给出的属性赋予布尔成员,并在播放动画时使用 if 语句检查它们以执行适当的操作。
- 问题:每次播放动画时都会进行条件检查。
2)制作基础动画类,并派生其他动画类,如 LoopedAnimation 和 AnimationUniqueFrames 等。
- 问题:鉴于您有类似
vector<Animation>
. 此外,为所有可能的组合创建一个单独的类似乎代码臃肿。
3)使用模板特化,并特化那些依赖于这些属性的函数。喜欢template<bool looped, bool uniqueFrameTimes> class Animation
。
- 问题:这个问题是你不能只拥有一个
vector<Animation>
for 某物的动画。也可能臃肿。
我想知道这些选项中的每一个提供什么样的速度?我对第 1 和第 2 选项特别感兴趣,因为第 3 选项不允许遍历Animation
s 的一般容器。
简而言之,什么更快 - vtable fetch 或条件?