python: timeit 和传递参数的语法问题
python: syntax issue with timeit and passing arguments
我想测试下面的 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)?
您还需要导入 i
:
t1 = timeit.Timer("test1(i)", setup="from __main__ import test1, i")
被测试语句中使用的每个名称都必须显式导入。定时代码未触及名称 x
(绑定到 i
的范围),打印它不会有任何区别。
我想测试下面的 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)?
您还需要导入 i
:
t1 = timeit.Timer("test1(i)", setup="from __main__ import test1, i")
被测试语句中使用的每个名称都必须显式导入。定时代码未触及名称 x
(绑定到 i
的范围),打印它不会有任何区别。