code runner 的 execution time 是最轻量方案,需同时启用 code-runner.showexecutionmessage、设 runinterminal 和 preservefocus 为 false,并重载窗口;cprofile 不支持行级计时,适合函数分析;自定义计时用 time.perf_counter();code time/wakatime 不监控运行时耗时。

Code Runner 的 Execution Time 是最轻量、最直接的方案,但三处配置必须同时生效,缺一不可。
Code Runner 显示 Execution Time 必须满足的三个条件
VS Code 默认不显示代码运行耗时,code-runner.showExecutionMessage 开关只是表象,真正起作用的是它与另外两个设置的组合:
-
code-runner.showExecutionMessage必须设为true(默认是false) -
code-runner.runInTerminal建议设为false:设为true会启动外部终端,VS Code 无法捕获输出流,自然不会打印Execution Time: X.XXXs -
code-runner.preserveFocus建议设为false:否则焦点切到终端后,最后一行耗时信息容易被忽略或滚动消失
改完这三项后,必须执行 Ctrl+Shift+P → “Developer: Reload Window” 重载窗口,否则设置不生效。右键 Run Code 才能看到带时间戳的输出。
为什么 cProfile 不适合“一行看耗时”,而适合函数级分析
想在 VS Code 里点一下就看到每行执行多久?不存在——Python 没有行级采样机制,cProfile 也不是为此设计的:
-
cProfile统计的是函数调用次数和累计/独占时间,不是语句粒度;它不记录for i in range(1000)这一行本身耗多久,而是记录整个循环体所在的函数开销 - VS Code 内置的 Profiler(调试器中启用
"profile": true)能可视化cProfile结果,但需要手动加断点、启调试会话,无法替代一键运行+耗时反馈 - 强行用
sys.settrace或line_profiler实现行级计时,会拖慢执行 10–100 倍,且输出混乱,不适合日常快速验证
自定义脚本计时:time.perf_counter() vs time.time()
当 Code Runner 不适用(比如要测 subprocess 启动的命令、或需排除解释器冷启动影响),就得自己写计时逻辑:
- 同步脚本首选
time.perf_counter():它是单调、高精度、专为测量间隔设计的,单位是秒,精度可达纳秒级 -
time.time()适合粗略计时(如任务级耗时),但受系统时钟调整影响,不能用于压测或精确比对 - 别用
time.clock():Python 3.8+ 已彻底移除
示例:
import time
start = time.perf_counter()
result = sum(i**2 for i in range(10**7))
end = time.perf_counter()
print(f"计算耗时: {end - start:.4f}s")
电池/功耗维度的耗时分析不能混用时间追踪插件
Code Time 和 WakaTime 完全不参与代码执行生命周期,它们只监听编辑器事件(文件切换、保存、按键):
- 你在终端跑
python main.py10 分钟,Code Time一秒钟都不会记——它根本不知道进程存在 -
WakaTime日志(~/.wakatime.log)里永远找不到Execution Time字样,它的数据来源和运行时监控是两套体系 - 试图用 Tasks + WakaTime 组合来“曲线救国”,会因终端启动后编辑器失焦导致自动暂停,这是设计使然,无法绕过
真要关联功耗与执行时间,得靠 Battery Profiler 类插件配合系统级采集(如 Linux perf、Windows powercfg),再把时间戳对齐到日志里——那是另一层基础设施问题,和“运行代码显示耗时”不在同一抽象层级。











