摘要:
8-优化内存管理 内存管理器作为 C++ 运行时库中的一部分,管理着动态内存分配。它在许多 C++ 程序中都会被频繁地执行。C++ 确实为内存管理提供了丰富的 API,虽然多数开发人员都从来没有使用过。 阅读全文
摘要:
6-使用更好的数据结构 选择最合适的数据结构对性能有着深刻的影响,因为插入、迭代、排序和检索元素的算法的运行时开销取决于数据结构。除此之外,不同的数据结构在使用内存管理器的方式上也有所不同。另一个原因是数据结构可能有也可能没有优秀的缓存本地化。 7-提高并发性 大多数程序都需要等待发生在物理现实世界 阅读全文
摘要:
5-移除计算 除了内存分配和函数调用外,单条 C++ 语句的性能开销通常都很小。但是如果在循环中执行 100 万次这条语句,或是每次程序处理事件时都执行这条语句,那么这就是个大问题了。绝大多数程序都会有一个或多个主要的事件处理循环和一个或多个处理字符的函数。找出并优化这些循环几乎总是可以让性能优化硕 阅读全文
摘要:
4-减少内存分配和复制 减少对内存管理器的调用是一种非常有效的优化手段,以至于开发人员只要掌握了这一个技巧就可以变为成功的性能优化人员。绝大多数 C++ 语言特性的性能开销最多只是几个指令,但是每次调用内存管理器的开销却是数千个指令。由于字符串是许多 C++ 程序中非常重要(和性能开销大)的部分。对 阅读全文
摘要:
3-使用更好的库 C++ 编译器提供的标准 C++ 模板库和运行时库必须是可维护的、全面的和非常健壮的。令开发人员吃惊的是,我们无需对这些库进行调优。可能更令人吃惊的是,虽然 C++ 已经发明出来 30 年多了,商业 C++ 编译器的库仍然有 bug,而且可能不遵循现在的 C++ 标准,甚至不遵循编 阅读全文
摘要:
2-使用更好的算法 选择一个最优算法对性能优化的效果最大。各种优化手段都能改善程序的性能。它们可以压缩以前看似低效的代码的执行时间,就像通过升级 PC 能让程序运行得更快一样。但不幸的是,如同升级 PC 一样,大部分优化手段只能使程序性能呈线性提升。许多优化手段可以将程序性能提升 30% 至 100 阅读全文
摘要:
c++性能优化策略 1-用好的编译器并用好编译器 C++ 编译器是非常复杂的软件构件。每种编译器为 C++ 语句生成的机器码都有差别。它们所看到的优化机会是不同的,会为相同的源代码产生不同的可执行文件。如果打算为代码做出最后一丁点性能提升,那么你可以尝试一下各种不同的编译器,看看是否有一种编译器会为 阅读全文
摘要:
说“性能无所谓”的同事也可能是想说性能对于某些特殊的应用程序——例如受人体反应约束或运行于处理器速度极快的桌面计算机上的应用程序——无所谓。但对于那些运 行于内存、电源或者处理速度受限的小型嵌入式设备和移动处理器上的应用程序来说,性能的影响非常大;对于那些运行于大型计算机上的服务器程序的影响也非常大 阅读全文
摘要:
只有最简单的微处理器和某些具有悠久历史的大型机才直接与 C++ 模型相符。对性能优化影响优化的计算机行为 而言非常重要的是,真实计算机的实际内存硬件的处理速度与指令的执行速率相比是很慢的。内存并非真的是以字节为单位被访问的,内存并非是一个由相同元素组成的简单的线性数组,而且它的容量也是有限的。真实的 阅读全文
摘要:
虽然 C++ 认为每个字节都是可以独立访问的,但计算机会通过获取更大块的数据来补偿缓慢的内存速度。最小型的处理器可以每次从主内存中获取 1 字节,桌面级处理器则可以立即获取 64 字节。一些超级计算机和图形处理器还可以获取更多。当 C++ 获取一个多字节类型的数据,比如一个 int、double 或 阅读全文