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

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

python如何進行基準測試

瀏覽:134日期:2022-06-21 09:49:17

基準測試屬于性能測試的一種,用于評估和衡量軟件的性能指標。我們可以在軟件開發的某個階段通過基準測試建立一個已知的性能水平,稱為'基準線'。當系統的軟硬件環境發生變化之后再進行一次基準測試以確定那些變化對性能的影響。 這是基準測試最常見的用途。

Donald Knuth在1974年出版的《Structured Programming with go to Statements》提到:

毫無疑問,對效率的片面追求會導致各種濫用。程序員會浪費大量的時間在非關鍵程序的速度上,實際上這些嘗試提升效率的行為反倒可能產生很大的負面影響,特別是當調試和維護的時候。我們不應該過度糾結于細節的優化,應該說約97%的場景:過早的優化是萬惡之源。當然我們也不應該放棄對那關鍵3%的優化。一個好的程序員不會因為這個比例小就裹足不前,他們會明智地觀察和識別哪些是關鍵的代碼;但是僅當關鍵代碼已經被確認的前提下才會進行優化。對于很多程序員來說,判斷哪部分是關鍵的性能瓶頸,是很容易犯經驗上的錯誤的,因此一般應該借助測量工具來證明。

雖然經常被解讀為不需要關心性能,但是的少部分情況下(3%)應該觀察和識別關鍵代碼并進行優化。

基準(benchmarking)測試工具

python中提供了非常多的工具來進行基準測試。

為了使演示的例子稍微有趣,我們來隨機生成一個列表,并對列表中數字進行排序。

import 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) 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) ret = bubble_sort(get_data_list) print(ret)

運行結果如下:

❯ python .demo.py[8, 16, 22, 31, 42, 58, 66, 71, 73, 91]timeit

timeit是python自帶的模塊,用來進行基準測試非常方便。

if __name__ == ’__main__’: import timeit get_data_list = random_list(1, 99, 10) setup = 'from __main__ import bubble_sort' t = timeit.timeit(stmt='bubble_sort({})'.format(get_data_list),setup=setup) print(t)

運行結果:

❯ python .demo.py5.4201355

以測試bubble_sort()函數為例。timeit.timeit() 參數說明。

stmt:需要測試的函數或語句,字符串形式. setup: 運行的環境,本例子中表示if __name__ == ’__main__’:. number: 執行的次數,省缺則默認是1000000次。所以你會看到運行bubble_sort() 耗時 5秒多。 pyperf

https://github.com/psf/pyperf

pyperf 的用法與timeit比較類似,但它提供了更豐富結果。(注:我完全是發現了這個庫才學習基準測試的)

if __name__ == ’__main__’: get_data_list = random_list(1, 99, 10) import pyperf setup = 'from __main__ import bubble_sort' runner = pyperf.Runner() runner.timeit(name='bubble sort', stmt='bubble_sort({})'.format(get_data_list), setup=setup)

運行結果:

❯ python .demo.py -o bench.json.....................bubble sort: Mean +- std dev: 5.63 us +- 0.31 us

測試結果會寫入bench.json 文件。可以使用pyperf stats命令分析測試結果。

❯ python -m pyperf stats bench.jsonTotal duration: 15.9 secStart date: 2021-04-02 00:17:18End date: 2021-04-02 00:17:36Raw value minimum: 162 msRaw value maximum: 210 msNumber of calibration run: 1Number of run with values: 20Total number of run: 21Number of warmup per run: 1Number of value per run: 3Loop iterations per value: 2^15Total number of values: 60Minimum: 4.94 usMedian +- MAD: 5.63 us +- 0.12 usMean +- std dev: 5.63 us +- 0.31 usMaximum: 6.41 us 0th percentile: 4.94 us (-12% of the mean) -- minimum 5th percentile: 5.10 us (-9% of the mean) 25th percentile: 5.52 us (-2% of the mean) -- Q1 50th percentile: 5.63 us (+0% of the mean) -- median 75th percentile: 5.81 us (+3% of the mean) -- Q3 95th percentile: 5.95 us (+6% of the mean)100th percentile: 6.41 us (+14% of the mean) -- maximumNumber of outlier (out of 5.07 us..6.25 us): 6pytest-benchmark

