本文主要是介绍python timeit-程序测试(汇总-全) tcy,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!
timeit-程序测试 2018/9/6
相对timeit 细粒度,profile 和 pstats 模块提供针对更大代码块的时间度量工具
简单的程序语句测试,包含输入参数。一般取测试结果的最小值作为结果。
-------------------------------------------------------------------------------
1.简单测试程序的运行时间
在一段程序的前后都用上time.time(),然后进行相减
-------------------------------------------------------------------------------
2.timeit
2.1.函数:
timeit.timeit(stmt ='pass',setup ='pass',timer = <default timer>,
number = 1000000,globals = None )
用途:
Timer用给定语句设置代码和计时器函数创建一个实例,用timeit()执行测试
全局变量参数指定要在其中执行代码的名称空间
参数:
stmt: 测试代码。字符串表达式,单个变量,函数。
setup: 这将stmt的环境传进去。比如各种import和参数什么的。
timer: 这个参数一般使用不到,具体使用可以参看文档。
timeit.repeat(stmt ='pass',setup ='pass',timer = <default timer>,repeat = 3,
number = 1000000,globals = None )
Timer用给定语句设置代码和计时器函数创建一个实例,用repeat()执行重复测试
全局变量参数指定要在其中执行代码的名称空间。
timeit.default_timer()
默认定时器time.perf_counter()
-------------------------------------------------------------------------------
2.2.class timeit.Timer(stmt ='pass',setup ='pass',timer = <timer function>,
globals = None )
小代码片段的定时执行速度类。
stmt和setup包含多个由";"或换行符分隔语句,不包含多行字符串文字。
默认在timeit的名称空间内执行; 可以通过传递一个名称空间给全局变量来控制。
说明:
和函数相比多了一个重复调用次数。
度量一条语句执行时间,用timeit()方法。
该语句和设置参数也可以采取的是不带参数的可调用的对象。
timeit(number = 1000000 )
主要语句的时间编号执行。
执行一次设置语句,返回多次执行主语句所需时间float秒
autorange(callback = None )
自动确定调用次数timeit()
repeat(repeat = 3,number = 1000000 )
重复调用timeit()次数
参数1指定调用多少次timeit();参数2指定timeit()测试次数。
-------------------------------------------------------------------------------
3.实例
import timeit
#-----------------------------------------------------------------------------
#测试语句1:timeit
# timeit(函数名_字符串,运行环境_字符串,number=运行次数)
a=timeit.timeit('id=a;name=b',setup='a=1000;b="Tom"',number=1000000)
print('1.1.testTime=',a)
#*******************************************
s='id=a;name=b'
a=timeit.timeit(stmt=s,setup='a=1000;b="Tom"',number=1000000)
print('1.2.testTime=',a)
#*******************************************
s = """\
id=a
name=b
"""
a=timeit.timeit(stmt=s,setup='a=1000;b="Tom"',number=1000000)
print('1.3.testTime=',a)
#*******************************************
#测试语句2:timeit.Timer
a=timeit.Timer('id=a;name=b','a=1000;b="Tom"').timeit(number=1000000)
print('1.4.testTime=',a)
#*******************************************
t=timeit.Timer('id=a;name=b','a=1000;b="Tom"')
a1=t.timeit(number=1000000)
a2=t.repeat(repeat = 3,number = 1000000)
print('1.5.testTime=',a1,a2)
#*******************************************
#-----------------------------------------------------------------------------
# 测试函数
#setup=传递一个包含导入语句
# 另一个选择传递globals=globals(),这会导致代码在当前的全局名称空间内执行。
*******************************************
#测试语句 :timeit
s='L = [i for i in range(n)]'
a=timeit.timeit(stmt=s,setup='n=100',number=100000)
print('2.0.testTime=',a)
#*******************************************
#测试函数
def test(n):
L = [i for i in range(n)]
#if __name__ == '__main__':
a=timeit.timeit("test(100)", setup="from __main__ import test",number=100000)
print('2.1.testTime=',a)
#*******************************************
a=timeit.timeit('test(100)',number=100000, globals=globals())
print('2.2.testTime=',a)
#*******************************************
#测试多个函数
def f(x):return x**2
def g(x):return x**4
def h(x):return x**8
a=timeit.timeit('[func(42) for func in (f,g,h)]',number=100000,globals=globals())
print('2.3.testTime=',a)
#*******************************************
------------------------------------------------------------------------------
#测试重复次数 timeit.repea
#repeat和timeit用法相似,多一个repeat参数(重复测试次数=3.),返回时间列表
a=timeit.repeat("test(100)", setup="from __main__ import test",number=100000,repeat=3)
print('3.1.testTime=',a,'min=',min(a))
#*******************************************
#测试重复次数 timeit.Timer
t=timeit.Timer(stmt ='test(n)',setup ='n=100',globals = globals())
a1=t.timeit(number=100000)
a2=t.repeat(repeat = 3,number = 100000)
print('3.2.testTime=',a1,a2,'min=',min(a2))
#-----------------------------------------------------------------------------
#>>>
#1.1.testTime= 0.04432365000000005
#1.2.testTime= 0.04307258300000005
#1.3.testTime= 0.044008316999999963
#1.4.testTime= 0.04538698299999999
#1.5.testTime= 0.044759738999999965 [0.04225173900000001, 0.041612761, 0.04221409500000006]
#2.0.testTime= 0.5714974949999999
#2.1.testTime= 0.531626156
#2.2.testTime= 0.534958423
#2.3.testTime= 0.2584878100000001
#3.1.testTime= [0.5270306009999999, 0.5233380219999999, 0.5257756219999998] min= 0.5233380219999999
#3.2.testTime= 0.5361430020000002 [0.5355201569999997, 0.5308390449999996, 0.5279976230000001] min= 0.5279976230000001
#>>>
-------------------------------------------------------------------------------
这篇关于python timeit-程序测试(汇总-全) tcy的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!