python:timeit和传递参数的语法问题

时间:2015-06-24 16:08:57

标签: python big-o timeit

我想测试下面的test1(n)函数的Big-O性能,所以我试图使用timeit来查看性能。但是,现在的代码并没有产生任何东西......

我认为问题出在t1 = timeit.Timer行,参数没有传入test1(n)函数。我不知道如何解决它。有帮助吗?谢谢!

def test1(n):
    for i in range(n):
        for j in range(n):
            k = 2 + 2


if __name__ == '__main__':
    import timeit

    for i in range(1000000, 100000001, 1000000):
        t1 = timeit.Timer("test1(i)", setup="from __main__ import test1")
        x = list(range(i))
        tm = t1.timeit(number=1000)
        print x
        print("%15.5f" % tm)

编辑:

结果就是它的二次方  为O(n ^ 2)enter image description here

1 个答案:

答案 0 :(得分:1)

您还需要导入i

t1 = timeit.Timer("test1(i)", setup="from __main__ import test1, i")

必须明确导入要测试的语句中使用的每个名称。定时代码不会触及名称x(绑定到i的范围),打印它不会有任何区别。