unofficial mirror of emacs-devel@gnu.org 
 help / color / mirror / code / Atom feed
From: yyoncho <yyoncho@gmail.com>
To: monnier@iro.umontreal.ca
Cc: emacs-devel@gnu.org
Subject: Re: Running process filters in another thread
Date: Sat, 29 Sep 2018 10:35:19 +0300	[thread overview]
Message-ID: <CACCVLQX40_dRxWQCDAbFU=wEJMeNMPou5V4RGfeXgFgwtRMHCg@mail.gmail.com> (raw)
In-Reply-To: <jwvsh1tjkj6.fsf-monnier+gmane.emacs.devel@gnu.org>

[-- Attachment #1: Type: text/plain, Size: 2648 bytes --]

Hi Stefan,

> Could you point to concrete
> examples, bug reports, and things like that?

There are several discussions in reddit/github related to lsp-mode being
slow
due to json parsing and the usual answer is that things are going to be
better
after switching to native json parsing available in Emacs 27 and the
following
issue is referenced: https://github.com/emacs-lsp/lsp-mode/issues/210 but I
believe that this is not going to happen to have the following points in
mind:

1. You could have multiple running LSP servers and each of them could post
big(1m+)
updates at any time.

2. A similar problem exists for Debug Adapter Protocol client dap-mode
(https://github.com/yyoncho/dap-mode) where you could have as much debug
sessions as you want and each of them could send an update at any time too.

My point is that Emacs should be able to process a lot of json
requests/responses
and still being responsive and if this requires parsing some text format
messages(e. g. Json/XML/emacs built-in) on UI thread this is not going to
happen.

> It shouldn't be too hard to use a separate (OS-level) Emacs *process*
> if you want to do the parsing without blocking the normal UI thread.
> But it comes with other performance tradeoffs.

Please correct me if I am wrong but I believe that I will still have to
parse
the input on UI thread but from a different format(e. g. using built-in
print1/read) which in the end will have the same result.

Thanks,
Ivan

On Sat, Sep 29, 2018 at 2:04 AM Stefan Monnier <monnier@iro.umontreal.ca>
wrote:

> > I want to raise this topic regarding the rise of Language servers and
> > the performance problems that are related to parsing process output on
> > UI thread.
>
> I'm not necessarily surprised that there are performance problems there,
> but I'm not actually familiar with them.  Could you point to concrete
> examples, bug reports, and things like that?
>
> Ideally, has someone investigated to see exactly where/when the
> performance problems show up?
>
> > I am not familiar with Emacs internals and I am not sure whether this
> > is doable but I wonder whether providing the option to do the
> > parsing(and probably more?)  in a separate thread and then call the
> > *filter* function on emacs side in UI thread with elisp data
> > structures like lists, hashmaps etc. instead of raw string is feasible
> > which would be similar to what is happening in Javascript world.
>
> It shouldn't be too hard to use a separate (OS-level) Emacs *process*
> if you want to do the parsing without blocking the normal UI thread.
> But it comes with other performance tradeoffs.
>
>
>         Stefan
>
>
>

[-- Attachment #2: Type: text/html, Size: 3606 bytes --]

  reply	other threads:[~2018-09-29  7:35 UTC|newest]

Thread overview: 14+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2018-09-28 18:21 Running process filters in another thread yyoncho
2018-09-28 21:14 ` Eli Zaretskii
     [not found]   ` <CACCVLQUrpxuhKwaHbFfCSzYLfucL8x+tJOkwgKwK8bzb0VZaWg@mail.gmail.com>
2018-09-29  6:54     ` Fwd: " yyoncho
2018-09-29  7:37       ` Eli Zaretskii
2018-09-28 23:03 ` Stefan Monnier
2018-09-29  7:35   ` yyoncho [this message]
2018-09-29  8:15     ` Eli Zaretskii
2018-09-29 18:10     ` Stefan Monnier
2018-09-29 19:23       ` yyoncho
2018-09-29 20:30         ` Stefan Monnier
2018-09-30  7:08           ` yyoncho
2018-09-30 13:01             ` Stefan Monnier
2018-09-30 15:01               ` yyoncho
2018-10-01 21:12 ` Tom Tromey

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='CACCVLQX40_dRxWQCDAbFU=wEJMeNMPou5V4RGfeXgFgwtRMHCg@mail.gmail.com' \
    --to=yyoncho@gmail.com \
    --cc=emacs-devel@gnu.org \
    --cc=monnier@iro.umontreal.ca \
    /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).