unofficial mirror of bug-gnu-emacs@gnu.org 
 help / color / mirror / code / Atom feed
* bug#3219: Long Line Sluggishness
@ 2009-05-05 12:44 David Reitter
  2022-07-23  8:59 ` bug#40007: 28.0.50; Emacs gets very slow when displaying a long line Lars Ingebrigtsen
  0 siblings, 1 reply; 6+ messages in thread
From: David Reitter @ 2009-05-05 12:44 UTC (permalink / raw)
  To: emacs-pretest-bug

Emacs becomes extremely sluggish when long lines are used.

To reproduce:
Emacs -Q
Enter long line through recursive copy/paste  (about 700k characters  
in my example)
- use vertical scrollbar to scroll to the bottom   -> doesn't work
- use End key to scroll to bottom

Now move around, enter text, scroll up, etc: everything happens with a  
substantial (0.5-1.0 seconds) delay.

For a more practical example: I was working in lisp-interaction-mode,  
typing C-j after "load-history", and expanding one of the "..."  
ellipses. This gave me a line in excess of 100k.

Similarly, users might want to edit long (mostly binary) files.  But  
maybe that's a corner case, and it would be okay to change C-j a bit  
to format the output better.

This is not a regression compared to Emacs 22 (comparing to Carbon  
port).




In GNU Emacs 23.0.92.19 (i386-apple-darwin9.6.0, NS apple-appkit-949.43)
  of 2009-04-30 on SCARLETT.PSY.CMU.EDU
Windowing system distributor `Apple', version 10.3.949
configured using `configure  '--with-ns' '--without-x' 'CFLAGS=- 
DMAC_OS_X_VERSION_MIN_REQUIRED=1040  -O3''

Important settings:
   value of $LC_ALL: nil
   value of $LC_COLLATE: en_US.US-ASCII
   value of $LC_CTYPE: en_US.US-ASCII
   value of $LC_MESSAGES: en_US.US-ASCII
   value of $LC_MONETARY: en_US.US-ASCII
   value of $LC_NUMERIC: en_US.US-ASCII
   value of $LC_TIME: en_US.US-ASCII
   value of $LANG: en_US.UTF-8
   value of $XMODIFIERS: nil
   locale-coding-system: us-ascii-unix
   default-enable-multibyte-characters: t

Major mode: Lisp Interaction

Minor modes in effect:
   tooltip-mode: t
   mouse-wheel-mode: t
   menu-bar-mode: t
   file-name-shadow-mode: t
   global-font-lock-mode: t
   font-lock-mode: t
   global-auto-composition-mode: t
   auto-composition-mode: t
   auto-encryption-mode: t
   auto-compression-mode: t
   line-number-mode: t
   transient-mark-mode: t

Recent input:
s-v s-v s-v s-v s-v s-v s-v s-v s-v s-v <wheel-up>
<double-wheel-up> <triple-wheel-up> <triple-wheel-up>
<wheel-up> <double-wheel-up> <triple-wheel-up> <triple-wheel-up>
<triple-wheel-up> s-a s-c <wheel-down> <double-wheel-down>
<triple-wheel-down> <triple-wheel-down> <triple-wheel-down>
<triple-wheel-down> <triple-wheel-down> <triple-wheel-down>
<triple-wheel-down> <triple-wheel-down> <triple-wheel-down>
<triple-wheel-down> <triple-wheel-down> <triple-wheel-down>
<triple-wheel-down> <triple-wheel-down> <triple-wheel-down>
<triple-wheel-down> <triple-wheel-down> <down-mouse-1>
<down-mouse-1> <down-mouse-1> <down-mouse-1> <down-mouse-1>
<down-mouse-1> <down-mouse-1> <down-mouse-1> <down-mouse-1>
<down-mouse-1> <down-mouse-1> <down-mouse-1> <down-mouse-1>
<down-mouse-1> <down-mouse-1> <down-mouse-1> <down-mouse-1>
<down-mouse-1> <down-mouse-1> <down-mouse-1> <down-mouse-1>
<mouse-1> C-SPC <down-mouse-1> <down-mouse-1> <down-mouse-1>
<down-mouse-1> <down-mouse-1> <down-mouse-1> <down-mouse-1>
<down-mouse-1> <down-mouse-1> <down-mouse-1> <down-mouse-1>
<down-mouse-1> <down-mouse-1> <down-mouse-1> <down-mouse-1>
<down-mouse-1> <down-mouse-1> <down-mouse-1> <down-mouse-1>
<down-mouse-1> <down-mouse-1> <down-mouse-1> <down-mouse-1>
<down-mouse-1> <down-mouse-1> <down-mouse-1> <down-mouse-1>
<down-mouse-1> <down-mouse-1> <down-mouse-1> <down-mouse-1>
<down-mouse-1> <down-mouse-1> <down-mouse-1> <down-mouse-1>
<down-mouse-1> <down-mouse-1> <down-mouse-1> <down-mouse-1>
<down-mouse-1> <down-mouse-1> <down-mouse-1> <down-mouse-1>
<down-mouse-1> <down-mouse-1> <down-mouse-1> <down-mouse-1>
<down-mouse-1> <down-mouse-1> <down-mouse-1> <down-mouse-1>
<down-mouse-1> <down-mouse-1> <down-mouse-1> <down-mouse-1>
<down-mouse-1> <down-mouse-1> <down-mouse-1> <down-mouse-1>
<down-mouse-1> <down-mouse-1> <down-mouse-1> <down-mouse-1>
<down-mouse-1> <down-mouse-1> <down-mouse-1> <down-mouse-1>
<down-mouse-1> <down-mouse-1> <down-mouse-1> <down-mouse-1>
<down-mouse-1> <down-mouse-1> <down-mouse-1> <down-mouse-1>
<down-mouse-1> <down-mouse-1> <down-mouse-1> <down-mouse-1>
<down-mouse-1> <down-mouse-1> <down-mouse-1> <down-mouse-1>
<down-mouse-1> <down-mouse-1> <down-mouse-1> <down-mouse-1>
<down-mouse-1> <down-mouse-1> <down-mouse-1> <down-mouse-1>
<down-mouse-1> <down-mouse-1> <down-mouse-1> <down-mouse-1>
<down-mouse-1> <down-mouse-1> <down-mouse-1> <down-mouse-1>
<down-mouse-1> <down-mouse-1> <down-mouse-1> <down-mouse-1>
<down-mouse-1> <down-mouse-1> <down-mouse-1> <down-mouse-1>
<down-mouse-1> <down-mouse-1> <down-mouse-1> <down-mouse-1>
<down-mouse-1> <down-mouse-1> <down-mouse-1> <down-mouse-1>
<down-mouse-1> <down-mouse-1> <down-mouse-1> <down-mouse-1>
<down-mouse-1> <down-mouse-1> <down-mouse-1> <down-mouse-1>
<down-mouse-1> <down-mouse-1> <down-mouse-1> <down-mouse-1>
<down-mouse-1> <down-mouse-1> <down-mouse-1> <down-mouse-1>
<down-mouse-1> <down-mouse-1> <down-mouse-1> <down-mouse-1>
<down-mouse-1> <down-mouse-1> <down-mouse-1> <down-mouse-1>
<down-mouse-1> <down-mouse-1> <down-mouse-1> <down-mouse-1>
<down-mouse-1> <down-mouse-1> <down-mouse-1> <down-mouse-1>
<down-mouse-1> <down-mouse-1> <down-mouse-1> <down-mouse-1>
<down-mouse-1> <down-mouse-1> <down-mouse-1> <down-mouse-1>
<down-mouse-1> <down-mouse-1> <down-mouse-1> <down-mouse-1>
<down-mouse-1> <down-mouse-1> <down-mouse-1> <down-mouse-1>
<down-mouse-1> <down-mouse-1> <down-mouse-1> <down-mouse-1>
<down-mouse-1> <down-mouse-1> <down-mouse-1> <down-mouse-1>
<down-mouse-1> <down-mouse-1> <down-mouse-1> <down-mouse-1>
<down-mouse-1> <down-mouse-1> <down-mouse-1> <down-mouse-1>
<down-mouse-1> <down-mouse-1> <down-mouse-1> <down-mouse-1>
<down-mouse-1> <down-mouse-1> <down-mouse-1> <down-mouse-1>
<down-mouse-1> <mouse-1> <end> s-c SPC s-v SPC s-v
SPC s-v s-v s-v s-v s-v s-v s-v <wheel-up> <double-wheel-up>
<wheel-up> <double-wheel-up> <down-mouse-1> <mouse-1>
<down-mouse-1> <mouse-1> <down-mouse-1> <mouse-1> <down-mouse-1>
<mouse-1> <down-mouse-1> <mouse-1> <down-mouse-1> <mouse-1>
<wheel-up> <double-wheel-up> <wheel-up> <double-wheel-up>
<wheel-up> <double-wheel-up> <escape> x r e p o r t
- b <tab> <return>

Recent messages:
byte-code: Beginning of buffer [5 times]
byte-code: End of buffer [5 times]
byte-code: Beginning of buffer [4 times]
byte-code: End of buffer [6 times]
Mark set [114 times]
Saved text until "lled through super interpretKeyEvents:])"
byte-code: End of buffer
Mark set [2 times]
Saved text from "per interpretKeyEvents:]) <NSTextInput> "
Mark set [9 times]







^ permalink raw reply	[flat|nested] 6+ messages in thread

* bug#40007: 28.0.50; Emacs gets very slow when displaying a long line
@ 2020-03-10  9:48 Jan Synacek
  2020-03-10 10:46 ` Pieter van Oostrum
  2020-03-10 14:40 ` Eli Zaretskii
  0 siblings, 2 replies; 6+ messages in thread
From: Jan Synacek @ 2020-03-10  9:48 UTC (permalink / raw)
  To: 40007


1) emacs -Q
2) M-x shell
3) execute a program that displays a single line, about ~193000
characters long

I accidentaly wrote a scheme program that dumped an entire file as a
single line, about 193k characters long, into the shell buffer. Emacs'
reponse latency becomes *very* slow, especially when navigating the
point over the long line.


In GNU Emacs 28.0.50 (build 7, x86_64-pc-linux-gnu, GTK+ Version 3.24.11, cairo version 1.16.0)
 of 2020-03-10 built on jsynacek-ntb.brq.redhat.com
Repository revision: a98c8f5a098cf646c282be67cce9fb7999d353d7
Repository branch: master
Windowing system distributor 'Fedora Project', version 11.0.12006000
System Description: Fedora 30 (Workstation Edition)

Recent messages:
Loading /usr/share/emacs/site-lisp/gtags.el (source)...done
For information about GNU Emacs and the GNU system, type C-h C-a.
Making completion list...
No match [2 times]
Buffer "*shell*" has a running process; kill it? (y or n) y
next-line: End of buffer
Revert buffer from file /home/jsynacek/todo.org? (y or n) y
Making completion list...

Configured using:
 'configure --prefix=/home/jsynacek/emacs'

Configured features:
XPM JPEG TIFF GIF PNG RSVG CAIRO SOUND GPM DBUS GSETTINGS GLIB NOTIFY
INOTIFY ACL LIBSELINUX GNUTLS LIBXML2 FREETYPE HARFBUZZ M17N_FLT LIBOTF
ZLIB TOOLKIT_SCROLL_BARS GTK3 X11 XDBE XIM MODULES THREADS LIBSYSTEMD
PDUMPER LCMS2 GMP

Important settings:
  value of $LANG: en_US.UTF-8
  locale-coding-system: utf-8-unix

Major mode: Org

Minor modes in effect:
  shell-dirtrack-mode: t
  delete-selection-mode: t
  show-paren-mode: t
  tooltip-mode: t
  global-eldoc-mode: t
  electric-indent-mode: t
  mouse-wheel-mode: t
  file-name-shadow-mode: t
  global-font-lock-mode: t
  font-lock-mode: t
  auto-composition-mode: t
  auto-encryption-mode: t
  auto-compression-mode: t
  column-number-mode: t
  line-number-mode: t
  transient-mark-mode: t

Load-path shadows:
None found.

Features:
(shadow sort mail-extr emacsbug sendmail shell org-element avl-tree
generator ol-eww ol-rmail ol-mhe ol-irc ol-info ol-gnus nnir gnus-sum
url url-proxy url-privacy url-expand url-methods url-history mailcap shr
url-cookie url-domsuf url-util svg xml dom gnus-group gnus-undo
gnus-start gnus-cloud nnimap nnmail mail-source utf7 netrc nnoo
parse-time iso8601 gnus-spec gnus-int gnus-range message rmc puny rfc822
mml mml-sec epa derived epg epg-config mm-decode mm-bodies mm-encode
mail-parse rfc2231 mailabbrev gmm-utils mailheader gnus-win gnus
nnheader gnus-util rmail rmail-loaddefs rfc2047 rfc2045 ietf-drums
text-property-search mail-utils mm-util mail-prsvr wid-edit ol-docview
doc-view jka-compr image-mode exif dired dired-loaddefs ol-bibtex bibtex
ol-bbdb ol-w3m org ob ob-tangle ob-ref ob-lob ob-table ob-exp org-macro
org-footnote org-src ob-comint org-pcomplete pcomplete comint ansi-color
ring org-list org-faces org-entities time-date noutline outline
easy-mmode org-version ob-emacs-lisp ob-core ob-eval org-table ol
org-keys org-compat advice org-macs org-loaddefs format-spec find-func
cal-menu calendar cal-loaddefs gtags server sh-script smie executable
edmacro kmacro delsel paren info package easymenu browse-url
url-handlers url-parse auth-source cl-seq eieio eieio-core cl-macs
eieio-loaddefs password-cache json subr-x map url-vars seq byte-opt gv
bytecomp byte-compile cconv cl-loaddefs cl-lib tooltip eldoc electric
uniquify ediff-hook vc-hooks lisp-float-type mwheel term/x-win x-win
term/common-win x-dnd tool-bar dnd fontset image regexp-opt fringe
tabulated-list replace newcomment text-mode elisp-mode lisp-mode
prog-mode register page tab-bar menu-bar rfn-eshadow isearch timer
select scroll-bar mouse jit-lock font-lock syntax facemenu font-core
term/tty-colors frame minibuffer cl-generic cham georgian utf-8-lang
misc-lang vietnamese tibetan thai tai-viet lao korean japanese eucjp-ms
cp51932 hebrew greek romanian slovak czech european ethiopic indian
cyrillic chinese composite charscript charprop case-table epa-hook
jka-cmpr-hook help simple abbrev obarray cl-preloaded nadvice loaddefs
button faces cus-face macroexp files text-properties overlay sha1 md5
base64 format env code-pages mule custom widget hashtable-print-readable
backquote threads dbusbind inotify lcms2 dynamic-setting
system-font-setting font-render-setting cairo move-toolbar gtk x-toolkit
x multi-tty make-network-process emacs)

Memory information:
((conses 16 170604 23396)
 (symbols 48 19519 1)
 (strings 32 64980 1639)
 (string-bytes 1 2222006)
 (vectors 16 30280)
 (vector-slots 8 349836 16932)
 (floats 8 197 86)
 (intervals 56 414 0)
 (buffers 1000 14))






^ permalink raw reply	[flat|nested] 6+ messages in thread

* bug#40007: 28.0.50; Emacs gets very slow when displaying a long line
  2020-03-10  9:48 Jan Synacek
@ 2020-03-10 10:46 ` Pieter van Oostrum
  2020-03-24  8:49   ` Phil Sainty
  2020-03-10 14:40 ` Eli Zaretskii
  1 sibling, 1 reply; 6+ messages in thread
