For my GUI API which works with a variety of backends (sdl, gl, d3d, etc) I want to dynamically cast the generic type image to whatever it may happen to be.
So the bottom line is, I would be doing around 20 * 60fps dynamic casts per second.
How expensive is a dynamic cast? Will I notice that it has a noticeable negative impact on performance? What alternatives do I have that still maintain an acceptable level of performance?
1200
dynamic_casts per second is not likely to be a major performance problem. Are you doing onedynamic_castper image, or a whole sequence ofifstatements until you find the actual type?If you’re worried about performance, the fastest ways to implement polymorphism are:
In your situation, the visitor pattern is probably the best choice. It’s two virtual calls instead of one, but allows you to keep the algorithm implementation separate from the image data structure.