虚函数
据传,早些年,第一个也是最重要的对C++的吐槽是虚函数的高开销。近些年,在某些程序设计社区,关于这个话题的争论似乎又变得流行起来,例如游戏开发者社区。那么虚函数的性能开销究竟如何呢?
众所周知,虚函数是基于虚函数表实现的,即该表包含一些函数指针,指向这个类所有的虚函数。每个类的实例都包含一个指针,指向这个类全局的虚函数表。因此,每次虚函数的调用经历两个阶段:首先:通过虚函数表指针找到虚函数表,然后通过虚函数表内的指针找到虚函数。这对性能不是好事,是吗?这是一种典型的指针追逐,不是吗?
网友评论