【问题标题】:Performance impact of inheritance (is-a) vs aggregation (has-a) in c++C++ 中继承(is-a)与聚合(has-a)的性能影响
【发布时间】:2012-01-12 00:15:51
【问题描述】:

一个简单的问题 - 使用聚合堆栈时,性能如何影响额外调用,而不是继承和虚拟方法对性能的影响?

【问题讨论】:

  • 继承没有虚方法怎么样?
  • ^ 这不会削弱多态性并损害类层次结构的灵活性吗?
  • 是的,但是如果聚合有效,为什么还需要虚函数?您不能为“灵活性”添加虚函数,然后抱怨这会损害性能。这是将苹果与橙子进行比较。
  • 没有抱怨,只是询问不同技术的成本,以便我找到适合我的目的的最佳位置。

标签: c++ performance inheritance aggregation


【解决方案1】:

与任何其他静态解析的函数调用相比,虚拟主义有一点运行时开销,但如果这个开销足够大,只能通过分析来确定。

This 我最近的回答更详细地解释了这一点。

【讨论】:

  • 所以一般来说,虚拟化对性能的影响是恒定的,而聚合则与深度成正比?这将使继承成为相关类层次结构的深层树的方式,而在更浅的场景中更适合聚合?
  • 不要担心性能开销,如果您的设计需要继承使用继承如果需要聚合使用聚合
猜你喜欢
  • 2011-07-29
  • 2016-03-23
  • 2010-10-02
  • 1970-01-01
  • 1970-01-01
  • 2021-11-02
  • 1970-01-01
  • 2011-06-21
相关资源
最近更新 更多