只是把它弄出来的方式...速度比较 - 模板专业化与虚拟功能与if语句
Premature optimization is the root of all evil
Make use of OOP
etc.
我明白了。只是寻找一些关于某些操作的速度的建议,我可以将这些操作存储在灰色物体中供将来参考。
假设你有一个动画类。动画可以循环播放(循环播放)或不循环(播放一次),它可以具有唯一的帧时间等等。假设有3个这样的“任一”或“属性”。 请注意,Animation类的任何方法至多会检查其中的一个(即,这不是if-elseif的巨大分支的情况)。
这里有一些选择。
1)给它一个上面给出的属性布尔成员,并使用if语句来打去执行相应的操作动画时检查对付他们。
- 问题:有条件地检查每次播放动画。
2)做一个基础的动画类,并从中获得其他动画类,如LoopedAnimation和AnimationUniqueFrames等
- 问题:在每次调用的V表检查,以播放动画因为你碰到这样的一个
vector<Animation>
。另外,为所有可能的组合创建一个单独的类看起来代码笨拙。
3)使用模板专业化,并专门化那些依赖于这些属性的函数。像template<bool looped, bool uniqueFrameTimes> class Animation
。
- 问题:与此问题是,你不能只有一个
vector<Animation>
的东西的动画。也可能会臃肿。
我想知道什么样的速度每个选项提供?我对第一和第二选项特别感兴趣,因为第三个选项不允许我们遍历一个通用容器Animation
s。
总之,什么是快 - 一个虚函数表读取或条件?
尝试自己测试一下。 – Blindy 2010-05-13 23:22:48
这些属性的实际值是在运行时还是在编译时确定的?例如,如果您要加载用户指定的文件,那么属性在运行时确定,当然。如果动画是预先确定的,那么这些值在编译时已知。那么,你在处理哪种情况? – AnT 2010-05-13 23:41:40