专家作者Rene Alexander与Graham Benstey将在本书中详尽阐述C++优化技术和技巧:学习书中的现实应用程序、实用诀窍、解决方案与技术,可轻松编写高效而理想的应用程序、阅读本书后,你的编程技术必定将再迈新高:
学习优化原理,编写高效程序:
●研究不同硬件设备的,性能
●应用编程能力来弥补操作系统不足
●洞察客户评价程序性能的视角
●开发识别关键程序模块的测量技术
●寻求有助于确定程序性能的工具
●使用科学度量方法研究程序功能关系
●学习定义与使用程序模块的新方法
●改善数据输入输出性能
●全新观点考察C/C++变量
Rene Alexander十年前开始了自己的职业生涯,当时在一家小型公司中从事股票管理系统与医疗救助专家系统的开发工作(C/C++)。几年后,他加盟全球最大的一家跨国公司,从事数字音频和数字视频领域内的嵌入式软件设计和开发工作(C/C++):目前,他拥有了自己的公司:他勤勤恳恳,每周工作达60小时。
Graham Bensley一直从事软件开发工作,早在80年代初就参加过MSX系统开发、在创建自己的软件公司前,他曾经任职于一家全球领先的电子公司,从事卫星传输软件、Internet工具与数字视频系统的开发工作:
前 言
第一部分 基本优化理论
第1章 基本优化内容
1.1 性能
1.2 内存
1.3 本章小结
第2章 创建新系统
2.1 系统需求
2.2 系统设计问题
2.3 开发过程
2.4 数据处理方法
2.5 本章小结
第3章 修改原系统
3.1 确定修改内容
3.2 开始优化
3.3 分析目标区域
3.4 执行优化
3.5 本章小结
第二部分 亲手尝试优化
第4章 工具和语言
4.1 必不可少的工具
4.2 借助编译器优化
4.3 编程语言
4.4 本章小结
第5章 测量时间和复杂性
5.1 理论和实践相结合
5.2 系统影响
5.3 本章小结
第6章 标准C/C++变量
6.1 变量的基本类型
6.2 组合的基本类型
6.3 本章小结
第7章 基本编程语句
7.1 选择语句
7.2 循环语句
7.3 本章小结
第8章 函数
8.1 调用函数
8.2 为函数传递数据
8.3 提前返回
8.4 类的成员函数
8.5 本章小结
第9章 高效内存管理
9.1 内存碎片
9.2 内存管理
9.3 调整数据结构的大小
9.4 本章小结
第10章 数据块
10.1 比较数据块
10.2 数据排序理论
10.3 排序技术
10.4 本章小结
第11章 存储结构
11.1 数组
11.2 链表
11.3 散列表
11.4 二叉树
11.5 红黑树
11.6 本章小结
第12章 优化IO
12.1 高效屏幕输出
12.2 高效二进制文件IO
12.3 高效文本文件IO
12.4 本章小结
第13章 进一步优化代码
13.1 算术运算
13.2 基于操作系统的优化
13.3 本章小结
第三部分 技巧和陷阱
第14章 技巧
14.1 编程窍门
14.2 为将来做准备
第15章 陷阱
15.1 算法中的陷阱
15.2 编译中的拼写问题
15.3 程序设计中的其他陷阱
目前,软件已经渗入了世界上的各个角落。虽然在谈论软件时,人们可能最初想到的仅仅是PC和工业计算机系统,但是应用程序却更为普遍。洗衣机、电动剃须刀、自动调温装置、微波炉、汽车、电视、监视器等等都是使用应用程序的实例。显然,这些实例中应用了许多不同类型的体系结构,使用了各种各样的微处理器。因此,需要不同的优化技术来优化性能和内存。
而且,现在程序设计人员的素质参差不齐。许多软件实现人员受过专门的程序设计教育,包括需求分析、设计和实现等方面。也有一些人可能是从业余爱好者起步,自学程序设计。我们看到,越来越多的人正从不同专业转到程序设计上来。这意味着所有程序员本质上应具有较深的技术背景的假设已经不再成立。
C/C++的程序设计课程和书籍详细介绍了C/C++的程序设计内容,由于各个年龄段和各专业的人基本上都可以理解,因此,学习的人都有可能编写出可运行的C/C++程序。但是,在开发软件时,无论是商业性的还是业余爱好,标准技术都存在很多可以避免的缺陷和繁琐之处。由于并非完全是在技术层次上理解程序设计方案,所以实现人员不免会在编写软件时牺牲软件的速度和大小。
早在编写实际代码之前,进行需求分析和设计与选择硬件目标阶段,就确定了是否能够编写出高效运行的程序。甚至在实际编写软件过程中,通过一个简单的语法处理,我们就可能足以看出程序设计人员是否能够设计出好的程序。如果了解程序设计内容,则可以容易地优化代码,实现程序的高效运行。甚至可以应用一些编程技巧进一步提高程序运行效率,程序员技术水平不同,优化层次也有所不同。
本书编写目的
正如书名所表现出的,编写本书的目的就是帮助读者优化软件的性能和内存。无论读者是软件构架师、实现人员,还是项目负责人,作为一本指南,本书意在帮助这些读者学习或者提高下列基本技能:
● 分析在开发过程中何时、何处容易出现问题。
● 认识标准设计和编程技术存在的缺陷。
● 提高C/C++程序设计技巧。
●深刻理解编程技术。
● 学习行之有效的解决方案及其应用场合。
这些技能是编写高效软件的基础。即使是初级程序员,应用本书所述的高级技术,也可以编写出比较好的软件。经验丰富的程序员可以直接学习本书的高级部分,同时也会发现本书是一座金光闪闪的知识宝库,其中含有各种各样的程序优化内容,使程序员们在激烈的人才竞争中始终立于不败之地。本书包含的许多关于开发过程的提示、见解与实例等对项目负责人和构架师也会大有帮助。
本书读者
本书开始几章论述优化方面的理论,然后详细介绍技术问题和实例,难度逐渐加深。因此,初级程序员可以把本书作为学习优化技术的指导教材,而富有经验的程序员可以快速浏览前面比较简单的部分,而后即可深入研究后面较为复杂的内容。诸如项目负责人或者项目构架师等并不直接参与实际程序实现的读者,可以阅读本书第一部分中所论述的基本理论与后面几章中的“陷阱”和“技巧”部分,将会受益匪浅。本书中,问题实例与优化解决方案比比皆是,任何喜爱编程的人皆会从中受益。
本书结构
本书结构清晰,分为三个部分:
● 第一部分“基本优化理论” (1-3章)——讨论了实际进行程序设计之前的软件开发优化理论,同时在选择编程语言、分析目标硬件、考虑设备交互、确定正确的系统需求、设计新系统与优化存在性能问题的现有系统等方面,都提出了相关的建设性意见,并枚举了附带解决方案的实例。
● 第二部分“亲手尝试优化” (4-13章)——通过分析一些与在软件编码阶段经常遇到的问题有关的实例,讨论了如何实现编码的问题,说明这些问题可能在何处发生以及为何会产生,同时也为高效的函数调用、内存管理、输入输出以及建立和处理数据结构提供了一些可以直接应用的解决方案。
● 第三部分“技巧和陷阱” (14章和15章)——综述了使用C/C++编程时可能遇到的潜在问题和陷阱。
关于本书中使用的代码实例,请登录网站http://www.samspublishing.com,使用本书英文版的ISBN号0672319047查找。