简单的测试python代码,可以采用timeit方法。

该模块提供了一种简单的方法来计算一小段 Python 代码的耗时。

它有 命令行界面 以及一个 可调用 方法。

它避免了许多用于测量执行时间的常见陷阱。


运行环境 Runtime environment

1
2
3
操作系统: Windos10  
IDE: webStrom 2021.3.1 x64
语言: Python 3.9.1

背景

开发过程中,时而需要优化运行效率,提高代码整体的质量。

代码段运行时间,是优化代码的一个直观指标。

大段的代码运行时间测试,可以采用python的装饰器特性,

但是如果是小段的代码,可以使用原生的timeit模块,来达到快速测试的目的。

代码

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28

import timeit

# 测试使用三种方式进行同一种for循环的耗时对比

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

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

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


# 多行字符串示例
example = """
temp = ""
for i in range(100):
temp +=i+"-"
"""

# 多项传参示例
timeit.timeit("filter(None, your_list)", 'your_list= 10*["a", "b", "", "", "c", "", "d", "e", "f", "", "g"]', number = 1000)

# 第一,第二参数都要用字符串,这要注意的。
# 第二个参数,是setup,也就是准备的数据。
# 第三个参数,number 表示执行 number 次其 timeit() 方法

总结

以字符串书写python代码,并给timeit方法传值。

如果是多行的代码,可以采用python多行字符串来传值即可

从测试结果,也可以看出各类for循环的性能。

map函数 优于 列表生成式 优于 普通for循环。