「这是我参与2022首次更文挑战的第14天,活动详情查看:2022首次更文挑战」
time
我们预估python代码的执行时间,来验证我们程序的效率如何,最常用的方法是调用python的time模块,在程序开始执行之前存一个start_time, 在结束的时候存一个end_time, 前后时间进行相减就得到一个run_time,但这个时间不是很精准,如果想要更精准一点,而且只是想验证简单且运行速度快的代码块,那么推荐使用python另一个内置模块timeit
timeit
先做一个实验,python创建列表有两种方式,一种是直接声明list1=[] , 另外一种是调用list函数list2=list(),那哪种方式的效率高一点呢
我们用平常的方式先试一下,如果本地没有python编译环境,推荐使用Jupyter Notebook 我今天用的就是这个
用time方法执行一次的结果
我们却得出这么一个结果,但按道理说[]要比list()的效率要高,因为list()是一个function call,Python的function call会创建stack,并且进行一系列参数检查的操作,比较费时,反观[]是一个内置的C函数,可以直接被调用。这结果很不对啊。
用timeit
我们试试timeit,看结果如何
从结果看,跟预期的结果是一致的,这个timeit为什么比较准确呢,是因为timeit 运行代码片段数百万次(默认值为 1000000),以便您获得统计上最相关的代码执行时间测量!原英文(timeit runs your snippet of code millions of times (default value is 1000000) so that you get the statistically most relevant measurement of code execution time!)
所以当我们需要快速的计算比较代码的执行时间时,timeit还是很靠谱的。