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

为何两段Python代码执行时间差异显著?在线判题场景解析

为什么两段逻辑一致的Python代码执行时间差这么多?

我在在线判题网站解题时遇到了奇怪的现象:提交第一段代码(code1)时出现超时错误,执行时间约6000ms;提交第二段代码(code2)则顺利通过,执行时间约2400ms。两段代码逻辑看似一致,不清楚为何执行时间存在如此差异。

Code 1(超时)

n,m = map(int, input().split())
data = dict()
for _ in range(n):
    a,b = input().split()
    data[a] = data.get(a,0) + int(b)
for _ in range(m):
    a = input()
    print(data.get(a,0))

Code 2(通过)

n,m = map(int, input().split())
data = dict()
li = []
for _ in range(n):
    a,b = input().split()
    data[a] = data.get(a,0) + int(b)
for _ in range(m):
    a = input()
    li.append(data.get(a,0))
for i in li:
    print(i)

差异原因分析

核心问题出在控制台输出的次数上:

  • Code1里,每完成一次查询就调用一次print(),每一次print()都会触发一次控制台I/O操作。控制台I/O本身是相对耗时的操作——它涉及操作系统缓冲区交互、终端渲染等步骤,当m的数值较大(比如上万级)时,几百上千次print()的开销累积起来,直接拖慢了整体程序运行速度,导致超时。
  • Code2则先把所有查询结果存入列表,最后通过一次循环批量输出。这种方式把多次零散的I/O操作合并,内存中的列表操作速度远快于控制台I/O,自然大幅降低了总执行时间。

另外补充:Python的print()每次调用还要处理换行符、可能的缓冲区刷新,这些额外操作在频繁调用时也会累积成不小的开销,而先收集结果再统一输出就能避免这类重复消耗。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.30 04:53:14