婷婷综合国产,91蜜桃婷婷狠狠久久综合9色 ,九九九九九精品,国产综合av

主頁 > 知識庫 > python如何進行基準測試

python如何進行基準測試

熱門標簽:蘇州電銷機器人十大排行榜 電信營業廳400電話申請 溫州旅游地圖標注 外呼不封號系統 江蘇房產電銷機器人廠家 幫人做地圖標注收費算詐騙嗎 荊州云電銷機器人供應商 遼寧400電話辦理多少錢 悟空智電銷機器人6

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

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

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

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

基準(benchmarking)測試工具

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

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

import random


def 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


def 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 arr


if __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.py
5.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.json
Total duration: 15.9 sec
Start date: 2021-04-02 00:17:18
End date: 2021-04-02 00:17:36
Raw value minimum: 162 ms
Raw value maximum: 210 ms

Number of calibration run: 1
Number of run with values: 20
Total number of run: 21

Number of warmup per run: 1
Number of value per run: 3
Loop iterations per value: 2^15
Total number of values: 60

Minimum:         4.94 us
Median +- MAD:   5.63 us +- 0.12 us
Mean +- std dev: 5.63 us +- 0.31 us
Maximum:         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) -- maximum

Number of outlier (out of 5.07 us..6.25 us): 6

pytest-benchmark

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

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

from demo import bubble_sort


def 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 / Mean
1 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:\github\test-circle\article\code\benchmark_20210401_165958.svg

圖片如下:

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

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

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

您可能感興趣的文章:
  • python測試框架unittest和pytest區別
  • python使用pytest接口自動化測試的使用
  • python 如何用 Hypothesis 來自動化單元測試
  • python 如何在測試中使用 Mock
  • python 基于DDT實現數據驅動測試
  • Python自動化測試基礎必備知識點總結
  • Python3 + Appium + 安卓模擬器實現APP自動化測試并生成測試報告
  • 基于Python的接口自動化unittest測試框架和ddt數據驅動詳解
  • Appium+Python實現簡單的自動化登錄測試的實現

標簽:喀什 景德鎮 三沙 臺灣 欽州 濟南 黃山 宿遷

