日本不卡不码高清免费观看,久久国产精品久久w女人spa,黄色aa久久,三上悠亚国产精品一区二区三区

您的位置:首頁技術文章
文章詳情頁

python如何做代碼性能分析

瀏覽:183日期:2022-06-21 09:39:40

上一篇文章我們介紹了基準測試,通過基準測試可以發現程序變慢了,那么是因為什么原因導致性能變慢的,需要進一步做代碼性能分析。python同樣提供了性能分析工具。

cProfile

cProfile是python默認的性能分析器,他只測量CPU時間,并不關心內存消耗和其他與內存相關聯的信息。

from time import sleepimport randomdef random_list(start, end, length): ''' 生成隨機列表 :param start: 隨機開始數 :param end: 隨機結束數 :param length: 列表長度 ''' data_list = [] for i in range(length):data_list.append(random.randint(start, end)) return data_listdef bubble_sort(arr): ''' 冒泡排序: 對列表進行排序 :param arr 列表 ''' n = len(arr) sleep(1) for i in range(n):for j in range(0, n - i - 1): if arr[j] > arr[j + 1]:arr[j], arr[j + 1] = arr[j + 1], arr[j] return arrif __name__ == ’__main__’: get_data_list = random_list(1, 99, 10) import cProfile cProfile.run(’bubble_sort({})’.format(get_data_list))

繼續使用上一篇文章中的例子,引用cProfile模塊,run()方法參數說明。

run(statement, filename=None, sort=-1)

statement: 需要測試的代碼或者函數(函數名) fielname: 結果保存的位置, 默認為stdout sort: 結果排序方法,常用的有cumtime: 累積時間, name: 函數名, line: 行號

為了使結果統計出耗時部分,我們加了sleep,結果如下:

❯ python demo.py 6 function calls in 1.004 seconds Ordered by: standard name ncalls tottime percall cumtime percall filename:lineno(function)1 0.000 0.000 1.004 1.004 <string>:1(<module>)1 0.000 0.000 1.004 1.004 demo.py:19(bubble_sort)1 0.000 0.000 1.004 1.004 {built-in method builtins.exec}1 0.000 0.000 0.000 0.000 {built-in method builtins.len}1 1.004 1.004 1.004 1.004 {built-in method time.sleep}1 0.000 0.000 0.000 0.000 {method ’disable’ of ’_lsprof.Profiler’ objects} 6 function calls in 1.004 seconds 6個函數調用被監控,耗時1.004秒。 ncalls 函數被調用的次數。如果這一列有兩個值,就表示有遞歸調用,第二個值是原生調用次數,第一個值是總調用次數。 tottime 函數內部消耗的總時間。(可以幫助優化) percall 是tottime除以ncalls,一個函數每次調用平均消耗時間。 cumtime 之前所有子函數消費時間的累計和。 filename:lineno(function) 被分析函數所在文件名、行號、函數名。line_profiler

line_profiler 可以提供有關時間是如何在各行之間分配的信息,直白一點就是給出程序每行的耗時,在無法確定哪行語句最浪費時間,這很有用。

line_profiler是一個第三方模塊,需要安裝。

https://github.com/pyutils/line_profiler

from time import sleepimport randomdef random_list(start, end, length): ''' 生成隨機列表 :param start: 隨機開始數 :param end: 隨機結束數 :param length: 列表長度 ''' data_list = [] for i in range(length):data_list.append(random.randint(start, end)) return data_list@profiledef bubble_sort(arr): ''' 冒泡排序: 對列表進行排序 :param arr 列表 ''' n = len(arr) sleep(1) for i in range(n):for j in range(0, n - i - 1): if arr[j] > arr[j + 1]:arr[j], arr[j + 1] = arr[j + 1], arr[j] return arrif __name__ == ’__main__’: get_data_list = random_list(1, 99, 10) bubble_sort(get_data_list)

給需要監控的函數加上@profile 裝飾器。通過kernprof命令運行文件(安裝完line_profiler生成的命令)。

