图解性能优化

性能的基础知识

Posted by Liangjf on August 16, 2020

第一章<图解性能优化>

这本书是日本人写的,日本的技术书的风格独具一格,写得比较细腻,配图也比较生动有趣。这本书也是继承了这样的风格。趁着这个周末阅读完这本书,因此趁着这个机会就为这本书做一个小结。

整本书是围绕着“性能”来展开的。内容时符合书的名字,图解,确实书里用许多的图片来帮助读者的理解。

第一章<性能的基础知识>

性能的一些基础知识。性能其实就是算法的实现和选择,书里提到了算法的好坏对性能有很大的影响。算法好坏决定了性能的上限,当然也会刷新下限了。

算法是一个软件开发者的基本功,作者反复提到了这句话,要想实现性能高的系统必须熟悉算法。对于算法的学习,需要从算法的优缺点入手,然后通过图解的方式帮助理解。书中用遍历有序数组和二分算法为例子。评价算法的指标是通过时间复杂度和空间复杂度来衡量的。时间复杂度和空间复杂度又是一个抉择的问题,视自己的系统来选择对的算法。

在实际开发中,响应时间和吞吐量是两个最重要的维度。这是两个不同的评判方向,响应时间表示应答的快慢,吞吐量指系统能够处理数据的多少。平时所说的“高并发系统”,其实就是响应时间不能太慢,高吞吐量的系统。系统出现性能问题,要先从这两个方向来确定是哪个方向的问题,书中举了例子,增加了机器CPU核数,但是性能没有提升,响应时间还是那么慢,实际是响应时间问题,是CPU处理不过来,真正要做的是换更吊的CPU或者优化逻辑的处理时间。

互联网的系统一般是“偏重吞吐的系统”,所以需要使用核数更多,内存更大的机器,来并行处理更多的数据,缓存更多的数据。所以在面对性能问题,先确定是重响应,还是重吞吐的系统。然后再针对性的解决问题。

程序就是数据结构+算法,所以书中简单的从数组,链表,队列,栈,数,哈希等数据结构的优点和缺点介绍,然后也介绍了二分算法,快速排序算法,简单的介绍了缓存相关的回写和直写问题。

小结

第一章是整书的全局预览,介绍了什么是性能,什么影响性能,怎么分析确定是哪种性能问题,最后是影响性能的数据结构和算法的优缺点。