为了账号安全,请及时绑定邮箱和手机立即绑定

time.perf_counter() 或 time.process_time() 用于性能测量?

time.perf_counter() 或 time.process_time() 用于性能测量?

30秒到达战场 2023-07-18 15:06:43
我了解 time.perf_counter() 测量经过的总时间,即使进程当前未运行。然而 time.process_time() 仅测量进程实际运行的时间。如果我只是衡量一个功能的性能,这两个中哪一个是首选?由于我实际上对 CPU 花在处理其他进程上的时间并不感兴趣,所以我自然认为 time.process_time() 会是更好的选择(并且在不同的运行中更稳定?),但名称 time.perf_counter() 似乎否则建议。代码示例import timefrom tqdm import trangestart_time_proc = time.process_time()start_time_perf = time.perf_counter()tmp = Falsefor _ in trange(10_000_000):    tmp = not tmpelapsed_time_proc = time.process_time() - start_time_procelapsed_time_perf = time.perf_counter() - start_time_perfprint("process_time:", elapsed_time_proc)print("perf_counter:", elapsed_time_perf)https://repl.it/repls/GigaSpryScientists#main.py
查看完整描述

1 回答

?
浮云间

TA贡献1829条经验 获得超4个赞

通常的测量方法是使用性能计数器并重复测量几次。

处理时间并不经常使用,我可以轻松地向您展示原因:time.sleep(1)根据处理时间将花费 0 秒。每次从调度程序中删除进程时,即使是由于正在测试的代码,进程时钟也不会提前。

我可以建议你看一下内置的 timeit 模块吗?它也使用性能计数器,并且可以为重复计时提供更舒适的界面。

编辑

当且仅当您的函数完全受 CPU 限制,不访问外部资源,也不引起任何系统调用,process_time才是更准确、更好的选择。


查看完整回答
反对 回复 2023-07-18
  • 1 回答
  • 0 关注
  • 129 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信