More Effective C++精简版(4)

6.1
       尽可能多的数据profile你的软件。此外,你必须确保每组数据在客户(或至少是最重要的客户)如何使用软件的方面能有代表性。

6.2
        因为需要存储两个值之间的依赖关系,维护存储值、依赖关系或上述两者,重载操作符例如赋值符、拷贝操作和加法操作,所以lazy evaluation在数字领域应用得很多。另一方面运行程序时它经常节省大量的时间和空间。

        避免不需要的对象拷贝,通过使用operator[]区分出读操作,避免不需要的数据库读取操作,避免不需要的数字操作。但是它并不总是有用。就好象如果你的父母总是来检查你的房间,那么拖延整理房间将不会减少你的工作量。实际上,如果你的计算都是重要的,lazy evaluation可能会减慢速度并增加内存的使用,因为除了进行所有的计算以外,你还必须维护数据结构让lazy evaluation尽可能地在第一时间运行。在某些情况下要求软件进行原来可以避免的计算,这时lazy evaluation才是有用的。

6.3
         over-eager evaluation(过度热情计算法):在要求你做某些事情以前就完成它们

         如果你认为一个计算需要频繁进行,你就可以设计一个数据结构高效地处理这些计算需求,这样可以降低每次计算需求时的开销

         采用over-eager最简单的方法就是caching(缓存)那些已经被计算出来而以后还有可能需要的值。

template<class T>

T&DynArray<T>::operator[](int index)

{

 if (index < 0) {

    throw an exception;                     // 负数索引仍不合法

 }

 if (index >当前最大的索引值) {

    调用new分配足够的额外内存,以使得

   索引合法;

 }

 返回index位置上的数组元素;

}
 

6.4

仅仅需要一小段时间的变量称为临时变量

C++语言禁止为非常量引用(reference-to-non-const)产生临时对象

void uppercasify(const string& str);

在任何时候只要见到常量引用(reference-to-const)参数,就存在建立临时对象而绑定在参数上的可能性。在任何时候只要见到函数返回对象,就会有一个临时对象被建立(以后被释放)。

转载于:https://www.cnblogs.com/ethan/archive/2007/03/14/675118.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值