欢迎访问宙启技术站
智能推送

Python中的timeit()函数用来评估代码性能

发布时间:2023-06-15 09:26:21

Python提供了一个称为timeit的模块,该模块允许测量代码的执行时间。

timeit()函数旨在解决一种常见的问题,即如何确定代码的性能。 “性能”在计算机科学中意味着代码运行的速度有多快,这通常是通过衡量代码完成相同任务需要多长时间来衡量。

timeit()函数使用一个计时器,它测量给定代码段(称为“语句”)的执行时间。在计时器运行时,执行语句1000000次,并返回所花费的时间(以秒为单位)。

例如,让我们假设我们要比较两个Python函数如何处理字符串。第一个函数是使用+运算符连接5个字符串,而第二个函数使用join()方法将5个字符串连接成一个字符串。让我们考虑以下代码:

import timeit

def test1():
    return ' '.join(['hello']*5)

def test2():
    return 'hello ' + 'hello ' + 'hello ' + 'hello ' + 'hello'

print('join()', timeit.timeit(test1, number=1000000))
print('concatenation', timeit.timeit(test2, number=1000000))

output:

join() 0.08666149033080924
concatenation 0.2416594644379611

我们可以看到,使用join()方法比使用+运算符连接字符串要快得多。

timeit()函数通过执行多次语句来获得平均值和标准偏差,从而帮助减少测试误差。默认情况下,它会执行1,000,000次语句,但您可以使用number参数设置执行次数。

timeit()函数可用于测试单个函数或一系列语句。您还可以控制分别运行每个语句的次数。

timeit()函数可以搜索“setup”代码段,这是在测量之前执行的代码。这是方便的,因为它允许您预热您的代码,从而消除由于缓存文件和其他因素而导致的抖动。

这是一个例子,它评估了一个非常简单的函数的平均执行时间,该函数将列表中的所有元素添加在一起:

import timeit

def sum1():
    nums = [i for i in range(1000)]
    total = 0
    for i in nums:
        total += i
    return total

print(timeit.timeit(sum1, number=10000))

output:

0.039993296049386024

在这个非常简单的例子中,timeit()函数仅需要大约0.004秒来执行该函数10000次,并返回平均值。在实际情况下,timeit()函数通常需要更长时间来执行完整的测试。

总之,timeit()函数是Python中用于测试代码性能的高效工具。在使用时注意设置适当的参数,以获得最准确的结果。