From: Pieter van Oostrum @ 2020-03-10 10:46 UTC (permalink / raw)
  To: Jan Synacek; +Cc: 40007

Jan Synacek <jsynacek@redhat.com> writes:

> 1) emacs -Q
> 2) M-x shell
> 3) execute a program that displays a single line, about ~193000
> characters long
>
> I accidentaly wrote a scheme program that dumped an entire file as a
> single line, about 193k characters long, into the shell buffer. Emacs'
> reponse latency becomes *very* slow, especially when navigating the
> point over the long line.
>
Use so-long-mode.
-- 
Pieter van Oostrum
www: http://pieter.vanoostrum.org/
PGP key: [8DAE142BE17999C4]





^ permalink raw reply	[flat|nested] 6+ messages in thread

* bug#40007: 28.0.50; Emacs gets very slow when displaying a long line
  2020-03-10  9:48 Jan Synacek
  2020-03-10 10:46 ` Pieter van Oostrum
@ 2020-03-10 14:40 ` Eli Zaretskii
  1 sibling, 0 replies; 6+ messages in thread
From: Eli Zaretskii @ 2020-03-10 14:40 UTC (permalink / raw)
  To: Jan Synacek; +Cc: 40007

merge 40007 13675
thanks

> From: Jan Synacek <jsynacek@redhat.com>
> Date: Tue, 10 Mar 2020 10:48:24 +0100
> 
> 
> 1) emacs -Q
> 2) M-x shell
> 3) execute a program that displays a single line, about ~193000
> characters long
> 
> I accidentaly wrote a scheme program that dumped an entire file as a
> single line, about 193k characters long, into the shell buffer. Emacs'
> reponse latency becomes *very* slow, especially when navigating the
> point over the long line.