參數說明:

-l:以使用函數line_profiler -v:以立即將結果打印到屏幕

運行結果:

kernprof -l -v demo.pyWrote profile results to demo.py.lprofTimer unit: 1e-06 sTotal time: 1.00416 sFile: demo.pyFunction: bubble_sort at line 18Line # Hits Time Per Hit % Time Line Contents============================================================== 18 @profile 19 def bubble_sort(arr): 20 ''' 21 冒泡排序: 對列表進行排序 22 :param arr 列表 23 ''' 24 1 8.0 8.0 0.0 n = len(arr) 25 1 1004030.0 1004030.0 100.0 sleep(1) 2611 15.0 1.4 0.0 for i in range(n): 2755 44.0 0.8 0.0 for j in range(0, n - i - 1): 2845 41.0 0.9 0.0 if arr[j] > arr[j + 1]: 2920 21.0 1.1 0.0 arr[j], arr[j + 1] = arr[j + 1], arr[j] 30 1 1.0 1.0 0.0 return arr

輸出非常直觀,分成了6列。

Line #:運行的代碼行號。 Hits:代碼行運行的次數。 Time:代碼行的執行時間,單位為微秒。 Per Hit:Time/Hits。 % Time:代碼行總執行時間所占的百分比。 Line Contents:代碼行的內容。

只需查看% Time列,就可清楚地知道時間都花在了什么地方。

總結

性能測試分析站在項目層面是一個很龐大的話題,以前為測試工程師,關注的是性能工具的使用,以及用戶維度的性能[1];作為開發工程師,每個功能都是由一個個函數/方法組成,我們去分析每個函數/方法,甚至是每行代碼的耗時,才能更好的進行代碼層面的性能優化。

以上就是python如何做代碼性能分析的詳細內容,更多關于python 代碼性能分析的資料請關注好吧啦網其它相關文章!

