【记录】Python|Python3程序测试速度的整个流程、方法对比和选取方式

参考:Python3.7中time模块的time()、perf_counter()和process_time()的区别

其他的博客太!长!了!我实在看不下去了,每次都不记得什么场景用什么函数。
让我来用表格总结一下各个函数的使用场景、特性。
并附上分别的测试速度的过程的样例代码。

使用场景、特性

这个表格提供了这些函数在不同方面的详细对比,方便根据具体需求选择合适的函数。

函数 使用场景 返回类型 精度 包含sleep时间 平台依赖性 特定点时间参考 特殊用途 最早支持版本 性能
time.time() 时间格式化,测试代码时间 浮点数 取决于系统 获取当前时间的时间戳 Python 初始版本 一般
time.time_ns() 时间格式化,测试代码时间 整数 非常高精度 获取当前时间的时间戳,以纳秒为单位 Python 3.7
time.perf_counter() 测试代码时间 浮点数 高精度 性能测试和基准测试 Python 3.3 非常高
time.perf_counter_ns() 测试代码时间 整数 非常高精度 短时间间隔计时,以纳秒为单位 Python 3.7 非常高
time.process_time() 性能分析和优化 浮点数 适合CPU时间测量 精确的CPU时间分析和优化 Python 3.3
time.process_time_ns() 性能分析和优化 整数 非常高精度 精确的CPU时间分析和优化,以纳秒为单位 Python 3.7 非常高
timeit.timeit() 微基准测试 浮点数 取决于代码 重复执行小段代码的性能测试 Python 2.6
time.clock() (已废弃) 性能分析(在Python 3.3以后废弃) 浮点数 取决于系统 CPU时间测量 Python 初始版本 中等(现已废弃)

这个表格涵盖了Python中常用的几种测量代码运行速度的函数及其特性,可供选择最合适的工具进行性能测试。需要注意的是,time.clock()函数在Python 3.3及以后的版本中已被废弃,不建议使用。并且,性能评估是相对的,并且可能受到具体使用场景和系统配置的影响

在这个表格中,系统时间调整影响表示函数返回的时间值是否可能受到系统时间更改的影响,适用场景是函数最典型的使用情境,特定点时间参考表示函数的时间计数是否从某个特定的时间点(如系统启动时)开始计算。这样的分类提供了更清晰的视角来理解和选择这些函数。

其中,由于 time.time_ns() 使用整数而不是浮点数,它还减少了与浮点数运算相关的精度损失和计算开销。整数运算通常比浮点数运算更快且更精确,这进一步提高了其性能表现。因此,在需要极高精度和性能的场合,time.time_ns() 是更优的选择。

样例代码

这里是使用Python中的不同时间测量函数来测试代码执行时间的样例代码:

  1. time.time():

    import time
    
    start = time.time()
    # 插入要测试的代码
    time.sleep(1)  # 示例:休眠1秒
    end = time.time()
    
    print("执行时间:", end - start, "秒")
    
  2. time.perf_counter():

    扫描二维码关注公众号,回复: 17237115 查看本文章
    import time
    
    start = time.perf_counter()
    # 插入要测试的代码
    time.sleep(1)  # 示例:休眠1秒
    end = time.perf_counter()
    
    print("执行时间:", end - start, "秒")
    
  3. time.process_time():

    import time
    
    start = time.process_time()
    # 插入要测试的代码
    for _ in range(1000000):  # 示例:执行一个循环
        pass
    end = time.process_time()
    
    print("CPU执行时间:", end - start, "秒")
    
  4. time.perf_counter_ns():

    import time
    
    start = time.perf_counter_ns()
    # 插入要测试的代码
    time.sleep(1)  # 示例:休眠1秒
    end = time.perf_counter_ns()
    
    print("执行时间:", end - start, "纳秒")
    
  5. time.process_time_ns():

    import time
    
    start = time.process_time_ns()
    # 插入要测试的代码
    for _ in range(1000000):  # 示例:执行一个循环
        pass
    end = time.process_time_ns()
    
    print("CPU执行时间:", end - start, "纳秒")
    
  6. time.time_ns():

    import time
    
    start = time.time_ns()
    # 插入要测试的代码
    time.sleep(1)  # 示例:休眠1秒
    end = time.time_ns()
    
    print("执行时间:", end - start, "纳秒")
    
  7. timeit.timeit():

    import timeit
    
    code_to_test = """
    for _ in range(1000000):
        pass
    """
    execution_time = timeit.timeit(stmt=code_to_test, number=100)
    
    print("执行时间:", execution_time, "秒")
    

在这些示例中,你可以替换注释部分的代码,以测试你想要测量执行时间的实际代码段。

结尾声明

部分内容由GPT协助我整理完成,因为表格实在太难打了,使用的Prompt大意是:

1. 请根据你的知识将特性进一步细分,例如返回的类型、精度、其他特点,请将其他特点对比总结一下,同类的分一下类,根据你的知识库,完善这些函数别的特性,并请你将“其他特性”也分类归类,不要写成“其他特性”。现在请将你总结的全部使用场景、特性用表格总结,请你把你知道的能用来测Python程序的运行速度的函数都按照markdown表格进行总结。
2. 然后请分别输出各个函数用于测试代码时间的样例代码。

更多测试方法:python性能测试

猜你喜欢

转载自blog.csdn.net/qq_46106285/article/details/134755192
今日推荐