emacs-devel
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: Performance under bidi-paragraph-direction 'left-to-right vs bidi-di


From: Eli Zaretskii
Subject: Re: Performance under bidi-paragraph-direction 'left-to-right vs bidi-display-reordering nil
Date: Sun, 24 Nov 2019 18:00:14 +0200

> From: Phil Sainty <address@hidden>
> Date: Sun, 24 Nov 2019 23:41:56 +1300
> 
> As discussed in
> https://lists.gnu.org/archive/html/emacs-devel/2019-07/msg00294.html
> setting bidi-display-reordering nil isn't a supported/tested scenario,
> and in so-long.el we changed that to set bidi-paragraph-direction to
> 'left-to-right instead.
> 
> I've just traced what seemed like a performance regression to this
> change -- it's now apparent to me that there's a noticeable effect on
> the redisplay performance having bidi-display-reordering enabled and
> bidi-paragraph-direction set (at least under long-line situations)
> which isn't experienced when bidi-display-reordering is disabled.

I never said that setting bidi-paragraph-direction will provide the
same CPU savings as bidi-display-reordering.  If something I said
could have been interpreted that way, I apologize.  The latter
disables the bidi reordering engine; the former does not, it just
makes its job a little easier.

> I do imagine that the code already tries hard to be efficient, but if
> there's any chance that with only bidi-paragraph-direction set we can
> achieve performance nearer to that with bidi-display-reordering
> disabled, that would seemingly be beneficial for files with extremely
> long lines.

Maybe there's a chance, but I don't know how to optimize the code more
than it already is.  Ideas and patches are more than welcome in that
area.

> Failing that, it makes me wonder whether a nil bidi-display-reordering
> should be under consideration as a supported state for end users, for
> the performance benefits.

Sorry, no.  I will object to any core package setting
bidi-display-reordering to a nil value, as that causes the display
code to work in conditions it isn't supposed to, isn't being tested
in, and execute branches of code that aren't being actively developed.
Moreover, some parts of the display engine were written under the
basic assumption that this variable is never nil.  Setting that
variable to nil thus gives you an Emacs that cannot be trusted to
produce reliable results on display, so its only valid use is for
special tests and debugging.



reply via email to

[Prev in Thread] Current Thread [Next in Thread]