sublime text 无法原生测代码运行耗时,需通过外部工具+自定义 build system 实现:windows 用 timer.exe(毫秒级,需 path 或绝对路径),linux/macos 用 /usr/bin/time(支持内存/cpu 统计),python 可内嵌 time.perf_counter() 快速验证。

Sublime Text 本身不记录或显示代码运行耗时,必须通过外部工具+自定义 Build System 实现 —— 这是唯一稳定、跨平台、不侵入源码的方案。
Windows 下用 timer.exe 测 C++/Python 耗时(毫秒级)
这是 Windows 最常用且最干净的方式,timer.exe 不捕获 stdout,只输出分隔线和时间,适合屏蔽干扰看纯执行时间。
-
timer.exe必须在系统PATH中,或写绝对路径,例如:"C:/tools/timer.exe "$file_base_name"" - Build System 的
shell_cmd要写成两段式:编译 + 执行,如 C++:"g++ "$file" -o "$file_base_name" && timer "$file_base_name"" - Python 场景不能直接写
timer python -u "$file"——timer接收的是一个命令字符串,正确写法是:"timer "python -u \"$file\"""(注意双层转义) - 常见错误:把
timer放在管道后(如python -u "$file" | timer),会导致它收不到退出信号,卡住不返回
Linux/macOS 用 /usr/bin/time(带内存与 CPU 统计)
Unix-like 系统自带的 /usr/bin/time 比 Windows 的 timer.exe 信息更全,能输出真实耗时、峰值内存、用户态/内核态时间。
- 必须显式调用
/usr/bin/time,Mac 默认time是 bash 内置命令,不支持-f,否则报错:time: bad option - 格式化输出示例:
"/usr/bin/time -f 'Time: %e s, Max RSS: %M KB' python -u "$file"",其中%e是 real time,%M是峰值内存(KB) - 若只要时间数字(比如后续脚本解析),用
-f '%e'即可,但注意它会覆盖程序本身的 stdout —— 想同时看到结果和时间,得重定向:2>&1 | sed 's/^/OUT: /'或换用stdbuf缓冲控制
Python 脚本内嵌 time.perf_counter()(快速验证逻辑段)
适合不想配 Build System、也不介意临时改代码的场景,精度高、不受系统时钟跳变影响,比 time.time() 更可靠。
- 在关键逻辑前后插入:
start = time.perf_counter()和print(f"Cost: {(time.perf_counter() - start):.4f}s") - 避免用
time.time()做性能测量 —— 它可能因 NTP 校正倒退,导致负值或跳变 - 注意:该方式会污染生产代码,上线前务必删掉;若需长期埋点,应封装为 context manager 或装饰器,而非裸写语句
真正容易被忽略的点是:Build System 中的路径变量(如 $file)在不同操作系统下行为一致,但 shell 解析规则不同 —— Windows cmd 对引号和空格处理更脆弱,Linux/macOS 的 bash/zsh 则对转义更敏感。一次配置跨平台几乎不可能,建议按系统维护两套 Build System 文件。











