timeit 模块: 测试时间性能

本文介绍Python中timeit模块的使用方法及其优势。解释了为何选择timeit而非time或timing模块,并提供了timeit模块中timeit和repeat两种主要计时方法的详细参数说明及示例代码。
摘要由CSDN通过智能技术生成

 

起因:为什么是模块timeit ,而不用time模块/timing模块?

模块timeit (而不用time模块/timing模块)

time.clock() 精度高,还是使用 time.time() 精度更高,要视乎所在的平台来决定。总概来讲,在 Unix 系统中,建议使用 time.time(),在 Windows 系统中,建议使用 time.clock()。

python提供timeit.default_timer()默认基于平台选择精度高的记录时间的方法。


两个最重要的计时方法:

1. timeit

timeit.timeit(stmt='pass'setup='pass'timer=<default timer>number=1000000)

2. repeat

timeit.repeat(stmt='pass'setup='pass'timer=<default timer>repeat=3number=1000000)

stmt='pass':要测试时间的语句, 比如“"test()”

setup='pass':测试语句需要的前提环境:“from __main__ import test”

 timer=<default timer>:选择时间计时器,默认是timeit.default_timer();

 repeat=3:需要timieit的次数;

number=1000000:测试语句需要循环的次数(算timieit一次);

 

示例:

官方样例:

>>> importtimeit

>>> timeit.timeit('"-".join(str(n) for n in range(100))', number=10000)

0.8187260627746582

>>> timeit.timeit('"-".join([str(n) for n in range(100)])', number=10000)

0.7288308143615723

>>> timeit.timeit('"-".join(map(str, range(100)))', number=10000)

0.5858950614929199

 自己尝试:1+...+100的程序,

执行程序

输出结果

timeit.timeit("sum(range(1,100001))", number=1000)

3.5515526547816165

timeit.repeat("sum(range(1,100001))", repeat=5, number=1000)

[3.55720355964975, 3.5583667799910472, 3.7193515877468855, 3.710453440883967, 3.720163398245589]

 

 备注:

注释1:模块timeit提供的方法,官方也提供同名类timeit以及方法。

官方网址:https://docs.python.org/2/library/timeit.html

注释2:timeit.default_timer()是自然时间,不是CPU时间。测量CPU时间,比较精准,通过比较程序运行前后的CPU时间差,得出程序运行的CPU时间。测量自然/真实/时钟时间,也就是通常的类似掐表计时。

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值