090. 编写一个函数,实现简单的性能测试工具
在 Python 中,可以使用 time
模块来实现一个简单的性能测试工具。这个工具可以帮助你测量代码片段的执行时间,从而评估其性能。以下是一个简单的性能测试工具的实现,支持测量函数的执行时间。
示例代码
以下代码实现了一个简单的性能测试工具,支持测量函数的执行时间。
import time
def measure_performance(func, *args, **kwargs):
"""
测量函数的执行时间
:param func: 要测量的函数
:param args: 函数的参数
:param kwargs: 函数的关键字参数
:return: 函数的执行时间(秒)
"""
start_time = time.time() # 记录开始时间
result = func(*args, **kwargs) # 调用函数
end_time = time.time() # 记录结束时间
execution_time = end_time - start_time # 计算执行时间
return execution_time, result
# 示例用法
def example_function(n):
"""示例函数,计算从 1 到 n 的和"""
return sum(range(1, n + 1))
if __name__ == "__main__":
n = 1000000
execution_time, result = measure_performance(example_function, n)
print(f"函数执行时间:{execution_time:.6f} 秒")
print(f"函数结果:{result}")
代码说明
测量函数执行时间:
-
使用
time.time()
获取当前时间(秒级时间戳)。 -
在调用目标函数之前和之后分别记录时间,计算执行时间。
支持任意函数和参数:使用 *args
和 **kwargs
支持传递任意参数和关键字参数到目标函数。
返回执行时间和函数结果:返回目标函数的执行时间和结果,方便后续分析。
示例输出
函数执行时间:0.012345 秒
函数结果:500000500000
注意事项
高精度时间测量:
-
如果需要更高精度的时间测量,可以使用
time.perf_counter()
或time.process_time()
。 -
time.perf_counter()
提供更高精度的计时器,适合测量短时间间隔。 -
time.process_time()
仅测量 CPU 时间,不包括等待时间。
多次执行取平均值:为了更准确地评估性能,可以多次执行目标函数并取平均值。
内存使用测量:如果需要测量内存使用情况,可以使用 memory_profiler
库。
扩展功能
如果你需要更复杂的性能测试工具,可以考虑以下内容:
多次执行取平均值:实现多次执行目标函数并取平均值的功能。
def measure_performance_multiple(func, *args, runs=5, **kwargs):
total_time = 0
results = []
for _ in range(runs):
start_time = time.time()
result = func(*args, **kwargs)
end_time = time.time()
total_time += end_time - start_time
results.append(result)
average_time = total_time / runs
return average_time, results
高精度时间测量:使用 time.perf_counter()
或 time.process_time()
提供更高精度的时间测量。
内存使用测量:使用 memory_profiler
库测量内存使用情况。
pip install memory_profiler
from memory_profiler import memory_usage
def measure_memory_usage(func, *args, **kwargs):
mem_usage = memory_usage((func, args, kwargs), max_usage=True)
return mem_usage[0]
性能报告:生成详细的性能报告,包括执行时间、内存使用等信息。
视频讲解
BiliBili: 视睿网络-哔哩哔哩视频 (bilibili.com)