虚函数的其他开销都是间接的,比如虚函数不能内联(inline)(请记住,事实并非总是如此),另外虚函数会禁止某些的编译器优化选项,这会在接下来的章节中探讨。另一个更间接的虚函数的开销是多态的常见用法,即通过new动态创建多态对象。动态内存分配会破坏CPU数据访问局部化从而增加开销,这会在接下来的某个小节中讨论到,所以滥用多态也会对程序性能造成负面影响。所以,应当时时审视设计本身!
可以看到,虚函数的开销是存在的但并不是非常大,通常也是可以避免的。实践中,应该采取先测量的策略。
虚函数的其他开销都是间接的,比如虚函数不能内联(inline)(请记住,事实并非总是如此),另外虚函数会禁止某些的编译器优化选项,这会在接下来的章节中探讨。另一个更间接的虚函数的开销是多态的常见用法,即通过new动态创建多态对象。动态内存分配会破坏CPU数据访问局部化从而增加开销,这会在接下来的某个小节中讨论到,所以滥用多态也会对程序性能造成负面影响。所以,应当时时审视设计本身!
可以看到,虚函数的开销是存在的但并不是非常大,通常也是可以避免的。实践中,应该采取先测量的策略。
本文标题:第三章 (15) 虚函数的开销
本文链接:https://www.haomeiwen.com/subject/emrwnrtx.html
网友评论