6 ms·
I have been a happy Emacs user for nearly two years now, but I still don't use eshell. Is it only me, or is it really painfully slow?
by ealhad 8y ago
I have been a happy Emacs user for nearly two years now, but I still don't use eshell. Is it only me, or is it really painfully slow?
- vmsp 8y agoDan Luu wrote about terminal latency a while back [1]. Eshell is actually the shell with the least overall latency. Is is, though, very slow at sinking stdout, which is probably what you are noticing. [1] https://danluu.com/term-latency/ https://danluu.com/term-latency/
- ealhad 8y agoThanks for the read.
- emj 8y agoThanks for that link, but it does note that this is also latency, i.e. transmission delay, and at 500KB/s Eshell has a very high latency for bulk transfer especially considering it's 10MB/s slower than the nearest comptitor. How much this affects your work varies, but you will adapt and change you behaviour because of that latency.
- JdeBP 8y agoThe subject has also come up on Hacker News recently. * https://lwn.net/Articles/749992/ https://lwn.net/Articles/749992/ (https://news.ycombinator.com/item?id=16894706 https://news.ycombinator.com/item?id=16894706) * https://lwn.net/Articles/751763/ https://lwn.net/Articles/751763/ (https://news.ycombinator.com/item?id=16933892 https://news.ycombinator.com/item?id=16933892)
- unhammer 8y agoTry the command in https://www.reddit.com/r/emacs/comments/74hetz/emacs_everywhere/dnzj01v/ https://www.reddit.com/r/emacs/comments/74hetz/emacs_everywh... in your regular terminal vs eshell – piping is really slow in eshell. I guess it somehow reimplements `|` in elisp, possibly losing parallelism along the way. When I reran that command now in eshell, it took 13.4 seconds, during which time Emacs had 100% cpu all the time, and sort/uniq had almost nothing.
- alxlaz 8y agoEshell was only really useful for moving text between Emacs and external processes and in order to have a reasonably sensible shell on things like Windows 2000 boxes (it was never meant as a replacement for a system shell, but honestly, anything was good a replacement for cmd.exe). From the manual: > Eshell is not a replacement for system shells such as bash or zsh. Use Eshell when you want to move text between Emacs and external processes; if you only want to pipe output from one external process to another (and then another, and so on), use a system shell, because Emacs's IO system is buffer oriented, not stream oriented, and is very inefficient at such tasks. If you want to write shell scripts in Eshell, don't; either write an elisp library or use a system shell. So... there's a pretty tiny subset of people who need eshell, I guess. Most of the eshell users I know are either folks who got used to it from weird environments, or folks who just use emacs for everything so using it for their shell stuff, too, sort of makes sense.