- Python高性能編程(第2版)
- (美)米夏·戈雷利克等
- 520字
- 2023-09-06 19:21:26
第2章 通過(guò)剖析找出瓶頸
閱讀本章后,你將能夠回答如下問(wèn)題。
● 如何找出代碼中的速度和RAM瓶頸?
● 如何剖析CPU和內(nèi)存占用情況?
● 如何確定剖析的深度?
● 如何剖析長(zhǎng)期運(yùn)行的應(yīng)用程序?
● CPython在幕后做了什么?
● 如何在優(yōu)化性能時(shí)確保代碼正確無(wú)誤?
剖析讓你能夠找到瓶頸,以便通過(guò)做最少的工作來(lái)最大限度地提高性能。我們希望只做少量的工作就能極大地提高速度,同時(shí)減少資源的占用,但實(shí)際上,你的目標(biāo)是讓代碼足夠精簡(jiǎn)且足夠快。剖析讓你能夠做出最務(wù)實(shí)的決定,從而最大限度地減少工作量。
對(duì)于任何可度量的資源,都可進(jìn)行剖析,而不僅僅是CPU時(shí)間。本章介紹如何剖析CPU時(shí)間和內(nèi)存占用情況,這里介紹的方法也可用來(lái)剖析網(wǎng)絡(luò)帶寬和磁盤(pán)I/O。
如果程序的運(yùn)行速度太慢或占用的RAM太多,你肯定想修改代碼中導(dǎo)致這些問(wèn)題的罪魁禍?zhǔn)住.?dāng)然,你也可跳過(guò)剖析過(guò)程,直接對(duì)你認(rèn)為有問(wèn)題的代碼進(jìn)行修改,但需要注意的是,結(jié)果很可能是你將勁兒使錯(cuò)了地方。因此,不要憑直覺(jué),而應(yīng)先進(jìn)行剖析,找出目標(biāo)后再修改代碼的結(jié)構(gòu),這要合理得多。
有時(shí)候偷懶不是壞事。通過(guò)剖析,可快速找出需要消除的瓶頸,這樣只需做足夠的瓶頸消除工作就能獲得所需的性能。如果你未經(jīng)剖析就直接進(jìn)行優(yōu)化,很可能做的工作反而更多。請(qǐng)務(wù)必根據(jù)剖析結(jié)果確定優(yōu)化方向。
- 極簡(jiǎn)算法史:從數(shù)學(xué)到機(jī)器的故事
- SPSS數(shù)據(jù)挖掘與案例分析應(yīng)用實(shí)踐
- Web前端開(kāi)發(fā)技術(shù):HTML、CSS、JavaScript(第3版)
- 國(guó)際大學(xué)生程序設(shè)計(jì)競(jìng)賽中山大學(xué)內(nèi)部選拔真題解(二)
- Python快樂(lè)編程:人工智能深度學(xué)習(xí)基礎(chǔ)
- Hands-On JavaScript High Performance
- Java Web基礎(chǔ)與實(shí)例教程
- Effective Python Penetration Testing
- PostgreSQL Replication(Second Edition)
- 高級(jí)語(yǔ)言程序設(shè)計(jì)(C語(yǔ)言版):基于計(jì)算思維能力培養(yǎng)
- 青少年學(xué)Python(第1冊(cè))
- QlikView Unlocked
- 進(jìn)入IT企業(yè)必讀的324個(gè)Java面試題
- MongoDB Cookbook(Second Edition)
- AI自動(dòng)化測(cè)試:技術(shù)原理、平臺(tái)搭建與工程實(shí)踐