https://github.com/ionelmc/pytest-benchmark

pytest-benchmark是 pytest單元測試框架的一個插件。 單獨編寫單元測試用例:

from demo import bubble_sortdef test_bubble_sort(benchmark): test_list = [5, 2, 4, 1, 3] result = benchmark(bubble_sort, test_list) assert result == [1, 2, 3, 4, 5]

需要注意:

導入bubble_sort() 函數。 benchmark 作為鉤子函數使用,不需要導入包。前提是你需要安裝pytest和pytest-benchmark。 為了方便斷言,我們就把要排序的數固定下來了。

運行測試用例:

❯ pytest -q .test_demo.py. [100%]------------------------------------------------ benchmark: 1 tests -----------------------------------------------Name (time in us)Min Max Mean StdDev Median IQR Outliers OPS (Kops/s) Rounds Iterations-------------------------------------------------------------------------------------------------------------------test_bubble_sort 1.6000 483.2000 1.7647 2.6667 1.7000 0.0000 174;36496 566.6715 181819 1-------------------------------------------------------------------------------------------------------------------Legend: Outliers: 1 Standard Deviation from Mean; 1.5 IQR (InterQuartile Range) from 1st Quartile and 3rd Quartile. OPS: Operations Per Second, computed as 1 / Mean1 passed in 1.98s

加上 --benchmark-histogram 參數,你會得到一張圖表

❯ pytest -q .test_demo.py --benchmark-histogram.[100%]------------------------------------------------ benchmark: 1 tests -----------------------------------------------Name (time in us)Min Max Mean StdDev Median IQR Outliers OPS (Kops/s) Rounds Iterations-------------------------------------------------------------------------------------------------------------------test_bubble_sort 1.6000 53.9000 1.7333 0.3685 1.7000 0.0000 1640;37296 576.9264 178572 1-------------------------------------------------------------------------------------------------------------------Generated histogram: D:githubtest-circlearticlecodebenchmark_20210401_165958.svg

圖片如下:

python如何進行基準測試

關于基準測試的工具還有很多,這里就不再介紹了。

經過基準測試發現程序變慢了,那么接下來需要做的就是代碼性能分析了,我下篇再來介紹。

以上就是python如何進行基準測試的詳細內容,更多關于python 基準測試的資料請關注好吧啦網其它相關文章!

