I suspect that this is about memory allocation.
I've noticed strange things like this before with large shell buffers.
I don't think that pressing enter is really what makes the difference.
I expect it's the memory that Emacs has allocated. When you have a
small shell buffer you're usually reusing memory that has already been
allocated to Emacs. That's because Emacs is constantly allocating and
deallocating memory within it's own memory management. AFAIK it never
actually gives memory back to the OS (modern OSes don't really need that
anyway).
However, when the size of the shell buffer rises above the largest size
that the Emacs process have ever been things change. Then new memory
has to be allocated to Emacs.
I may be wrong about this though, it was ages since I looked at the
code.
BR,
Robert Thorpe
Herman, Géza <geza.herman@gmail.com> writes:
Hi all,
I'm experiencing strange shell (comint) mode performance. If I cat a 10
MB file, it takes 1:20 to cat it. Emacs uses only 30% cpu. But, if I
press enter after I send the cat command, it speeds up, and it only
takes 8 sec (emacs cpu usage goes up to 100%).
Same thing: if I execute "seq 100000" in a small emacs window, it takes
~3 seconds. But, if I press enter after executing seq, it takes only 0.4
sec (this is not 100% reproducible, sometimes pressing enter doesn't
make a difference).
(I executed comint-clear-buffer before measurements)
It happens with 26.3 and ~3-week-old master branch as well, without any
extra config (emacs -Q).
Any ideas what causes this? Would it be possible to always have the
better performance without needing to press enter?
Thanks,
Geza