yfaming on Nostr: 对于命令行程序的启动时间越来越敏感了。近期使用 steel Scheme ...
对于命令行程序的启动时间越来越敏感了。近期使用 steel Scheme 比较多,启动时有明显停顿感,比 Chez Scheme 启动要慢。
Chez Scheme:`echo "(exit)" | time scheme` 显示为 0.07s user,0.03s system。
steel Scheme:`time steel < /dev/null` 显示为 0.27s user,0.02s system。
用 hyperfine 测试一下:
```sh
$ hyperfine --warmup 3 'echo "(exit)" | scheme' 'steel < /dev/null'
Benchmark 1: echo "(exit)" | scheme
Time (mean ± σ): 97.2 ms ± 1.9 ms [User: 67.6 ms, System: 24.4 ms]
Range (min … max): 94.5 ms … 103.4 ms 28 runs
Benchmark 2: steel < /dev/null
Time (mean ± σ): 285.6 ms ± 6.3 ms [User: 267.1 ms, System: 15.2 ms]
Range (min … max): 274.3 ms … 293.7 ms 10 runs
Summary
echo "(exit)" | scheme ran
2.94 ± 0.09 times faster than steel < /dev/null
```
Chez Scheme 耗时 97ms,感觉流畅。而 steel Scheme 耗时 285ms,就有很明显的停顿感了。
另一个感觉明显的是 python 解释器和 IPython。
```sh
hyperfine --warmup 3 'python3 < /dev/null' 'ipython3 < /dev/null'
Benchmark 1: python3 < /dev/null
Time (mean ± σ): 49.0 ms ± 1.5 ms [User: 28.3 ms, System: 16.8 ms]
Range (min … max): 46.7 ms … 56.7 ms 52 runs
Benchmark 2: ipython3 < /dev/null
Time (mean ± σ): 521.5 ms ± 11.9 ms [User: 435.3 ms, System: 80.8 ms]
Range (min … max): 502.7 ms … 539.4 ms 10 runs
Summary
python3 < /dev/null ran
10.64 ± 0.41 times faster than ipython3 < /dev/null
```
python 解释器只要 49ms 即可完成启动,而 IPython 则需要 521ms。
最后,测试了 Python、Chez Scheme、Racket、Lua、NodeJS 这几个语言解释器,结果是:Lua(6.5ms)、Python(50ms)、NodeJS(71ms)、Chez Scheme(99ms)、Racket(552ms)。没想到 Lua 这么厉害。而看起来 Chez Scheme 虽然比 steel Scheme 启动速度快很多,但仍然算不上优秀了。而 Racket 是启动最慢,它现在是基于 Chez Scheme 实现的,层层开销累加,想必也快不起来了。
#Scheme #Python
Published at
2026-07-12 04:21:40 UTCEvent JSON
{
"id": "f436907275e17b6a3e8a91cce8c335b1ecf39f3e9ff650fd95f9a692c5b46767",
"pubkey": "908fbc3babc322eea473a0ab1e6bf6b3adcf899288ac97b2fa79f34ad408d4e4",
"created_at": 1783830100,
"kind": 1,
"tags": [
[
"t",
"scheme"
],
[
"t",
"python"
]
],
"content": "对于命令行程序的启动时间越来越敏感了。近期使用 steel Scheme 比较多,启动时有明显停顿感,比 Chez Scheme 启动要慢。\n\nChez Scheme:`echo \"(exit)\" | time scheme` 显示为 0.07s user,0.03s system。\nsteel Scheme:`time steel \u003c /dev/null` 显示为 0.27s user,0.02s system。\n\n用 hyperfine 测试一下:\n```sh\n$ hyperfine --warmup 3 'echo \"(exit)\" | scheme' 'steel \u003c /dev/null'\nBenchmark 1: echo \"(exit)\" | scheme\n Time (mean ± σ): 97.2 ms ± 1.9 ms [User: 67.6 ms, System: 24.4 ms]\n Range (min … max): 94.5 ms … 103.4 ms 28 runs\n\nBenchmark 2: steel \u003c /dev/null\n Time (mean ± σ): 285.6 ms ± 6.3 ms [User: 267.1 ms, System: 15.2 ms]\n Range (min … max): 274.3 ms … 293.7 ms 10 runs\n\nSummary\n echo \"(exit)\" | scheme ran\n 2.94 ± 0.09 times faster than steel \u003c /dev/null\n```\n\nChez Scheme 耗时 97ms,感觉流畅。而 steel Scheme 耗时 285ms,就有很明显的停顿感了。\n\n另一个感觉明显的是 python 解释器和 IPython。\n\n```sh\nhyperfine --warmup 3 'python3 \u003c /dev/null' 'ipython3 \u003c /dev/null'\nBenchmark 1: python3 \u003c /dev/null\n Time (mean ± σ): 49.0 ms ± 1.5 ms [User: 28.3 ms, System: 16.8 ms]\n Range (min … max): 46.7 ms … 56.7 ms 52 runs\n\nBenchmark 2: ipython3 \u003c /dev/null\n Time (mean ± σ): 521.5 ms ± 11.9 ms [User: 435.3 ms, System: 80.8 ms]\n Range (min … max): 502.7 ms … 539.4 ms 10 runs\n\nSummary\n python3 \u003c /dev/null ran\n 10.64 ± 0.41 times faster than ipython3 \u003c /dev/null\n```\n\npython 解释器只要 49ms 即可完成启动,而 IPython 则需要 521ms。\n\n最后,测试了 Python、Chez Scheme、Racket、Lua、NodeJS 这几个语言解释器,结果是:Lua(6.5ms)、Python(50ms)、NodeJS(71ms)、Chez Scheme(99ms)、Racket(552ms)。没想到 Lua 这么厉害。而看起来 Chez Scheme 虽然比 steel Scheme 启动速度快很多,但仍然算不上优秀了。而 Racket 是启动最慢,它现在是基于 Chez Scheme 实现的,层层开销累加,想必也快不起来了。\n\n#Scheme #Python",
"sig": "e395fbb6ff6c03cc982ffae39957d855847b05f401a5266edb0fe99928f0fbf97f343930b30d6693431096875e99bce6fec9c2d202552c612af717b3139db18d"
}