標簽: Python 編程
相關文章:
日本不卡不码高清免费观看,久久国产精品久久w女人spa,黄色aa久久,三上悠亚国产精品一区二区三区
午夜电影亚洲| 久久国产生活片100| 日韩avvvv在线播放| 欧美中文字幕一区二区| 成人av二区| 蜜臀av性久久久久蜜臀aⅴ流畅| 国产视频一区三区| 视频一区中文字幕精品| 91精品国产经典在线观看| 青青草91视频| 国产精品久久久久久久免费观看| 日韩免费小视频| 中文一区二区| 日韩激情一区二区| 国产成人精品亚洲线观看 | 亚洲精选av| 久久精品99久久久| 日韩一区自拍| 亚洲精选成人| 精品国产午夜| 亚洲欧洲一区二区天堂久久| 五月激激激综合网色播| 国产精品久久久久久久久久久久久久久| 国产成人免费av一区二区午夜| 欧美日中文字幕| 综合一区二区三区| 日韩av自拍| 亚洲综合三区| 久久中文在线| 亚洲一区二区成人| 日韩av一二三| 肉色欧美久久久久久久免费看 | 精品中文在线| 午夜精品影院| 国产欧美一区二区三区国产幕精品| 久久久久久久欧美精品| 欧美福利专区| 国产乱码精品一区二区三区亚洲人| 精品视频在线你懂得| 欧美日韩日本国产亚洲在线| 国产精品视频首页| 欧美成人高清| 国产精品99在线观看| 一区二区高清| 香蕉视频亚洲一级| 国产欧美69| 六月丁香综合| 午夜av不卡| 欧美日韩亚洲一区三区| 欧美亚洲国产一区| 欧美极品一区二区三区| 欧美另类综合| 麻豆精品99| 中文无码日韩欧| 999精品一区| 精品亚洲成人| 青青草国产成人99久久| 午夜国产精品视频免费体验区| 久久男人av| 国产午夜久久av| 亚洲欧美日韩国产| 国产超碰精品| 精品一区二区男人吃奶| 91精品国产自产精品男人的天堂| 99xxxx成人网| 婷婷综合六月| 精品中文在线| 国产精品久久久久毛片大屁完整版| 免费成人在线视频观看| 在线日韩电影| 91日韩免费| 久久99精品久久久野外观看| 午夜久久av | 亚洲精品88| 久久久久久亚洲精品美女| 日韩在线观看一区二区| 亚洲婷婷免费| 久久精品播放| 欧美sss在线视频| 国产高清不卡| 超碰在线99| 国产不卡精品| 福利一区二区免费视频 | 日本在线观看不卡视频| 99视频精品| 99亚洲视频| 欧美日韩精品免费观看视频完整 | 91av亚洲| 日韩伦理在线一区| 日韩在线免费| 欧美成人日韩| 日韩视频精品在线观看| 一区二区自拍| 亚洲激情二区| 亚洲免费在线| 亚洲91网站| 日韩av网站免费在线| 日本天堂一区| 国产极品嫩模在线观看91精品| 国产亚洲一区二区三区不卡| 国产美女撒尿一区二区| 国产精品资源| 精品午夜av| 国产99久久| 日韩中文字幕91| 日韩av不卡在线观看| 国产精品久久久久久模特| 国产精久久一区二区| 丁香婷婷久久| 欧美日韩在线播放视频| 国产一区91| 亚州精品视频| 美女久久99| 久久久精品五月天| 麻豆精品91| 国产精品久久久久久久久久久久久久久| 国产精品观看| 国产色播av在线| 99成人在线| 国产精品一级| 三级小说欧洲区亚洲区| 亚洲一区二区三区四区五区午夜 | 久久精品av麻豆的观看方式| 国产精品日本一区二区三区在线| 超碰在线99| 亚洲精品1区| 国产精品任我爽爆在线播放| 涩涩av在线| 免费日韩一区二区| 国产女人18毛片水真多18精品| 国产精品高颜值在线观看| 激情婷婷久久| 日韩高清欧美激情| 久久久久久夜| 丝袜国产日韩另类美女| 欧美激情综合| 国产视频一区欧美| 黄色网一区二区| 视频一区二区中文字幕| 国产一区二区三区四区| 日韩精品免费一区二区三区| 蜜臀久久久久久久| 精品欧美日韩精品| 日av在线不卡| 国产精品久久久久久久久妇女| 一区视频在线| 久久精品国产网站| 久久午夜精品| 国产成人调教视频在线观看| 日韩中文字幕区一区有砖一区| 美女视频网站久久| 蜜臀91精品一区二区三区| 久久69成人| 亚洲97av| 亚洲精品中文字幕乱码| 国产伦理久久久久久妇女| 亚洲电影在线| 麻豆精品蜜桃视频网站| 美女网站久久| 久久久久免费av| 国产精品黄色片| 久久99伊人| 欧美羞羞视频| 国产精品777777在线播放 | 喷白浆一区二区| 精品丝袜在线| 欧美1区2区3| 亚洲精品激情| 欧美特黄一级| 成人欧美一区二区三区的电影| 偷拍亚洲精品| 伊人影院久久| 日韩免费一区| 国产精品久久久久久妇女| 丝袜a∨在线一区二区三区不卡| www.九色在线| 欧美精品97| 91麻豆精品激情在线观看最新| 国产精品社区| 亚洲女同中文字幕| 亚洲高清久久| 日韩精品诱惑一区?区三区| 国产精品多人| 91精品国产经典在线观看| 久久亚洲风情| 日韩亚洲国产欧美| 欧美日韩第一| 三级小说欧洲区亚洲区| 国产v日韩v欧美v| 成人国产精品一区二区网站| 国产精品大片免费观看| 日韩av中文在线观看| 亚洲精品极品| 日韩中文av| 亚洲精品在线国产| 蜜臀久久99精品久久久久宅男| 国产精品美女久久久| 中文在线一区| 只有精品亚洲| 亚洲久久视频|