timeit模块

Python3中的timeit模块可以用来测试小段代码的运行时间。

 

stmt:用于传入要测试时间的代码,可以直接接受字符串的表达式,也可以接受单个变量,也可以接受函数。传入函数时要把函数申明在            当前文件中,然后在 stmt = ‘func()’ 执行函数,然后使用 setup = ‘from __main__ import func’, 用位置参数也行,就是直接加参                数,不加stmt键。

setup:传入stmt的运行环境,比如stmt中使用到的参数、变量,要导入的模块等。可以写一行语句,也可以写多行语句,写多行语句时要              用分号;隔开语句。不加这个参数的键也行。

注意上面连个参数,必须是字符串形式的。

number:要测试的代码的运行次数,默认100000次,对于耗时的代码,运行太多次会比较慢,此时建议自己修改一下运行次数

repeat:指测试要重复几次,每次的结果构成列表返回,默认3次。

import timeit

print(timeit.timeit(stmt='list(i**2 for i in normal_list)', setup='normal_list=range(10000)', number=10))
# 0.0472852
print(timeit.repeat(stmt='list(i**2 for i in normal_list)', setup='normal_list=range(10000)', repeat=2, 
                    number=10))
# [0.0384496, 0.03801339999999999]  相当于执行两次print

# 复合语句,用分号分开
print(timeit.timeit(stmt='list(i**2 for i in normal_list)', setup='a=10000;normal_list=range(a)', number=10))


# stmt是大段代码
foo = """
sum = []
for i in range(1000):
    sum.append(i)
"""

print(timeit.timeit(stmt=foo, number=100000))

# stmt是函数
def func():
    normal_list=range(10000)
    result = [i**2 for i in normal_list]
    return result


print(timeit.timeit("func()", setup="from __main__ import func", number=10))

下面用它来测试性能

import timeit

print(timeit.timeit('"-".join(str(n) for n in range(100))', number=10000))
# 0.3279042
print(timeit.timeit('"-".join((str(n) for n in range(100)))', number=10000))
# 0.3115535
print(timeit.timeit('"-".join([str(n) for n in range(100)])', number=10000))
# 0.28818730000000004
print(timeit.timeit('"-".join(map(str, range(100)))', number=10000))
# 0.24173299999999998

得出结论就是以后就用map了。。。。。。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值