![f8cb77ad36b370372a06c6efc8435c82.gif](https://i-blog.csdnimg.cn/blog_migrate/acf98492e6be95083feec6122c0073cb.gif)
![9bef835e378692a68630e5237ea382f7.png](https://i-blog.csdnimg.cn/blog_migrate/b2100fc5244968e073e4bc2e9c113979.png)
在编写代码的过程中,为了提高代码的运行速度,我们常常需要对书写的python代码进行性能测试,而代码性能高低的直接反馈之一就是电脑运行代码所需要的时间。今天小编在这里给大家介绍几种常用的测试代码运行速度的方法。
![4f6dd5cfdb02ed3e7d9468a823a74cf1.png](https://i-blog.csdnimg.cn/blog_migrate/96beac2ea64da953655415224ddf7977.jpeg)
![4a9fa886349c54aab4663c5065788ced.png](https://i-blog.csdnimg.cn/blog_migrate/bbc90e1fe130e7904bb767fa1cd4e5e5.png)
![4172f918dc597c96ff781aaf7917219d.png](https://i-blog.csdnimg.cn/blog_migrate/419def65ff7d5d599244ac37541ca1a4.jpeg)
第一种:使用time模块对代码的运行时间进行统计
![495dd84912c6aa5debcfd4f4207be61f.png](https://i-blog.csdnimg.cn/blog_migrate/031f2b75d57d67cc1fa3d93df086586d.jpeg)
效果如下:
![c694f6ed34479d2d739e632d8f5473c7.png](https://i-blog.csdnimg.cn/blog_migrate/56c2846a188f6c73463f53b5836053e4.jpeg)
我们采用time 模块给所要测试的代码的前后加上时间戳,一个记为start_time,一个记作end_time,最后代码块的运行时间为end_time-start_time,单位为s(秒)。当然在python中还有许多的记录时间的模块,这里不做过多讨论,均类似于time模块,实现思路上一致,代码实现上大同小异。
第二种:使用IPython的Built-in magic commands,%time
![cfffb3b9a3ca88cef858f86becbc6ce0.png](https://i-blog.csdnimg.cn/blog_migrate/8418d567216910370a76a9c35c3d303d.jpeg)
这个类定义是可以去掉的,并不会影响最终的结果,%time 后面加上想要计算时间的代码,然后编译器就会在运行后自动给出所测试代码的运行时间,但是经过测试,%time方法测出的时间并不准确,时间波动范围非常大,这个是很好理解的,因为计算机每时每刻都在处理一些进程,也就是说计算机的运行状态每时每刻都是不同的,所以在不同的时刻测试同一段代码的运行时间也会得到不同的结果。
第三种:用IPython的另一个Built-in magic commands,%timeit,使用方法类似于%time
![252acccf36229a091cd41a04b30b2b76.png](https://i-blog.csdnimg.cn/blog_migrate/4302b1e149b8d498f1ff1a2598e49757.jpeg)
我们可以看到得到的结果是:每个循环8.53 ms±452 µs(平均±标准偏差,共运行7次,每个循环100个)%timeit相比于%time,%timeit会多次执行测试代码,并且会取它们运行时间的平均值,并且还会计算出它们的标准差,因此这种计算方法计算的结果相对于使用%time执行测试代码一次是比较准确的。
第四种:导入timeit模块来计算代码块的执行时间
![86fa8f20eca2e46017ea281f709f3aa4.png](https://i-blog.csdnimg.cn/blog_migrate/936beeca1a25ef2b3026c1f25b46dc1c.jpeg)
效果如下:
![15031103704c646cd268581117932af6.png](https://i-blog.csdnimg.cn/blog_migrate/1d9d5f8f34137dbf8a325967f93ec605.jpeg)
导入timeit模块后使用timeit.timeit()来测试想要测试的代码,并且代码以string的形式进行输入,并且需要设定number值,设定测试的该段代码需要执行的次数,最终我们得到0.05363089999991644,单位是s(秒),与内置魔法方法%timeit方法不同的是虽然也是多次计算,但是最终获取的时间是n次执行代码所需的总时间而不是执行一次的时间。
以上,放进自己的代码里试试看吧~
![0e84a3e2c9809c9ceb7886cf243addc5.gif](https://i-blog.csdnimg.cn/blog_migrate/d3741c3dffeb7fa4401b68e410b761b1.gif)