投稿  收藏 
使用timeit计算程序运行时间

【问题描述】

斐波那契数列指的是这样一个数列:1,1,2,3,5,8,…这个数列的前两项都为1,从第3项开始,每一项都等于前两项之和。现有两个不同的实现算法,请测试它们的运行时间。

使用timeit计算程序运行时间运行结果:

fib1:0.22967639999999995

fib2:4.499999999962867e-06

备注:第一个函数的运行时间为0.22967639999999995秒,第二个函数的运行时间为4.499999999962867e-06秒,第二个函数的运行速度是第一个函数的50000倍。

【程序代码】

使用timeit计算程序运行时间

【代码分析】

①:从timeit模块导入timeit( )函数,这个函数可以测试语句的运行时间,单位为秒。

②:调用timeit( )函数测试语句的运行时间。具体参数解释如下:

使用timeit计算程序运行时间stmt:表示要运行的语句,它可以是字符串表示的语句,也可以是一个可调用对象(函数名、lambda表达式或其他可调用对象),此处用lambda表达式以30为实参调用函数fib1。实现同样的功能也可以写成stmt="fib1(30)"。

使用timeit计算程序运行时间setup:建立语句运行所需要的环境,如导入模块、定义函数、定义变量、初始化变量值等。在本例中要运行的代码包括了__main__.fib1,所以要先导入模块__main__。

使用timeit计算程序运行时间number:表示代码运行的次数,本例中只运行一次,如果运行多次,将显示多次运行代码的总时间。

【优化提升】

除了可以调用timeit( )函数来测试代码的执行时间外,timeit模块还提供了命令行界面,可以通过在PyCharm窗口底部的Terminal面板中输入命令来测试代码执行时间。命令执行结果如图11-3-1所示。

使用timeit计算程序运行时间

图11-3-1 在终端中启动timeit

命令python -m timeit -n 10 -r 5 -s "m=__import__('a11_3_1使用timeit计算程序运行时间')" 'm.fib2(30)'中,-m timeit表示启动timeit模块,-n 10表示在一次timeit函数调用中执行10次指定代码,默认为1 000 000次;r为重复执行timeit函数的次数,-r 5表示重复执行5次,默认值为5;-s表示在检测时间之前需要运行的代码,这里运行的是m=__import__('a11_3_1使用timeit计算程序运行时间'),它表示导入模块'a11_3_1使用timeit计算程序运行时间',并为其命名为m;最后一个数是要检测运行时间的代码,此处为“m.fib2(30)”。最后结果表示,每一次检测运行了10次代码,5次检测的最快速度为每次运行6.08usec(微秒)。

【技术全貌】

在timeit模块中,除了timeit方法外还有其他方法,在检测程序运行时间时也可以使用,见表11-3-1。命令界面中也有其他选项可以选用,见表11-3-2,也可以扫描二维码查阅官网文档。

表11-3-1 timeit模块的方法

使用timeit计算程序运行时间

表11-3-2 timeit命令行界面选项

使用timeit计算程序运行时间

关 键 词

程序运行时间

相关教程

提示声明

  • 免责声明:本站资源均来自网络或者用户投稿,仅供用于学习和交流:如有侵权联系删除!

猜你喜欢