摘要: 如果程序只是运行一个计算密集型的任务,那么分析器会自动地告诉我们程序中的热点在哪里。不过如果程序要做许多不同的处理,可能在分析器看来,没有任何一个函数是热点。程序还有可能会花费大量的时间等待 I/O 或是外部事件,这样降低了程序的性能,增加了程序的实际运行时间。在这种情况下,我们需要测量程序中各个部 阅读全文
posted @ 2024-01-09 01:05 deeplearnMs 阅读(31) 评论(0) 推荐(0) 编辑
摘要: 分析器是一个可以生成另外一个程序的执行时间的统计结果的程序。分析器可以输出一份包含每个语句或函数的执行频度、每个函数的累积执行时间的报表。许多编译器套件,如 Windows 上的 Visual Studio 和 Linux 上的 GCC 都带有分析器,可以帮助我们找到程序中的热点。微软曾经只在价格昂 阅读全文
posted @ 2024-01-09 00:32 deeplearnMs 阅读(19) 评论(0) 推荐(0) 编辑
摘要: 开发软件在某种意义上就是一项实验。你想让程序做一些事情,然后开始编程,最后观察程序的运行结果是否与预想的一样。性能调优则是更有正式意义的实验。在开始性能调优前,必须要有正确的代码,即在某种意义上可以完成我们所期待的处理的代码。你需要擦亮眼睛审视这些代码,然后问自己:“为什么这些代码是热点?”为什么某 阅读全文
posted @ 2024-01-09 00:24 deeplearnMs 阅读(6) 评论(0) 推荐(0) 编辑
摘要: 1. 必须测量性能 人的感觉对于检测性能提高了多少来说是不够精确的。人的记忆力不足以准确地回忆起以往多次实验的结果。本内侧的知识可能会误导你,使你相信了一些并非总是正确的事情。当判断是否应当对某段代码进行优化的时候,开发人员的直觉往往差得令人吃惊。他们编写了函数,也知道这个函数会被调用,但他们并不清 阅读全文
posted @ 2024-01-09 00:06 deeplearnMs 阅读(21) 评论(0) 推荐(0) 编辑
摘要: 测量和实验是所有改善程序性能尝试的基础。本内容及将介绍两种测量性能的工具软件:分析器和计时器软件。我将讨论如何设计性能测量实验,使得测量结果更有指导意义,而不是误导我们。 最基本和最频繁地执行的软件性能测量会告诉我们“需要多长时间”。执行函数需要多长时间?从磁盘读取配置文件需要多长时间?启动和退出程 阅读全文
posted @ 2024-01-08 23:57 deeplearnMs 阅读(7) 评论(0) 推荐(0) 编辑
摘要: C++ 程序表现得仿佛它们是按顺序执行的,完全遵守了 C++ 流程控制语句的控制。上句话影响优化的计算机行为 | 19中的含糊其辞的“仿佛”正是许多编译器进行优化的基础,也是现代计算机硬件的许多技巧的基础。 当然,在底层,编译器能够而且有时也确实会对语句进行重新排序以改善性能。但是编译器知道在测试一 阅读全文
posted @ 2024-01-05 11:20 deeplearnMs 阅读(10) 评论(0) 推荐(0) 编辑
摘要: 在 Kernighan 和 Ritchie 的《C 程序设计语言》一书中,所有语句的性能开销都一样。一个函数调用可能包含任意复杂的计算。但一个赋值语句通常只是将保存在一个寄存器中的内容变为另外一个内容保存在另一个寄存器中。因此,以下赋值语句int i,j;...i = j;会 从 j 中 复 制 2 阅读全文
posted @ 2024-01-05 11:16 deeplearnMs 阅读(11) 评论(0) 推荐(0) 编辑
摘要: C++ 对用户所撒的最大的谎言就是运行它的计算机的结构是简单的、稳定的。为了假装相信这条谎言,C++ 让开发人员不用了解每种微处理器设备的细节即可编程,如同正在使用真实得近乎残酷的汇编语言编程一样。 阅读全文
posted @ 2024-01-05 11:14 deeplearnMs 阅读(4) 评论(0) 推荐(0) 编辑
摘要: 除了最小的处理器外,其他处理器都有硬件可以确保程序之间是互相隔离的。这样,程序A 不能读写和执行属于程序 B 的物理内存。这个硬件还会保护操作系统内核不会被程序覆写。另一方面,操作系统内核需要能够访问所有程序的内存,这样程序就可以通过系统调用访问操作系统。有些操作系统还允许程序发送访问共享内存的请求 阅读全文
posted @ 2024-01-05 11:13 deeplearnMs 阅读(25) 评论(0) 推荐(0) 编辑
摘要: 任何运行于现代操作系统中的程序都会与同时运行的其他程序、检查磁盘或者新的 Java 和Flash 版本的定期维护进程以及控制网络接口、磁盘、声音设备、加速器、温度计和其他外设的操作系统的各个部分共享计算机。每个程序都会与其他程序竞争计算机资源。 程序不会过多在意这些事情。它只是会运行得稍微慢一点而已 阅读全文
posted @ 2024-01-05 10:59 deeplearnMs 阅读(8) 评论(0) 推荐(0) 编辑