都说dynamic_cast等动态类型识别效率不高。现编写一段代码,实际测一下。剖分代码源于网络
seconds: 0
seconds: 5
class Derived
class Derived *
看了一下dynamic_cast和typeid的汇编指令,
每个都有至少几百条指令。毕竟要”traverse the class derivation lattice of its argument at runtime“
我又测了虚函数方法,代码结果如下
seconds: 3
处理亿数量级的问题,无论采用什么动态类型方法,都会慢的。因为要调用亿次函数。
如下代码,调用了Add方法1亿次。
seconds: 3
综合对比来看,dynamic_cast效率还是不错的。可见,估算效率不能只“想想”,要实际测试一下。
本文通过实验对比了dynamic_cast与虚函数方法在C++中的性能表现。测试结果显示,在百万级别的调用中,dynamic_cast的开销相对较小,表明其在实际应用中的效率是可接受的。
936

被折叠的 条评论
为什么被折叠?



