You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Python统计代码执行时间:datetime.now()与time.perf_counter()该选哪个?

不同Python计时方案的差异说明

核心结论:datetime.now() 和 time.perf_counter() 效果完全不等价,前者统计代码执行耗时存在明确的缺陷,仅适合非精准的粗粒度耗时估算,性能测试等对精度有要求的场景必须使用time.perf_counter()。

两者核心差异点

  • 时钟类型不同
    datetime.now() 读取的是系统的墙上时钟,也就是我们日常使用的民用时间,这个时间会被系统自动校时、时区调整、夏令时切换等操作修改,如果计时过程中出现系统时间跳变,最终得到的时间差会完全失真,极端情况下甚至会出现负数结果。
    time.perf_counter() 读取的是系统的单调时钟,从系统启动后就会保持单向递增,不会受到任何系统时间配置修改的影响,设计目的就是专门用来计算时间间隔。
  • 计时精度不同
    datetime.now() 精度普遍只有毫秒级,对于微秒级的短代码块执行耗时统计误差极大,完全无法满足性能测试的要求。
    time.perf_counter() 是Python官方提供的最高精度计时接口,多数操作系统下能达到微秒甚至纳秒级精度,适配所有代码耗时统计场景。
  • 适用场景不同
    仅当你需要统计数小时以上的大脚本粗略耗时,且能确认计时周期内不会出现系统时间调整时,使用datetime.now()才能得到近似正确的结果,其他所有场景都应该优先选择time.perf_counter()。

顺带提一下你提到的time.time(),它和datetime.now()同属墙上时钟范畴,同样存在系统时间跳变导致结果失真的问题,也不推荐用于代码耗时统计。

内容的提问来源于stack exchange,提问作者zabop

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.23 14:45:01