复制代码
1
复制代码
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41class A { public: A(){} virtual ~A(){} int i; }; class B:public A { public: B(){} virtual ~B(){} int j; }; int main() { B* pB = new B; A* pA; int st1 = GetTickCount(); for(int i=0;i!=100000000;i++) { pA = static_cast<A*>(pB); } B* pBB; int en1 = GetTickCount(); for(int i=0;i!=100000000;i++) { pBB= dynamic_cast<B*>(pA); } int en2 = GetTickCount(); cout<<"static_cast:"<<(en1-st1)<<endl; cout<<"dynamic_cast:"<<(en2-en1)<<endl; system("pause"); return 0; }
测试结果如图
结论:因为dynamic_cast有安全监测,效率大打折扣,建议子类转父类这种安全转换用static_cast,反之如果没有效率需求用dynamic_cast更安全
测试环境 vs2010 win7。
最后
以上就是传统小蜜蜂最近收集整理的关于dynamic_cast和static_cast效率测试的全部内容,更多相关dynamic_cast和static_cast效率测试内容请搜索靠谱客的其他文章。
本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
发表评论 取消回复