终于有人出来解决Emacs处理外部进程输出速度慢的问题了

链接

按照作者的说法基本达到了和终端一致的速度。期待这个改进早日进入上游。

15 个赞

期待啊。

有相关的邮件列表讨论吗?

感觉 eglot 之类的包应该也是能够从这里获益的吧?

我觉得所有读外部进程输出的elisp代码都可以受益。原来的外部输出处理是全部在主线程里完成的,严重阻塞了外部进程的输出速度。现在这个改进把外部输出处理放到独立的线程里,可以允许外部进程全速运行,不被elisp的处理速度制约。

1 个赞

这个是很好的进步。

发去reddit推一推!

github.com/tyler-dodge/emacs 的这个代码是在macOS中,emacs 28.0的代码。我照着他的代码在master分支上改了,可以编译运行。eshell中用top测试,能感觉出来光标闪烁比原版emacs稳定,速度更快,cpu更低。

但是可能是我patch的时候哪里有问题,emacs貌似有内存泄漏,跑一会top,内存就到300多MB,打开c的代码,color-rg grep几个关键字最高到900MB。

主要是28.0和29.0的 src/process.c 差异有点大。

我就是在reddit上看来的 https://www.reddit.com/r/emacs/comments/usghki/living_the_eshell_dream_a_reduction_in_latency/

可能代码还不成熟吧。但是

  1. 已经足够证明这是可以做到的
  2. 作者表示有意愿把它推进上游

这个patch看着主要是为提升eshell的使用体验。希望能早点推到上游。