对于与各种后端(sdl、gl、d3d 等)一起使用的 GUI API,我想将通用类型图像动态转换为可能发生的任何情况。
所以底线是,我每秒会进行大约 20 * 60fps 的动态投射。
动态演员表有多贵?我会注意到它对性能有明显的负面影响吗?我有哪些替代方案仍能保持可接受的性能水平?
对于与各种后端(sdl、gl、d3d 等)一起使用的 GUI API,我想将通用类型图像动态转换为可能发生的任何情况。
所以底线是,我每秒会进行大约 20 * 60fps 的动态投射。
动态演员表有多贵?我会注意到它对性能有明显的负面影响吗?我有哪些替代方案仍能保持可接受的性能水平?
每秒1200dynamic_cast
秒不太可能是主要的性能问题。在找到实际类型之前,您是对每张图像执行一个dynamic_cast
还是执行一系列语句?if
如果您担心性能,实现多态性的最快方法是:
在您的情况下,访问者模式可能是最佳选择。这是两个虚拟调用而不是一个,但允许您将算法实现与图像数据结构分开。
您不能使用#define 定义自己的演员表,它在调试版本中使用dynamic_cast(所以您知道您的演员表是正确的)并在发布版本中进行简单的(MySubclass *)演员表,因此没有性能成本?
在这种特殊情况下,您应该能够组织您的代码,以便 dynamic_cast 只需要一次。我想后端不会动态变化。