This is bug#13675 (and others that were merged with it).

We now have so-long-mode to alleviate some of the problems.





^ permalink raw reply	[flat|nested] 6+ messages in thread

* bug#40007: 28.0.50; Emacs gets very slow when displaying a long line
  2020-03-10 10:46 ` Pieter van Oostrum
@ 2020-03-24  8:49   ` Phil Sainty
  0 siblings, 0 replies; 6+ messages in thread
From: Phil Sainty @ 2020-03-24  8:49 UTC (permalink / raw)
  To: Pieter van Oostrum, Jan Synacek; +Cc: 40007

On 10/03/20 11:46 pm, Pieter van Oostrum wrote:
> Jan Synacek <jsynacek@redhat.com> writes:
>
>> 1) emacs -Q
>> 2) M-x shell
>> 3) execute a program that displays a single line, about ~193000
>> characters long
>
> Use so-long-mode.

For clarity, global-so-long-mode isn't going to help with that
recipe, because it doesn't try to detect the *dynamic* creation of
very long lines.  It only cares about visiting files.

In principle it can be employed successfully in other situations,
but for now it's up to users to target such things explicitly.
E.g.:
https://www.reddit.com/r/emacs/comments/ccoksw/solong_mitigating_slowness_due_to_extremely_long/etpi51l/

