计算机体系结构

在我刚开始学习如何自己优化程序时,犯了一个很大的错误就是主要依赖经验主义方法。由于不了解计算机真正的工作原理,我会半随机地使用交换循环嵌套方式、重新排列算术、组合分支条件、显示使用内联函数等操作,或者遵循我从别人那里道听途说的各种其他性能优化技巧,盲目地希望性能有所提升。

不幸的是,大多数程序员都是这样做性能优化的。大多数关于性能的文本并不教你如何定性地思考软件性能。相反,它们会给你一些关于特定实现方法的一般性建议,而一般性的性能直觉显然是不够的。

如果我在学习算法编程之前学习了计算机体系结构,那么可能会为我节省数十甚至数百个小时。因此,即使大多数人对此不感兴趣,我们也将花费前几章学习CPU的工作原理,并开始学习汇编语言。