MoreEffectiveC++之效率,第1张

MoreEffectiveC++之效率,第2张

我怀疑有人对C++软件开发者进行秘密的巴甫洛夫实验,否则为什么很多程序员一提到“效率”这个词就流口水。(斯科特·迈耶斯真幽默译者注)

其实效率不是闹着玩的。一个太大或者太慢的程序,它的优点再怎么引人注目也不会被人们接受。就应该这样。软件是用来帮助我们更好地工作的。还不如说跑步速度慢一点。说需要32MB内存的程序比只需要16MB内存的程序好,说占用100MB磁盘空的程序比只占用50MB磁盘空的程序好,简直是扯淡。而且,虽然有些程序确实会占用更多的时间和空进行更复杂的运算,但很多程序只能归咎于其糟糕的设计和粗心的编程。

在用C++编写一个高效的程序之前,你必须认识到C++本身与你遇到的任何性能问题绝对没有关系。如果你想写一个高效的C++程序,你首先要会写一个高效的程序。太多的开发者忽略了这个简单的道理。可以,循环可以手动展开,移位运算可以代替乘法,但是如果你用的高级算法本来效率就不高,这些微调就没有效果了。线性算法可用时还用二次方程算法吗?你会一遍又一遍地计算重复的值吗?如果是的话,把你的节目比作二流的旅游景点也不为过,就是如果你有多余的时间,值得一去。

本章内容从两个角度阐述了效率问题。首先是从语言独立性的角度,关注你在任何语言中都可以使用什么。C++给他们提供了一个特别吸引人的实现方式,因为它非常好的支持封装,让低效的类实现可以被更好的算法和数据结构取代,而接口可以保持不变。

二是关注C++语言本身。虽然高性能算法和数据结构都很好,但如果实际编程代码粗糙,效率会降低不少。潜在的有害错误既容易犯,又难以察觉,构建和释放大量濒临扩散的对象就是这样一个错误。过多的对象构造和对象释放对你的程序性能来说就像是出血。在创造和释放不必要的对象的过程中,宝贵的时间就这样流走了。这个问题在C++程序中很常见。我将用四个子句来解释这些对象来自哪里,以及如何在不影响程序代码正确性的情况下消除它们。

构建大量的对象并不会让程序变大,只会降低运行速度。影响性能提升的还有其他因素,包括库的选择和语言特性的实现。我也将在下面的条款中涉及它。

学习完本章后,你将熟悉几个可以提高程序性能的原则。这些原则可以应用于你写的任何程序。你将知道如何准确地防止不需要的对象出现在你的软件中,并对编译器生成可执行代码的行为有敏锐的感觉。

俗话说“有备无患”。所以把下面的想成是战斗前的准备。

位律师回复
DABAN RP主题是一个优秀的主题,极致后台体验,无插件,集成会员系统
白度搜_经验知识百科全书 » MoreEffectiveC++之效率

0条评论

发表评论

提供最优质的资源集合

立即查看 了解详情