Note that you probably shouldn't invoke major mode so-long-mode in
a shell-mode buffer, but so-long-minor-mode could help somewhat if
it were enabled.  I think only slightly, though -- in this instance
you'll end up with the *end* of a very long line on display, and so
performance is going to be fairly poor regardless.  Certainly in my
test it didn't make a dramatic difference.  (The really major
benefits of so-long are in preventing certain serious problems
which can occur even when only the start of the line is visible,
and in those situations the improvements can be extremely good.)

As Eli says, the library alleviates some of the problems -- but
only some of them.


-Phil






^ permalink raw reply	[flat|nested] 6+ messages in thread

* bug#40007: 28.0.50; Emacs gets very slow when displaying a long line
  2009-05-05 12:44 bug#3219: Long Line Sluggishness David Reitter
@ 2022-07-23  8:59 ` Lars Ingebrigtsen
  0 siblings, 0 replies; 6+ messages in thread
From: Lars Ingebrigtsen @ 2022-07-23  8:59 UTC (permalink / raw)
  To: David Reitter; +Cc: 40007, 3219

David Reitter <david.reitter@gmail.com> writes:

> Emacs becomes extremely sluggish when long lines are used.

These issues have been fixed in Emacs 29 -- long lines no longer slows
down Emacs (to these degrees), so I'm closing this bug report.

There may be issues remaining with long lines, and if so, please open
new bug reports for those issues (and cases for reproduction would be
appreciated).






^ permalink raw reply	[flat|nested] 6+ messages in thread

end of thread, other threads:[~2022-07-23  8:59 UTC | newest]

Thread overview: 6+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2009-05-05 12:44 bug#3219: Long Line Sluggishness David Reitter
2022-07-23  8:59 ` bug#40007: 28.0.50; Emacs gets very slow when displaying a long line Lars Ingebrigtsen
  -- strict thread matches above, loose matches on Subject: below --
2020-03-10  9:48 Jan Synacek
2020-03-10 10:46 ` Pieter van Oostrum
2020-03-24  8:49   ` Phil Sainty
2020-03-10 14:40 ` Eli Zaretskii

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).