巨人網絡通訊聲明:本文標題《python如何進行基準測試》,本文關鍵詞  python,如何,進行,基準,測試,;如發現本文內容存在版權問題,煩請提供相關信息告之我們,我們將及時溝通與處理。本站內容系統采集于網絡,涉及言論、版權與本站無關。
  • 相關文章
  • 下面列出與本文章《python如何進行基準測試》相關的同類信息!
  • 本頁收集關于python如何進行基準測試的相關信息資訊供網民參考!
  • 推薦文章
    婷婷综合国产,91蜜桃婷婷狠狠久久综合9色 ,九九九九九精品,国产综合av
    精品美女在线播放| 在线精品亚洲一区二区不卡| 一区二区三区鲁丝不卡| 亚洲国产电影在线观看| 欧美激情一区在线| 国产视频911| 日本一区二区三区国色天香 | 欧美精品一区二区高清在线观看| 欧美精品在线视频| 欧美变态tickle挠乳网站| 欧美不卡视频一区| 国产婷婷一区二区| 中文字幕在线不卡| 亚洲午夜精品网| 青青草国产精品亚洲专区无| 国产一区二区在线观看免费| 成人av资源网站| 色综合久久88色综合天天免费| 日本高清不卡视频| 欧美电影免费观看高清完整版在线观看 | 欧美国产在线观看| 中国色在线观看另类| 一区二区免费在线播放| 人妖欧美一区二区| 成人午夜在线视频| 一本一道综合狠狠老| 91精品国产综合久久小美女| 国产日韩av一区二区| 亚洲一级二级三级在线免费观看| 亚洲444eee在线观看| 国产精品资源站在线| 日本韩国一区二区| 久久人人超碰精品| 亚洲午夜精品网| 成人三级在线视频| 6080国产精品一区二区| 国产精品人人做人人爽人人添| 亚洲成人av免费| 成人av在线电影| 欧美丰满少妇xxxxx高潮对白| 26uuu精品一区二区在线观看| 一个色综合av| 国产黄色成人av| 欧美一区2区视频在线观看| 中文字幕成人在线观看| 日本不卡一二三| 一本大道av伊人久久综合| 亚洲精品在线免费播放| 性欧美大战久久久久久久久| 国产精华液一区二区三区| 欧美一区二区三区在线电影| 亚洲欧美另类在线| 国产精品小仙女| 精品欧美一区二区久久| 水野朝阳av一区二区三区| 97成人超碰视| 欧美极品aⅴ影院| 国产精品一区二区在线看| 欧美高清视频一二三区 | 欧美成人video| 亚洲午夜久久久久久久久久久 | 夜夜揉揉日日人人青青一国产精品| 国产精品一区二区久久不卡 | 美女脱光内衣内裤视频久久影院| 91亚洲精品一区二区乱码| 久久婷婷色综合| 国产真实乱子伦精品视频| 欧美军同video69gay| 亚洲高清在线视频| 日本韩国一区二区| 亚洲综合免费观看高清在线观看| 成人高清伦理免费影院在线观看| 久久免费精品国产久精品久久久久| 麻豆精品视频在线观看视频| 91精品国产综合久久香蕉麻豆| 日韩精品亚洲一区| 日韩一区二区免费视频| 九色porny丨国产精品| 精品国内二区三区| 国产麻豆视频一区二区| 国产亚洲一区二区三区| 成人激情午夜影院| 中文字幕在线观看不卡| 99久久精品国产一区| 亚洲视频精选在线| 欧美日韩免费观看一区三区| 亚洲主播在线观看| 欧美一区二区三区在线看| 青青草成人在线观看| 久久只精品国产| 99久久精品国产一区二区三区| 亚洲欧美日韩国产成人精品影院| 91福利社在线观看| 日韩不卡一区二区| 久久精品亚洲一区二区三区浴池| www.日本不卡| 亚洲成人综合在线| 久久久午夜电影| 色偷偷一区二区三区| 三级久久三级久久久| 国产欧美日韩中文久久| 欧美午夜精品久久久| 久久se这里有精品| 中文字幕制服丝袜一区二区三区 | 一本色道亚洲精品aⅴ| 日韩在线一二三区| 久久无码av三级| 欧美亚洲动漫制服丝袜| 国产精品一区二区三区99| 一区二区三区在线观看网站| 日韩美女天天操| 99久久婷婷国产| 久久黄色级2电影| 综合电影一区二区三区| 精品毛片乱码1区2区3区| 91麻豆免费看| 国产在线精品一区在线观看麻豆| 亚洲另类中文字| 精品国产一区二区国模嫣然| 欧美在线999| 成人小视频免费在线观看| 久久精品999| 亚洲午夜三级在线| 成人欧美一区二区三区白人| 久久久蜜桃精品| 欧美日韩国产首页| 在线精品视频免费播放| 不卡视频免费播放| 国产精品456露脸| 另类小说欧美激情| 美女一区二区三区| 亚洲成a人v欧美综合天堂 | 欧美老女人第四色| 色综合久久综合| 91视频在线看| 成人av免费网站| 成人精品国产福利| 国产成人av资源| 国产一区亚洲一区| 国产制服丝袜一区| 韩日av一区二区| 久久91精品国产91久久小草| 美女视频一区在线观看| 视频一区欧美精品| 丝袜诱惑制服诱惑色一区在线观看| 一区二区三区欧美| 亚洲国产一区二区在线播放| 亚洲一区二区美女| 亚洲一区免费在线观看| 亚洲伊人色欲综合网| 亚洲一区成人在线| 亚洲丰满少妇videoshd| 天天色天天操综合| 免费观看日韩电影| 韩国毛片一区二区三区| 国产一区在线观看视频| 高清在线成人网| 91论坛在线播放| 欧美日韩精品一区二区在线播放| 欧美色国产精品| 日韩欧美国产电影| 337p粉嫩大胆噜噜噜噜噜91av| 国产欧美精品一区二区色综合| 国产精品久久三| 一区二区三区欧美在线观看| 亚洲18影院在线观看| 极品少妇一区二区| 国产99精品在线观看| 在线免费观看日本一区| 欧美一区二区精品久久911| 欧美成人一区二区| 亚洲图片另类小说| 日韩国产欧美一区二区三区| 久久精品国产精品亚洲红杏| 成人一区二区视频| 欧美日韩日日夜夜| 久久亚洲欧美国产精品乐播| 18涩涩午夜精品.www| 肉色丝袜一区二区| 国产传媒日韩欧美成人| 日本韩国欧美一区| 久久奇米777| 亚洲一线二线三线视频| 久久国产精品一区二区| av福利精品导航| 精品国产一区久久| 洋洋成人永久网站入口| 国产在线一区二区综合免费视频| 日本久久电影网| 国产午夜亚洲精品不卡| 日韩在线一二三区| 97久久超碰国产精品电影| 欧美一卡在线观看| 亚洲综合一区二区三区| 高清不卡一区二区在线| 制服.丝袜.亚洲.中文.综合| 亚洲同性同志一二三专区| 九九**精品视频免费播放| 欧洲国内综合视频| 亚洲欧美日韩中文字幕一区二区三区|