Join Nostr
2026-07-12 04:21:40 UTC

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