佚名通过本文主要向大家介绍了王者小弟,exo 女王我的12只小弟,精灵鼠小弟1,邪恶漫画之老师的小弟,王者小弟为什么被喷等相关知识,希望对您有所帮助,也希望大家支持linkedu.com www.linkedu.com
问题: 小弟没学过COM,有一个关于COM性能的疑惑?望指点!
描述:
解决方案1:
描述:
COM的本质是接口,在C++中是用纯虚类实现的,那么它是怎么保证虚函数调用的性能的?
我知道DirectX是用COM实现的,这应该要求极高的性能吧?
这种性能的实现是依赖特定的编译器吗?
望各位高手指点一二, 谢谢!
解决方案1:
java不行,COM还可以,如果虚函数超过一定的层数,性能会很低,但是DirectX的都不是很深
解决方案2: 虚函数调用的性能的确比一般函数低,但那也只是相对于一般函数,而并不是说虚函数总是会对效率造成不可收拾的影响啊。
C++语言的设计原则之一就是:以尽量小的效率牺牲换取大的灵活性。
按照我的理解,虚汗数调用只比非许函数多一次函数入口的寻址而已。一般函数的地址是静态的,说白了就是写死在可执行文件中,而虚函数调用是动态的,运行时间接寻址。
对于编译器依赖,我感觉不同的编译器实现虚函数的机制事实上都差不多,应该不会有太大的影响。