From: Jim Porter <jporterbugs@gmail.com>
To: Eli Zaretskii <eliz@gnu.org>
Cc: 71355@debbugs.gnu.org, stefankangas@gmail.com
Subject: bug#71355: 30.0.50; [PATCH] Improve performance of buffered output in Eshell
Date: Wed, 5 Jun 2024 11:47:40 -0700 [thread overview]
Message-ID: <fe6018f2-e4a8-f5ed-a8e4-7fe44bb12c20@gmail.com> (raw)
In-Reply-To: <86y17ji860.fsf@gnu.org>
On 6/5/2024 10:57 AM, Eli Zaretskii wrote:
> I think we are miscommunicating. I wasn't talking about performance,
> I was talking about the fact that I don't see text delivered to the
> screen in chunks. You said that the current code sends text to the
> screen in chunks of 5 lines, and that therefore using the value 128 is
> almost the same.
You had asked about changing the buffer size; in my initial explanation,
I was just trying to explain my reasoning for why a larger buffer size
improves the overall execution time. So I was only talking about the
performance (the redisplay changes are mostly independent from the
buffer size setting, since I throttle the redisplays by time).
To be more precise though: the current code writes text into the
*buffer* in chunks of 5 lines. (That text will end up on the screen at
the next redisplay, whenever that is.) With my patch, if I set the
buffer size to 128, it will write text into the buffer every 128 chars,
which results in a similar number of write operations as before the
patch. Since those write operations are what makes the current code
slow, a 128-char buffer with my patch is similarly slow.
> But at least part of your patch calls redisplay
> after each chunk (AFAIU), something that is not done with the current
> code. So I expect the effect to be a difference in behavior, whereby
> test appears on the screen in chunks, and the user does not need to
> wait till all of it is sent before he/she sees anything at all
> displayed.
Correct. The redisplay logic is a new behavior, and not *directly* a
part of the performance improvements I made by increasing the buffer
size. On the contrary, I added the redisplay logic because the buffer
size improvements made the total execution time so much better that I
felt Eshell could now afford the extra cost of redisplaying periodically
for these commands.
next prev parent reply other threads:[~2024-06-05 18:47 UTC|newest]
Thread overview: 22+ messages / expand[flat|nested] mbox.gz Atom feed top
2024-06-04 5:36 bug#71355: 30.0.50; [PATCH] Improve performance of buffered output in Eshell Jim Porter
2024-06-04 21:52 ` Stefan Kangas
2024-06-05 1:55 ` Jim Porter
2024-06-05 3:50 ` Jim Porter
2024-06-05 12:06 ` Eli Zaretskii
2024-06-05 16:42 ` Jim Porter
2024-06-05 16:51 ` Eli Zaretskii
2024-06-05 17:35 ` Jim Porter
2024-06-05 17:57 ` Eli Zaretskii
2024-06-05 18:47 ` Jim Porter [this message]
2024-06-05 18:58 ` Eli Zaretskii
2024-06-05 20:07 ` Jim Porter
2024-06-06 4:43 ` Eli Zaretskii
2024-06-06 18:02 ` Jim Porter
2024-06-08 4:25 ` Jim Porter
2024-06-08 7:33 ` Stefan Kangas
2024-06-08 19:43 ` Jim Porter
2024-06-06 9:20 ` Stefan Kangas
2024-06-06 18:04 ` Jim Porter
2024-06-06 23:14 ` Stefan Kangas
2024-06-07 0:09 ` Jim Porter
2024-06-07 8:51 ` Stefan Kangas
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
List information: https://www.gnu.org/software/emacs/
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=fe6018f2-e4a8-f5ed-a8e4-7fe44bb12c20@gmail.com \
--to=jporterbugs@gmail.com \
--cc=71355@debbugs.gnu.org \
--cc=eliz@gnu.org \
--cc=stefankangas@gmail.com \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
Code repositories for project(s) associated with this public inbox
https://git.savannah.gnu.org/cgit/emacs.git
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for read-only IMAP folder(s) and NNTP newsgroup(s).