timeit.timeit("A0([randint(1,256) * (-1) ** randint(1,2) for j in range("+str(n)+")])", setup="from HW2 import A0", number=1000000)
我想测量 A0 算法在大小为 n 的列表上完成其工作所需的时间,但我找不到生成列表然后将其作为变量传递给 timeit.timeit(.. 。) 方法。计时器是否仅测量 A0 完成所需的时间,还是列表生成也包含在测量中?
它将测量语句中所有内容的执行时间(第一个 arg ),因此如果您只想测量对 A0 的调用,那么列表创建将扭曲结果。
尝试在设置中创建列表:
timeit.timeit("A0(aList)", setup="from HW2 import A0; aList = [randint(1,256) * (-1) ** randint(1,2) for j in range("+str(n)+")] ", number=1000000)
该列表只会在计时器开始时创建一次,并且不会包含在计时中。
将包括列表生成时间(调用 timeit 时引号之间的任何内容)。