Python3中的timeit模块可以用来测试小段代码的运行时间。
stmt:用于传入要测试时间的代码,可以直接接受字符串的表达式,也可以接受单个变量,也可以接受函数。传入函数时要把函数申明在 当前文件中,然后在 stmt = ‘func()’ 执行函数,然后使用 setup = ‘from __main__ import func’, 用位置参数也行,就是直接加参 数,不加stmt键。
setup:传入stmt的运行环境,比如stmt中使用到的参数、变量,要导入的模块等。可以写一行语句,也可以写多行语句,写多行语句时要 用分号;隔开语句。不加这个参数的键也行。
注意上面连个参数,必须是字符串形式的。
number:要测试的代码的运行次数,默认100000次,对于耗时的代码,运行太多次会比较慢,此时建议自己修改一下运行次数
repeat:指测试要重复几次,每次的结果构成列表返回,默认3次。
import timeit
print(timeit.timeit(stmt='list(i**2 for i in normal_list)', setup='normal_list=range(10000)', number=10))
# 0.0472852
print(timeit.repeat(stmt='list(i**2 for i in normal_list)', setup='normal_list=range(10000)', repeat=2,
number=10))
# [0.0384496, 0.03801339999999999] 相当于执行两次print
# 复合语句,用分号分开
print(timeit.timeit(stmt='list(i**2 for i in normal_list)', setup='a=10000;normal_list=range(a)', number=10))
# stmt是大段代码
foo = """
sum = []
for i in range(1000):
sum.append(i)
"""
print(timeit.timeit(stmt=foo, number=100000))
# stmt是函数
def func():
normal_list=range(10000)
result = [i**2 for i in normal_list]
return result
print(timeit.timeit("func()", setup="from __main__ import func", number=10))
下面用它来测试性能
import timeit
print(timeit.timeit('"-".join(str(n) for n in range(100))', number=10000))
# 0.3279042
print(timeit.timeit('"-".join((str(n) for n in range(100)))', number=10000))
# 0.3115535
print(timeit.timeit('"-".join([str(n) for n in range(100)])', number=10000))
# 0.28818730000000004
print(timeit.timeit('"-".join(map(str, range(100)))', number=10000))
# 0.24173299999999998
得出结论就是以后就用map了。。。。。。