all messages for Emacs-related lists mirrored at yhetil.org
 help / color / mirror / code / Atom feed
From: Jerome L Quinn <jlquinn@us.ibm.com>
To: Eli Zaretskii <eliz@gnu.org>
Cc: 15555@debbugs.gnu.org
Subject: bug#15555: 24.3; Bidirectional display very slow with long lines
Date: Tue, 8 Oct 2013 11:39:58 -0400	[thread overview]
Message-ID: <OF2B55B1F5.54EA9C4F-ON85257BFE.0053238D-85257BFE.00560E73@us.ibm.com> (raw)
In-Reply-To: <83wqlo461e.fsf@gnu.org>

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




Eli Zaretskii <eliz@gnu.org> wrote on 10/08/2013 02:42:53 AM:

> From: Eli Zaretskii <eliz@gnu.org>
> To: Jerome L Quinn/Watson/IBM@IBMUS
> Cc: 15555@debbugs.gnu.org
> Date: 10/08/2013 02:43 AM
> Subject: Re: bug#15555: 24.3; Bidirectional display very slow with long
lines
>
> > From: Jerome L Quinn <jlquinn@us.ibm.com>
> > Date: Mon, 7 Oct 2013 16:05:42 -0400
> >
> > If I have a buffer with a very long line (14000 chars) with a mix of
> > ASCII and Arabic text, emacs gets painfully slow when point is further
> > along the line.
>
> Emacs is in general painfully slow with such long lines, even if there
> are only ASCII characters there.  Presence of Arabic characters makes
> it slower, but it is unbearably slow even before that.  This is a
> known deficiency of the Emacs display engine.  This is bug #13675.

Hi Eli,

I'm not sure it is the same bug.  When I disable the bidi reordering
variable,
navigation speed becomes reasonable, even with the very long line length.
I'm on a very fast machine, so #13675 may not be impacting me that badly.

When bidi reordering is enabled, it is multiple seconds to move the cursor
up
and down, which is unusable.


> > It looks like there's an N^2 algorithm dependent on the column of
> > point.
>
> No, there are no N² algorithms.  However, for many display operations,
> Emacs needs to go to the beginning of the previous _physical_ line,
> and then go forward to the place it needs to redisplay.  With very
> long lines, this takes a lot of time.
>
> If your data files don't include empty lines, there's perhaps another
> source of slowdown, which _is_ peculiar to bidirectional display:
> Emacs needs to find the beginning of the current paragraph to
> determine its "base direction".  To see if this is your problem, try
> setting bidi-paragraph-direction to either left-to-right or
> right-to-left, depending on whether most of the text should be read
> left to right or right to left.

Setting bidi-paragraph-direction to right-to-left improves the situation
some
but I'd still call it unusable in this situation.  Disabling reordering
makes
emacs as responsive as I'd expect, comparable to emacs23.

OK, I played with it a bit more.  I think the issue is exacerbated by
splitting
the frame into 2 side-by-side windows.

Try this:

Expand emacs to fill the screen.  For me this is 194x65.
Create a new buffer with just the text I included in the bug report.
C-x 3
Put something else in the left window and go the right window.
Page down several times.

The last page down I find takes 5-8 seconds repeatedly.

I don't see as bad behavior when the text is in the left buffer or if I
have only
1 window.

And disabling bidi reordering completely eliminates the bad behavior.


Thanks
Jerry

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

  reply	other threads:[~2013-10-08 15:39 UTC|newest]

Thread overview: 30+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2013-10-07 20:05 bug#15555: 24.3; Bidirectional display very slow with long lines Jerome L Quinn
2013-10-08  6:42 ` Eli Zaretskii
2013-10-08 15:39   ` Jerome L Quinn [this message]
2013-10-08 18:07     ` Eli Zaretskii
2013-10-09 12:26       ` Stefan Monnier
2013-10-09 16:59         ` Eli Zaretskii
2013-10-09 18:04           ` Jerome L Quinn
2016-01-26  5:13             ` bug#3219: " Andrew Hyatt
2016-01-26 14:41               ` Eli Zaretskii
2014-02-18 12:43           ` bug#15555: " Dmitry Antipov
2014-02-18 14:01             ` Dmitry Antipov
2014-02-18 16:21               ` Eli Zaretskii
2014-02-18 14:04             ` bug#15555: " Stefan Monnier
2014-02-18 14:31               ` Dmitry Antipov
2014-02-18 16:24                 ` Eli Zaretskii
2014-02-18 17:34                   ` Dmitry Antipov
2014-02-18 17:47                     ` Eli Zaretskii
2014-02-19 17:43                     ` Eli Zaretskii
2014-02-20  7:32                       ` Dmitry Antipov
2014-02-20 17:45                         ` Eli Zaretskii
2014-02-21  5:32                           ` Dmitry Antipov
2014-02-18 17:58                 ` Eli Zaretskii
2014-02-19  5:48                   ` Dmitry Antipov
2014-02-19 17:36                     ` Eli Zaretskii
2014-02-20 17:44                 ` bug#15555: " Eli Zaretskii
2014-02-18 17:44               ` Eli Zaretskii
2014-02-18 17:42             ` Eli Zaretskii
2014-02-19 10:49               ` bug#15555: " Dmitry Antipov
2014-02-19 17:39                 ` Eli Zaretskii
2014-02-20  7:21                   ` Dmitry Antipov

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

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=OF2B55B1F5.54EA9C4F-ON85257BFE.0053238D-85257BFE.00560E73@us.ibm.com \
    --to=jlquinn@us.ibm.com \
    --cc=15555@debbugs.gnu.org \
    --cc=eliz@gnu.org \
    /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 external index

	https://git.savannah.gnu.org/cgit/emacs.git
	https://git.savannah.gnu.org/cgit/emacs/org-mode.git

This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.