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

More Effective C++精简版(4)相关推荐

  1. webview页面和壳通信的库(精简版)

    //PG精简版 (function() {var PG ={iosBridge:null,callbackId:0,callbacks: [],commandQueue: [],commandQueu ...

  2. [导入]金山词霸2005精简版下载地址

    软件简介: 金山词霸 2005 精简版 欢迎使用金山公司著名产品金山词霸的最新版本<金山词霸 2005>. 金山词霸2005融合了英语培训的旗舰品牌洋话连篇视频词库,同时采用国内领先的Sm ...

  3. 微信小程序实战之百思不得姐精简版

    为什么80%的码农都做不了架构师?>>>    微信小程序基本组件和API已撸完,总归要回到正题的,花了大半天时间做了个精简版的百思不得姐,包括段子,图片,音频,视频,四个模块.这篇 ...

  4. 打造精简版Linux-mini

    Linux系统的核心就是它的内核,所有的Linux系统采用的内核都是相同的,唯一不同的就是除了内核以外的服务以及应用的软件不同而已.那麽可以根据Linux的这一特点,我们可以根据自己的需求打造属于自己 ...

  5. [异常解决] ubuntu上安装虚拟机遇到的问题(vmware坑了,virtual-box简单安装,在virtual-box中安装精简版win7)

    [异常解决] ubuntu上安装虚拟机遇到的问题(vmware坑了,virtual-box简单安装,在virtual-box中安装精简版win7) 参考文章: (1)[异常解决] ubuntu上安装虚 ...

  6. Vue精简版风格指南

    前面的话 Vue官网的风格指南按照优先级(依次为必要.强烈推荐.推荐.谨慎使用)分类,且代码间隔较大,不易查询.本文按照类型分类,并对部分示例或解释进行缩减,是Vue风格指南的精简版 组件名称 [组件 ...

  7. 使用 Microsoft .NET Framework 精简版中的 MessageWindow 类

     使用 Microsoft .NET Framework 精简版中的 MessageWindow 类 收藏 Alex Yakhnin IntelliProg, Inc. 2003年3月 适用于:    ...

  8. FCKeditor 2.6 精简版

    来自:http://www.sablog.net/blog/fckeditor-26-lite-one/ 该版本基于 fckeditor 2.6 修改,旨在提高加载速度,删除不常用的功能,达到精简和优 ...

  9. 测试新版FCKeditor编辑器精简版

    来自:http://www.sablog.net/blog/archives/284/ 基于最新的fckeditor 2.4.2精简和优化.这次没有走极端.在保证速度的情况下.保留了大多数常用功能. ...

最新文章

  1. 刺激赛场 连接服务器没有响应,英雄联盟为什么连接不上服务器(英雄联盟没有响应是什么原因)...
  2. php header x-auth-token,使用Angular 2正确设置Header X-Auth-Token
  3. python pip install pipenv失败_pipenv 无法创建依赖情况应该怎么处理?大家有什么好的建议吗?...
  4. frida 安装特定版本
  5. 你还会写这段C51程序吗?
  6. arcgis jsapi接口入门系列(6):样式
  7. 前端工程师能力评估测试题(2020最新版附答案及解析)
  8. 渣本毕业两年经验,大厂面试题汇总
  9. Apache下PHP Loaded Configuration File None 解决方法
  10. C语言#define宏定义可能注意不到的地方
  11. Php 取出session中的值,获取php值
  12. 键盘上ALT键的妙用
  13. 问题 E: 求1+2+...+n=?
  14. Algorithm:递归思想及实例分析
  15. java中PriorityQueue优先级队列使用方法
  16. AcWing 285. 没有上司的舞会(树形DP)
  17. SpringBoot + Kafka + ELK 完成海量日志收集(超详细)
  18. oracle 同义词_详解Oracle视图V$、GV$、X$、V_$、GV_$之间的关系
  19. ffmpeg hevc 10bit bt2020 cbr
  20. 百度飞桨螺旋桨赋能生物医药,推动AI技术在药物研发领域的探索应用

热门文章

  1. JS中创建对象的方法
  2. BZOJ2693:JZPTAP——题解
  3. 阿里云云盾 · 云防火墙技术解读:零配置业务自动分组,安全管理有序、可见...
  4. 荷兰搞定原子级数据存储:1平方英寸500TB
  5. 大文件表空间+创建大文件表空间+查询数据库表空间类型信息+查询数据库表空间类型信息...
  6. JAVA中String类
  7. LeetCode 5357. 设计一个支持增量操作的栈
  8. 面试题 02.04. 分割链表
  9. python网络通信传输的数据类型_Python网络编程中的网络数据和网络错误。
  10. go设置后端启动_使用 Go Wails 框架来构建桌面应用(Go+Vue.js)