引言
深入理解计算机系统,对我来说是部大块头。说实话,我没有从头到尾完完整整的全部看完,而是选择性的看了一些我自认为重要的或感兴趣的章节,也从中获益良多,看清楚了计算机系统的一些本质东西或原理性的内容,这对每个想要深入学习编程的程序员来说都是至关重要的。只有很好的理解了系统到底是如何运行我们代码的,我们才能针对系统的特点写出高质量、高效率的代码来。这本书我以后还需要多研究几遍,今天就先总结下书中我已学到的几点知识。
重点笔记
编写高效的程序需要下面几类活动:
- 选择一组合适的算法和数据结构。这是很重要的,好的数据结构有时能帮助更快的实现某些算法,这也要求编程人员能够熟知各种常用的数据结构和算法。
- 编写出使编译器能够有效优化以转换成高效可执行的源代码。因此,理解编译器优化的能力和局限性是很重要的。编写程序方式中看上去只是一点小小的变动,都会引起编译器优化方式很大的变化。有些编程语言比其他语言容易优化得多。C语言的某些特性,例如执行指针运算和强制类型转换的能力,使得编译器很难对其进行优化。
- 并行技术,针对处理运算量特别大的计算,将一个任务分成多个部分,这些部分可以在多核和多处理器的某种组合上并行地计算。
让编译器展开循环
说到程序优化,很多人都会提到循环展开技术。现在编译器可以很容易地执行循环展开,只要优化级