gpt4 book ai didi

python - 在 Python 中自动测试性能的正确方法(适用于所有开发人员)?

转载 作者:太空狗 更新时间:2023-10-29 16:57:59 25 4
gpt4 key购买 nike

我们的 Python 应用程序(一个很酷的网络服务)有一套完整的测试(单元测试、集成测试等),所有开发人员在提交代码之前都必须运行这些测试。
我想向套件中添加一些性能测试,以确保没有人添加导致我们运行速度过慢的代码(对于慢的一些相当随意的定义)。
显然,我可以将一些功能收集到测试中,对其计时并与某个预定义的阈值进行比较。

棘手的要求:

  1. 我希望每个开发人员都能够在他的机器上测试代码(因 CPU 功率、操作系统(!Linux 和某些 Windows)和外部配置而异——Python 版本、库和模块是相同的)。测试服务器虽然通常是个好主意,但并不能解决这个问题。
  2. 我希望测试是DETERMINISTIC - 无论运行测试的机器上发生了什么,我都希望多次运行测试返回相同的结果。

我的初步想法:

  • 每次运行测试时,使用 timeit 并对系统进行基准测试。将性能测试结果与基准进行比较。
  • 使用 cProfile 来检测解释器以忽略“外部噪音”。我不确定我是否知道如何读取 pstats 结构,但我确信它是可行的。

其他想法?

谢谢!

塔尔。

最佳答案

查看 funkload - 这是一种将单元测试作为功能测试或负载测试运行的方式,以衡量您网站的性能。

另一个可以与 funkload 结合使用的有趣项目是 codespeed .这是一个内部仪表板,用于衡量您对代码所做的每次提交的代码库的“速度”,并显示随时间变化的趋势图。这假设您有许多可以运行的自动基准测试 - 但它可能是一种有用的方法,可以随着时间的推移对性能进行权威说明。到目前为止,我见过的 codespeed 的最佳用途是 speed.pypy.org网站。

至于您对确定性的要求 - 也许最好的方法是利用统计数据来发挥您的优势?自动运行测试 N 次,生成所有运行的最小值、最大值、平均值和标准差?看看这个 article on benchmarking对于这方面的一些指示。

关于python - 在 Python 中自动测试性能的正确方法(适用于所有开发人员)?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5510371/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com