【发布时间】:2014-01-16 01:53:39
【问题描述】:
为了获得性能而避免多态性是否值得?
我在 Stroustrup 的书中读到多态函数调用在 25% 以内 比普通的函数调用更昂贵。这是否意味着我应该 尽可能避免多态性?我的意思是我应该一直在想 类似的东西:好的多态性可以解决这个问题,但它可能会搞砸 提高性能 bla bla ... 或者考虑到现代 CPU 的强大功能,我什至不应该 敢这么想吗?
【问题讨论】:
-
只要您不需要超低延迟,函数调用的成本可以忽略不计
-
@D.Shawley:这个问题是关于虚函数,而不是虚继承——完全不同的东西。
-
@user3111311 - 不要养成微优化的习惯。你最终付出了很多努力,却收效甚微。使用分析工具找出速度慢的地方。记住 80-20 规则。少走 25% 也没什么好担心的。
-
为什么作为关于虚拟继承的问题有 3 票可以结束这个问题?如果您不知道虚拟调用和虚拟继承之间的区别,那么您不应该在 C++ 问题中投票。
-
你知道虚函数调用不一定是虚函数调用吗?具有足够信息以了解确切对象类型的现代编译器将在编译时解析调用。这甚至意味着它可以随后被内联。此外,编译器写入可以优化虚拟调用机制。他们知道这是一种常用的机制。您自己的替代代码不会从此类特定优化中受益。
标签: c++ polymorphism