![](https://i-blog.csdnimg.cn/columns/default/20201014180756918.png?x-oss-process=image/resize,m_fixed,h_224,w_224)
CSAPP
文章平均质量分 86
Immanito
这个作者很懒,什么都没留下…
展开
-
CSAPP:优化程序性能(一)
编写高效程序需要做到以下几点:第一,必须选择一组适当的算法和数据结构第二,必须编写出编译器能够有效优化以转换高效可执行代码的源代码(理解优化编译器的能力和局限性很重要)程序员必须在实现和维护程序的简单性和运算速度之间做出权衡,几分钟就能编写一个简单的插入程序,而一个高效的排序算法程序可能需要一天或更长时间来实现和优化,大多数编译器,例如GCC向用户提供了一些对它们所使用的优化的限制原创 2017-06-20 13:39:56 · 1832 阅读 · 0 评论 -
CSAPP:优化程序性能(二)
程序示例为了说明一个抽象程序是如何被系统地转换成更有效的代码的,我们使用基于如下所示的向量数据结构的运行示例向量由两个内存块表示,头部和数据数组,头部声明结构如下, data_t代表基本数据类型:typedef struct { long len; data_t *data;}vec_rec, *vec_ptr;生成向量,访问向量元素,确定向量长度的基本过原创 2017-06-20 16:02:23 · 961 阅读 · 0 评论 -
CSAPP:优化程序性能(三)
理解现代处理器之前所讲述的优化策略都不依赖于目标机器的任何特性,这些优化只是简单的降低了过程调用开销、消除妨碍编译器优化的因素,随着师徒进一步提升性能,必须考虑利用处理器的微体系结构的优化,也就是处理器用来执行指令的底层系统设计。由于现代微处理器的复杂性,处理器的实际操作与通过观察机器级程序所察觉到的程序行为是大相径庭的,在代码级上似乎是一次执行一条指令。每条指令包括从内存或寄存器取值,执原创 2017-06-21 00:36:52 · 1752 阅读 · 0 评论 -
CSAPP:优化程序性能(四)
了解一些限制程序性能的因素一. 寄存器溢出如果我们的并行度P超过了可用寄存器的数量,那么编译器就会通知溢出,将某些临时值存放在内存中,通常是运行时堆栈上分配空间,聚个例子,当把combine6的多累积变量模式扩展到k=10或者k=20的时候,我们会发现这种循环展开程度没有改善CPE,有些甚至变差了,现代x86-64处理器有16个寄存器,并可以使用16个ymm寄存器保存浮点数,一点循环变量的原创 2017-06-21 22:00:47 · 1459 阅读 · 0 评论