標簽: Python 編程
相關文章:
日本不卡不码高清免费观看,久久国产精品久久w女人spa,黄色aa久久,三上悠亚国产精品一区二区三区
欧美日韩国产亚洲一区| 奶水喷射视频一区| 99久久九九| 视频在线在亚洲| 在线视频亚洲欧美中文| 里番精品3d一二三区| 国产精品第十页| 日本成人精品| 国产日韩欧美中文在线| 久久69成人| 亚洲成av在线| 欧美日韩高清| 欧美日韩精品免费观看视欧美高清免费大片 | 日本а中文在线天堂| 麻豆国产91在线播放| 青青久久av| 黄在线观看免费网站ktv| 日韩中文欧美| 视频在线在亚洲| 久久午夜精品| 久久亚洲二区| 一区二区三区四区日韩| 九色精品91| 国产亚洲精aa在线看| 欧美精品羞羞答答| 首页亚洲欧美制服丝腿| 久久福利一区| 视频一区欧美精品| 免费看黄色91| 欧美亚洲国产日韩| 久久99偷拍| 91精品国产91久久久久久黑人| 伊人久久av| 亚洲激情二区| 亚洲青青久久| 你懂的网址国产 欧美| 蜜臀av免费一区二区三区| 午夜电影亚洲| 五月天久久久| 在线视频精品| 日本不卡一区二区三区| 999久久久国产精品| 亚洲精品视频一二三区| 模特精品在线| 99精品综合| 亚洲一区欧美二区| 欧美亚洲一区二区三区| 美女视频免费精品| 久久五月天小说| 首页国产欧美久久| 国产毛片精品久久| 91嫩草亚洲精品| 午夜久久99| 国产精品三上| 麻豆视频一区| 岛国av在线播放| 国语精品一区| 日本少妇精品亚洲第一区| 免费在线观看日韩欧美| 亚洲精品无播放器在线播放| 色综合五月天| 国产免费av国片精品草莓男男| 国产精品亚洲一区二区三区在线观看| 国产欧美三级| 亚洲三级网站| 欧美日韩国产亚洲一区| 中文字幕日韩高清在线| 国产一区二区三区四区五区| 精品丝袜久久| 亚洲一区二区毛片| 欧美日本精品| 午夜国产精品视频| 国产精品1luya在线播放| 久久狠狠婷婷| 911亚洲精品| 精精国产xxxx视频在线野外| 日韩高清一级| 伊人久久国产| 国产精品亚洲综合在线观看| 久久影院一区| 国产日韩一区二区三区在线播放| 日本久久成人网| 日韩精选在线| 老牛影视精品| 免费在线观看视频一区| 久久亚洲国产精品尤物| 水野朝阳av一区二区三区| 日本麻豆一区二区三区视频| 国产高清不卡| 日韩欧美精品一区二区综合视频| 毛片在线网站| 国产农村妇女精品一二区| 国产999精品在线观看| 黑丝一区二区三区| 久久亚洲欧美| 久久精品国产在热久久| 日韩免费在线| 一区二区亚洲视频| 国产精品亚洲二区| 国产在线日韩精品| 国产精品毛片在线看| 日韩av一区二区在线影视| 国产成人精品一区二区免费看京 | 99久久久久| 亚洲三级精品| 中文字幕系列一区| 国产精品免费99久久久| 日韩中文字幕| 欧美理论视频| 丰满少妇一区| 日本三级亚洲精品| 亚洲理论在线| 黄色亚洲免费| 九九综合在线| 国产网站在线| 欧美日韩视频网站| 国产精品色在线网站| 视频国产精品| 亚洲免费播放| 伊人成人在线视频| 亚洲www啪成人一区二区| 麻豆理论在线观看| 久久中文字幕导航| 欧美成人精品午夜一区二区| 亚洲开心激情| 欧美专区18| 免费视频最近日韩| 亚洲一区国产一区| 在线精品亚洲| 亚洲作爱视频| 快she精品国产999| 黄色日韩精品| 六月婷婷一区| 激情91久久| 爽爽淫人综合网网站| 亚洲国产不卡| 成人国产精品一区二区免费麻豆| 国产精品扒开腿做爽爽爽软件| 午夜精品影视国产一区在线麻豆| 91亚洲精品视频在线观看| 99国产精品| 老牛影视一区二区三区| 亚洲免费成人| 蜜桃久久久久久| 国产一区清纯| 免费久久精品| 国产精品日本| 蜜臀av性久久久久蜜臀aⅴ流畅| 91精品一区国产高清在线gif| 国产99精品| 成人国产精品久久| 国产精品1区| 久久久一本精品| 美女黄网久久| 影音先锋国产精品| 免费在线成人网| 国产精品二区影院| 色一区二区三区| 国产精品视区| 久久中文字幕一区二区| 日本在线精品| 日韩美女国产精品| 国产精品22p| 99久久www免费| 国产真实久久| 日韩成人综合| 天堂va在线高清一区| 麻豆91在线播放| 欧美xxxx中国| 美女视频黄久久| 免费看日韩精品| 日韩在线电影| 91麻豆精品激情在线观看最新| 日韩区一区二| 欧美国产视频| 97精品在线| 久久久成人网| 欧美中文一区二区| 亚洲调教视频在线观看| 国产精品久久久免费| 亚洲欧美视频一区二区三区| 国产乱论精品| 亚洲欧美网站| 国产一区福利| 91精品婷婷色在线观看| 日韩精品一级中文字幕精品视频免费观看| 午夜性色一区二区三区免费视频| 国产aⅴ精品一区二区四区| 亚洲免费精品| 91亚洲国产成人久久精品| 国产精品久久久久久久久久久久久久久| 中文字幕一区久| 国产乱子精品一区二区在线观看| 性色一区二区| 免费久久精品| 激情91久久| 香蕉久久国产| 亚洲韩日在线| sm久久捆绑调教精品一区| 国产亚洲亚洲|