《大规模C++程序设计》读书笔记21

来源:互联网 发布:python while两个条件 编辑:程序博客网 时间:2024/04/30 03:17

Technorati 标签: C++,大规模C++程序设计,读书笔记

原则66:对于一个组件的实现不进行绝缘的决策,可能是基于该组件不是很广泛使用的认识。

原则67:除非已经知道性能不是一个问题,否则避免用极小的访问函数(它们在整个系统中广泛使用)对低层次类的实现进行绝缘可能是明智的。

定义37:轻量级(Light-weight)是一个术语,其含义依赖于它被使用的上下文:

  • 不依赖于(许多)其他的组件;
  • 创建/析构都不昂贵;
  • 不分配额外的动态内存;
  • 能有效的利用内联函数来访问/操纵嵌入数据。

轻量级组件由于可能被广泛使用,因此,绝缘产生的开销可能会成为系统的不可承受之重。如果组件中函数的运行时开销相对调用开销要大,则绝缘造成的性能问题将较小。如果一个类被广泛使用并且其成员函数是大型的,那么那个类的实现就应该被绝缘。另一方面,有极小访问函数的高度重用的公共组件可能不应该被绝缘,除非性能不是一个问题。

原则68:绝缘轻量级的、被广泛使用的并且通常通过值返回的对象,会显著降低整体的运行时性能。

原则69:对于大型的、广泛使用的对象来说,要尽早进行绝缘。如果有必要,以后可以选择性的删除该绝缘。

原则70:有时整体绝缘的运行时开销不会比部分绝缘大。

原则71:有时获得最后10%的绝缘要以增加10倍的运行时间为代价。

 

  1. 如果一个对象的函数已经在绝缘层之下做了大量的工作,那么对该对象的实现进行绝缘在运行时性能上不会有明显的影响(表明绝缘的层次是合适的)。
  2. 如果一个子系统的函数已经在封装层之下做的工作不是微不足道的,那么对该子系统用包装器进行封装,对运行时性能的影响是可以忽略不计的(表明封装的层次是合适的)。
  3. 为频繁调用的轻量级函数提供一个封装包装器,会显著的影响整体性能(也许意味着封装的层次应该升级)。
  4. 为频繁调用的轻量级函数提供一个绝缘包装器,会对整体性能产生压倒性的影响(强迫绝缘的层次应该升级)。
  5. 如果极小对象经常被通过值返回,那么为该极小对象提供整体绝缘包装器会对整体性能产生灾难性的影响(强迫减少绝缘的程度或者升级绝缘的层次)。
原创粉丝点击