Python高性能编程(第2版)
上QQ阅读APP看书,第一时间看更新

第2章 通过剖析找出瓶颈

阅读本章后,你将能够回答如下问题。

如何找出代码中的速度和RAM瓶颈?

如何剖析CPU和内存占用情况?

如何确定剖析的深度?

如何剖析长期运行的应用程序?

CPython在幕后做了什么?

如何在优化性能时确保代码正确无误?

剖析让你能够找到瓶颈,以便通过做最少的工作来最大限度地提高性能。我们希望只做少量的工作就能极大地提高速度,同时减少资源的占用,但实际上,你的目标是让代码足够精简且足够快。剖析让你能够做出最务实的决定,从而最大限度地减少工作量。

对于任何可度量的资源,都可进行剖析,而不仅仅是CPU时间。本章介绍如何剖析CPU时间和内存占用情况,这里介绍的方法也可用来剖析网络带宽和磁盘I/O。

如果程序的运行速度太慢或占用的RAM太多,你肯定想修改代码中导致这些问题的罪魁祸首。当然,你也可跳过剖析过程,直接对你认为有问题的代码进行修改,但需要注意的是,结果很可能是你将劲儿使错了地方。因此,不要凭直觉,而应先进行剖析,找出目标后再修改代码的结构,这要合理得多。

有时候偷懒不是坏事。通过剖析,可快速找出需要消除的瓶颈,这样只需做足够的瓶颈消除工作就能获得所需的性能。如果你未经剖析就直接进行优化,很可能做的工作反而更多。请务必根据剖析结果确定优化方向。