使用python怎样做基准测试?很多朋友可能对于基准测试不是很了解,对此,这篇文章给大家分享有关python怎样做基准测试的内容。小编觉得挺实用的,因此分享给大家做个参考,接下来一起跟随小编看看吧。
基准测试属于性能测试的一种,用于评估和衡量软件的性能指标。我们可以在软件开发的某个阶段通过基准测试建立一个已知的性能水平,称为"基准线"。当系统的软硬件环境发生变化之后再进行一次基准测试以确定那些变化对性能的影响。 这是基准测试最常见的用途。
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是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() 参数说明。
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
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]
需要注意:
运行测试用例:
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基准测试的内容,可以关注其他相关文章。
文本转载自脚本之家
免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:mmqy2019@163.com进行举报,并提供相关证据,查实之后,将立刻删除涉嫌侵权内容。
长按识别二维码并关注微信
更方便到期提醒、手机管理