首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >在python中对不同输入(不同大小)的函数进行有效的基准测试

在python中对不同输入(不同大小)的函数进行有效的基准测试
EN

Stack Overflow用户
提问于 2019-12-12 14:35:56
回答 1查看 869关注 0票数 2

我试图在不同大小的输入上对函数进行基准测试。

例如,我有一个函数something(array),它将可变长度的numpy数组作为输入和可能的参数列表( args = [np.random.rand(3, 2, i) for i in range(1,1000)] )。我现在要做的是测试something需要依赖于输入的时间。

我目前所做的工作如下:

代码语言:javascript
复制
def iterator(ys):

    times = []
    for i in range(len(ys)):
        start = timer()
        test = something(ys[i])
        end = timer()
        times.append(end - start)

    return times

这样我就能得到我想要的结果。问题是,使用这种方法,我不会得到任何关键数字,如方差或平均每个输入大小。我还可以执行第二个循环,运行几次iterator,并使用结果计算关键数字,但如果存在,我宁愿使用已建立的方法。

我试图应用pytest-benchmark (https://pytest-benchmark.readthedocs.io/en/stable/),但无法找到将参数列表传递给函数的方法。

也许你们中的一些人对此有一个很好的解决方案!

EN

回答 1

Stack Overflow用户

发布于 2019-12-12 14:39:38

最方便的方法是使用Ipython行魔术%timeit或单元格魔术%%timeit执行定时测量。我通常定义要在循环中测试和运行的输入数据大小:

代码语言:javascript
复制
def list_search(lst, item):
    for el in lst:
        if el == item:
            return True
    return False

for n in (100, 1000, 10000, 100000):
    data = list(range(n)) 
    %timeit list_search(data, data[-1])

%timeit函数接受多个参数来修改其行为:

%timeit [-n -r -t_c -q -p -o]语句

选项:-n:在循环中执行给定的语句时间。如果不提供,则确定以获得足够的精度。

-r:重复次数,每个重复由循环组成,并取得最佳效果。违约:7

(来自https://ipython.readthedocs.io/en/stable/interactive/magics.html)

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/59306904

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档