Sublime Text构建系统不内置计时功能,需用time(Linux/macOS)或Measure-Command(PowerShell)包装命令,或在脚本中用time.perf_counter()手动计时,且须确保文件已保存、构建系统被正确选中、路径无编码/空格问题。

Sublime Text 的构建系统本身不记录或显示运行耗时,必须靠外部手段补全。 它只负责触发命令、捕获 stdout/stderr 并输出到「输出面板」,没有内置计时逻辑。想看到类似 Execution Time: 0.234s 这样的结果,得自己加时间戳或借助 shell 工具。
用 time 命令包装 Python/Node.js 等解释器
这是最直接、跨平台兼容性最好的方式,尤其适合 Linux/macOS;Windows PowerShell 用户可用 Measure-Command 替代。
- Linux/macOS 构建系统中把
"cmd": ["python", "$file"]改成"cmd": ["sh", "-c", "time python \"$1\"", "_", "$file"] - 注意:必须用
sh -c启动,否则time在大多数 shell 中是 builtin,无法被 Sublime 直接调用 - 输出会包含 real/user/sys 三行,其中
real是你关心的端到端耗时(含启动、I/O、等待) - Windows 用户若用 Git Bash 或 WSL,可复用该写法;原生 cmd 不支持
time,建议改用 PowerShell 构建系统并嵌入Measure-Command
在脚本里手动加 time.perf_counter()
适用于需要精确控制计时起点(比如跳过 import 开销)、或必须区分“纯逻辑耗时”和“整体运行耗时”的场景。
- Python 脚本开头加:
import time; start = time.perf_counter() - 结尾加:
print(f"[done in {time.perf_counter() - start:.4f}s]") - 别用
time.time():它受系统时钟调整影响,perf_counter()才是单调递增的高精度计时器 - 如果脚本有
input()或网络请求,这个值反映的是“CPU 实际工作时间”,和time命令的real时间可能差很多——这恰恰是有价值的差异
为什么 Build System 面板里看不到耗时,连错误都不报?
常见现象是:按 Ctrl+B 后输出面板一闪而过、或只显示结果没数字、甚至完全空白。这不是配置漏了,而是几个硬性前提没满足:
- 文件必须已保存——
$file变量为空时,构建系统会静默失败,无任何提示 - 构建系统必须被正确选中:看右下角状态栏是否显示你新建的名称,不是
Automatic或None - 中文路径或空格未转义:Windows 上
cmd对路径空格极其敏感,推荐统一用shell_cmd+sh -c绕过 - 输出被截断:Sublime 默认限制输出字符数(约 10 万),超长日志会砍掉前面部分——耗时信息若在开头就可能直接消失
真正容易被忽略的是:构建系统一旦定义为 shell_cmd,它就走 shell 解析,此时 time 可用;但若坚持用 cmd 数组形式,time 就大概率失效。这个区别不看文档几乎没人意识到,而它直接决定你能不能在输出面板第一眼看到那行 real 0m0.234s。

















