PS: 本文只是总结,具体内容需要去查看More Effective C++--效率部分。
大约 20%的代码使用了 80%的程序资源;大约 20%的代码耗用了大约 80%的运行时间;大约 20%的代码使用了 80%的内存;大约 20%的代码执行 80%的磁盘访问;80%的维护投入于大约 20%的代码上;通过无数台机器、操作系统和应用程序上的实验这条准则已经被再三地验证过。
进行优化、寻找瓶颈时,可以用 profiler 程序识别出令人讨厌的程序的 20%部分。不是所有的工作都让 profiler 去做。你想让它去直接地测量你感兴趣的资源。
从效率的观点来看,最佳的计算就是根本不计算。
推迟计算工作直到系统需要这些计算的结果。如果不需要结果,将不用进行计算。
让程序做的事情比被要求的还要多,通过这种方式来提高软件的性能。这个条款的核心就是over-eager evaluation(过度热情计算法):在要求你做某些事情以前就完成它们。
当你必须支持某些操作而不总需要其结果时,lazy evaluation 是在这种时候使用的用以提高程序效率的技术。当你必须支持某些操作而其结果几乎总是被需要或被不止一次地需要时,over-eager 是在这种时候使用的用以提高程序效率的一种技术。它们所产生的巨
大的性能提高证明在这方面花些精力是值得的。
在 C++中真正的临时对象是看不见的,它们不出现在你的源代码中。建立一个没有命名的非堆(non-heap)对象会产生临时对象。这种未命名的对象通常在两种条件下产生:为了使函数成功调用而进行隐式类型转换和函数返回对象时。
理解如何和为什么建立这些临时对象是很重要的,因为构造和释放它们的开销对于程序的性能来说有着不可忽视的影响。
通过使用函数的 return 位置(或者在函数被调用位置用一个对象来替代)来消除局部临时对象。
读书笔记--More Effective C++--效率(总结)
原文:https://www.cnblogs.com/mcomco/p/9946935.html