高效程式設計之 cProfile 效能分析

2021-09-27 13:40:57 字數 1432 閱讀 9981

寫**經常會聽說一些名詞,比如 效能分析、**調優。

cprofile 是 python **調優的一種工具,它能夠統計在整個**執行過程中,每個函式呼叫的次數和消耗的時間。

這個工具雖然很常用,但是沒必要花太多時間研究這個工具,簡單使用就能達到效果,所以我這裡只簡單記錄下核心用法。

兩種使用方式

cprofile.run('

func(arg)

') #

調優函式,在指令碼中使用

python -m cprofile myscript.py (-s ziduan) #

調優指令碼,在命令列使用

輸出解釋

9891015 function calls (9843181 primitive calls) in 12.791seconds

ordered by: standard name

ncalls tottime percall cumtime percall filename:lineno(function)

1 0.000 0.000 12.791 12.791 :1()

1 0.037 0.037 0.966 0.966 accoverstep.py:13(accoverstep)

2 0.166 0.083 9.534 4.767 datapreprocessing.py:27(dists)

1 0.003 0.003 6.252 6.252 datapreprocessing.py:38(datapreprocessing)

10909 0.004 0.000 0.167 0.000 _methods.py:34(_sum)

10 0.000 0.000 0.000 0.000 _methods.py:45(_all)

42360 0.071 0.000 0.092 0.000 _methods.py:48(_count_reduce_items)

42360 0.201 0.000 0.678 0.000 _methods.py:58(_mean)

共有 9891015 次函式呼叫,原始呼叫為 9843181 次,原始呼叫代表不包含遞迴呼叫。

ncalls 函式的被呼叫次數 

tottime 函式總計執行時間,除去函式中呼叫的函式執行時間 

percall 函式執行一次的平均時間,等於tottime/ncalls 

cumtime 函式總計執行時間,含呼叫的函式執行時間 

percall 函式執行一次的平均時間,等於cumtime/ncalls 

filename:lineno(function) 函式所在的檔名,函式的行號,函式名

高效程式設計之原則

前言 清明時節雨紛紛,路上行人欲斷魂。借問酒家何處有?牧童遙指杏花村。對於清明節,想必杜牧這首詩肯定會讓你呼之既出。今天是清明放假的最後一天,打掃完家裡的衛生,我就必須要抓緊美好的時光來記錄下 高效能程式設計師的修煉 一書第三章 高效程式設計之原則 的讀書札記。在怨天尤人之前,我們應該做好自我反省,...

python效能測量工具cProfile使用解析

背景 python是一種解釋性的語言,執行速度相比c c 等語言十分緩慢 因此我們需要在其它地方上下功夫來提高 的執行速度。首先需要對 進行分析,這個時候則需要用一些工具。這裡介紹cprofile 全 分析 命令列 cprofile s tottime your program.py 結果如下 程式...

高效程式設計之cache命中對於程式效能的影響

下面這個 用兩個雙層迴圈遍歷了乙個二維陣列裡所有的元素,以我自己機器的測試 上面那個迴圈耗時基本為下面的一半,兩個迴圈的時間複雜度相同,為什麼會有這麼大的差別?首先要明白的是不管是幾維陣列,他們都是用一塊位址連續的記憶體來儲存所有的元素,而記憶體布局的順序是一整行接著下乙個整行排列,第乙個迴圈是一行...