unofficial mirror of bug-gnu-emacs@gnu.org 
 help / color / mirror / code / Atom feed
* bug#11943: 24.1.50; Emacs unusably slow when looking at large files (bidi support at fault)
@ 2012-07-15  0:50 Dima Kogan
  2012-07-15  3:04 ` Eli Zaretskii
  0 siblings, 1 reply; 6+ messages in thread
From: Dima Kogan @ 2012-07-15  0:50 UTC (permalink / raw)
  To: 11943

I'm observing that when some large text files are loaded, emacs slows to
a crawl. As an example, I have a 14MB file open (with emacs -Q). Every
time I do (next-line) or (previous-line) it takes a few seconds. This is
a > 2GHz Core2 machine, so there's no reason for this to happen. 'M-x
benchmark' says that (previous-line) takes >2s each time. I discovered
that if I do (setq bidi-display-reordering nil) then emacs is snappy
again, with previous-line taking <1ms.

The specific file I'm using to exhibit the bug consists of many repeated
stanzas such as

=========================
{
 {2.222222,2.222222,2.222222,2.2},
 {-2.222222,2.222222,2.222222},
 {-22.222222,22.222222,2.222222}
},
=========================

without the =. Saving a stanza into a file called 'snippet', the 14MB
file can be made with

$ for i in `seq 17`; do cat snippet snippet > xxx; mv xxx snippet; done

Thanks.


In GNU Emacs 24.1.50.1 (x86_64-pc-linux-gnu, GTK+ Version 3.4.2)
 of 2012-06-29 on zelenka, modified by Debian
 (emacs-snapshot package, version 2:20120629-1)
Windowing system distributor `The X.Org Foundation', version 11.0.11201902
Configured using:
 `configure '--build' 'x86_64-linux-gnu' '--host' 'x86_64-linux-gnu'
 '--prefix=/usr' '--sharedstatedir=/var/lib' '--libexecdir=/usr/lib'
 '--localstatedir=/var' '--infodir=/usr/share/info'
 '--mandir=/usr/share/man' '--with-pop=yes'
 '--enable-locallisppath=/etc/emacs-snapshot:/etc/emacs:/usr/local/share/emacs/24.1.50/site-lisp:/usr/local/share/emacs/site-lisp:/usr/share/emacs/24.1.50/site-lisp:/usr/share/emacs/site-lisp'
 '--without-compress-info' '--with-crt-dir=/usr/lib/x86_64-linux-gnu/'
 '--with-x=yes' '--with-x-toolkit=gtk3' '--with-imagemagick=yes'
 'build_alias=x86_64-linux-gnu' 'host_alias=x86_64-linux-gnu'
 'CFLAGS=-DDEBIAN -DSITELOAD_PURESIZE_EXTRA=5000 -g -O2' 'LDFLAGS=-g
 -Wl,--as-needed -znocombreloc' 'CPPFLAGS=-D_FORTIFY_SOURCE=2''

Important settings:
  value of $LC_ALL: C
  value of $LANG: C
  locale-coding-system: nil
  default enable-multibyte-characters: t

Major mode: Fundamental

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

Recent input:
y <down> <down> <down> <down> <down> <down> <up> M-x 
b e n c h m a r k <return> ( p r e v i o u s - l i 
n e ) <return> <help-echo> <help-echo> M-x r e p o 
r t SPC b u g <return>

Recent messages:
For information about GNU Emacs and the GNU system, type C-h C-a.
File snippet is large (13.1M), really open? (y or n)  y
Elapsed time: 2.232054s

Load-path shadows:
/usr/share/emacs/24.1.50/site-lisp/cscope/xcscope hides /usr/share/emacs/site-lisp/xcscope
/usr/share/emacs/24.1.50/site-lisp/cmake-data/cmake-mode hides /usr/share/emacs/site-lisp/cmake-mode
/usr/share/emacs/24.1.50/site-lisp/easypg/epg hides /usr/share/emacs/24.1.50/lisp/epg
/usr/share/emacs/24.1.50/site-lisp/easypg/epa-dired hides /usr/share/emacs/24.1.50/lisp/epa-dired
/usr/share/emacs/24.1.50/site-lisp/easypg/epg-config hides /usr/share/emacs/24.1.50/lisp/epg-config
/usr/share/emacs/24.1.50/site-lisp/easypg/epa hides /usr/share/emacs/24.1.50/lisp/epa
/usr/share/emacs/24.1.50/site-lisp/easypg/epa-file hides /usr/share/emacs/24.1.50/lisp/epa-file
/usr/share/emacs/24.1.50/site-lisp/easypg/epa-mail hides /usr/share/emacs/24.1.50/lisp/epa-mail
/usr/share/emacs/24.1.50/site-lisp/org-mode/org-list hides /usr/share/emacs/24.1.50/lisp/org/org-list
/usr/share/emacs/24.1.50/site-lisp/org-mode/ob-screen hides /usr/share/emacs/24.1.50/lisp/org/ob-screen
/usr/share/emacs/24.1.50/site-lisp/org-mode/org-protocol hides /usr/share/emacs/24.1.50/lisp/org/org-protocol
/usr/share/emacs/24.1.50/site-lisp/org-mode/org-footnote hides /usr/share/emacs/24.1.50/lisp/org/org-footnote
/usr/share/emacs/24.1.50/site-lisp/org-mode/org-docview hides /usr/share/emacs/24.1.50/lisp/org/org-docview
/usr/share/emacs/24.1.50/site-lisp/org-mode/org-pcomplete hides /usr/share/emacs/24.1.50/lisp/org/org-pcomplete
/usr/share/emacs/24.1.50/site-lisp/org-mode/ob-sh hides /usr/share/emacs/24.1.50/lisp/org/ob-sh
/usr/share/emacs/24.1.50/site-lisp/org-mode/org-irc hides /usr/share/emacs/24.1.50/lisp/org/org-irc
/usr/share/emacs/24.1.50/site-lisp/org-mode/ob-maxima hides /usr/share/emacs/24.1.50/lisp/org/ob-maxima
/usr/share/emacs/24.1.50/site-lisp/org-mode/org-mac-message hides /usr/share/emacs/24.1.50/lisp/org/org-mac-message
/usr/share/emacs/24.1.50/site-lisp/org-mode/org-bibtex hides /usr/share/emacs/24.1.50/lisp/org/org-bibtex
/usr/share/emacs/24.1.50/site-lisp/org-mode/ob-asymptote hides /usr/share/emacs/24.1.50/lisp/org/ob-asymptote
/usr/share/emacs/24.1.50/site-lisp/org-mode/org-bbdb hides /usr/share/emacs/24.1.50/lisp/org/org-bbdb
/usr/share/emacs/24.1.50/site-lisp/org-mode/ob hides /usr/share/emacs/24.1.50/lisp/org/ob
/usr/share/emacs/24.1.50/site-lisp/org-mode/ob-lilypond hides /usr/share/emacs/24.1.50/lisp/org/ob-lilypond
/usr/share/emacs/24.1.50/site-lisp/org-mode/org-exp-blocks hides /usr/share/emacs/24.1.50/lisp/org/org-exp-blocks
/usr/share/emacs/24.1.50/site-lisp/org-mode/org-icalendar hides /usr/share/emacs/24.1.50/lisp/org/org-icalendar
/usr/share/emacs/24.1.50/site-lisp/org-mode/ob-gnuplot hides /usr/share/emacs/24.1.50/lisp/org/ob-gnuplot
/usr/share/emacs/24.1.50/site-lisp/org-mode/org-src hides /usr/share/emacs/24.1.50/lisp/org/org-src
/usr/share/emacs/24.1.50/site-lisp/org-mode/org-w3m hides /usr/share/emacs/24.1.50/lisp/org/org-w3m
/usr/share/emacs/24.1.50/site-lisp/org-mode/ob-css hides /usr/share/emacs/24.1.50/lisp/org/ob-css
/usr/share/emacs/24.1.50/site-lisp/org-mode/ob-ledger hides /usr/share/emacs/24.1.50/lisp/org/ob-ledger
/usr/share/emacs/24.1.50/site-lisp/org-mode/org-wl hides /usr/share/emacs/24.1.50/lisp/org/org-wl
/usr/share/emacs/24.1.50/site-lisp/org-mode/org-mew hides /usr/share/emacs/24.1.50/lisp/org/org-mew
/usr/share/emacs/24.1.50/site-lisp/org-mode/org-mks hides /usr/share/emacs/24.1.50/lisp/org/org-mks
/usr/share/emacs/24.1.50/site-lisp/org-mode/ob-python hides /usr/share/emacs/24.1.50/lisp/org/ob-python
/usr/share/emacs/24.1.50/site-lisp/org-mode/ob-shen hides /usr/share/emacs/24.1.50/lisp/org/ob-shen
/usr/share/emacs/24.1.50/site-lisp/org-mode/ob-tangle hides /usr/share/emacs/24.1.50/lisp/org/ob-tangle
/usr/share/emacs/24.1.50/site-lisp/org-mode/ob-haskell hides /usr/share/emacs/24.1.50/lisp/org/ob-haskell
/usr/share/emacs/24.1.50/site-lisp/org-mode/ob-eval hides /usr/share/emacs/24.1.50/lisp/org/ob-eval
/usr/share/emacs/24.1.50/site-lisp/org-mode/org-rmail hides /usr/share/emacs/24.1.50/lisp/org/org-rmail
/usr/share/emacs/24.1.50/site-lisp/org-mode/org-habit hides /usr/share/emacs/24.1.50/lisp/org/org-habit
/usr/share/emacs/24.1.50/site-lisp/org-mode/org-exp hides /usr/share/emacs/24.1.50/lisp/org/org-exp
/usr/share/emacs/24.1.50/site-lisp/org-mode/ob-mscgen hides /usr/share/emacs/24.1.50/lisp/org/ob-mscgen
/usr/share/emacs/24.1.50/site-lisp/org-mode/org-gnus hides /usr/share/emacs/24.1.50/lisp/org/org-gnus
/usr/share/emacs/24.1.50/site-lisp/org-mode/ob-plantuml hides /usr/share/emacs/24.1.50/lisp/org/ob-plantuml
/usr/share/emacs/24.1.50/site-lisp/org-mode/org-ascii hides /usr/share/emacs/24.1.50/lisp/org/org-ascii
/usr/share/emacs/24.1.50/site-lisp/org-mode/ob-octave hides /usr/share/emacs/24.1.50/lisp/org/ob-octave
/usr/share/emacs/24.1.50/site-lisp/org-mode/org-entities hides /usr/share/emacs/24.1.50/lisp/org/org-entities
/usr/share/emacs/24.1.50/site-lisp/org-mode/ob-dot hides /usr/share/emacs/24.1.50/lisp/org/ob-dot
/usr/share/emacs/24.1.50/site-lisp/org-mode/ob-latex hides /usr/share/emacs/24.1.50/lisp/org/ob-latex
/usr/share/emacs/24.1.50/site-lisp/org-mode/ob-java hides /usr/share/emacs/24.1.50/lisp/org/ob-java
/usr/share/emacs/24.1.50/site-lisp/org-mode/org-indent hides /usr/share/emacs/24.1.50/lisp/org/org-indent
/usr/share/emacs/24.1.50/site-lisp/org-mode/org-table hides /usr/share/emacs/24.1.50/lisp/org/org-table
/usr/share/emacs/24.1.50/site-lisp/org-mode/org-eshell hides /usr/share/emacs/24.1.50/lisp/org/org-eshell
/usr/share/emacs/24.1.50/site-lisp/org-mode/ob-org hides /usr/share/emacs/24.1.50/lisp/org/ob-org
/usr/share/emacs/24.1.50/site-lisp/org-mode/ob-exp hides /usr/share/emacs/24.1.50/lisp/org/ob-exp
/usr/share/emacs/24.1.50/site-lisp/org-mode/ob-keys hides /usr/share/emacs/24.1.50/lisp/org/ob-keys
/usr/share/emacs/24.1.50/site-lisp/org-mode/org-install hides /usr/share/emacs/24.1.50/lisp/org/org-install
/usr/share/emacs/24.1.50/site-lisp/org-mode/ob-ref hides /usr/share/emacs/24.1.50/lisp/org/ob-ref
/usr/share/emacs/24.1.50/site-lisp/org-mode/org-id hides /usr/share/emacs/24.1.50/lisp/org/org-id
/usr/share/emacs/24.1.50/site-lisp/org-mode/ob-sass hides /usr/share/emacs/24.1.50/lisp/org/ob-sass
/usr/share/emacs/24.1.50/site-lisp/org-mode/ob-picolisp hides /usr/share/emacs/24.1.50/lisp/org/ob-picolisp
/usr/share/emacs/24.1.50/site-lisp/org-mode/ob-sqlite hides /usr/share/emacs/24.1.50/lisp/org/ob-sqlite
/usr/share/emacs/24.1.50/site-lisp/org-mode/org-xoxo hides /usr/share/emacs/24.1.50/lisp/org/org-xoxo
/usr/share/emacs/24.1.50/site-lisp/org-mode/ob-calc hides /usr/share/emacs/24.1.50/lisp/org/ob-calc
/usr/share/emacs/24.1.50/site-lisp/org-mode/org-mhe hides /usr/share/emacs/24.1.50/lisp/org/org-mhe
/usr/share/emacs/24.1.50/site-lisp/org-mode/org hides /usr/share/emacs/24.1.50/lisp/org/org
/usr/share/emacs/24.1.50/site-lisp/org-mode/org-docbook hides /usr/share/emacs/24.1.50/lisp/org/org-docbook
/usr/share/emacs/24.1.50/site-lisp/org-mode/org-mouse hides /usr/share/emacs/24.1.50/lisp/org/org-mouse
/usr/share/emacs/24.1.50/site-lisp/org-mode/org-html hides /usr/share/emacs/24.1.50/lisp/org/org-html
/usr/share/emacs/24.1.50/site-lisp/org-mode/ob-ditaa hides /usr/share/emacs/24.1.50/lisp/org/ob-ditaa
/usr/share/emacs/24.1.50/site-lisp/org-mode/ob-ocaml hides /usr/share/emacs/24.1.50/lisp/org/ob-ocaml
/usr/share/emacs/24.1.50/site-lisp/org-mode/ob-lisp hides /usr/share/emacs/24.1.50/lisp/org/ob-lisp
/usr/share/emacs/24.1.50/site-lisp/org-mode/org-jsinfo hides /usr/share/emacs/24.1.50/lisp/org/org-jsinfo
/usr/share/emacs/24.1.50/site-lisp/org-mode/org-odt hides /usr/share/emacs/24.1.50/lisp/org/org-odt
/usr/share/emacs/24.1.50/site-lisp/org-mode/org-macs hides /usr/share/emacs/24.1.50/lisp/org/org-macs
/usr/share/emacs/24.1.50/site-lisp/org-mode/org-freemind hides /usr/share/emacs/24.1.50/lisp/org/org-freemind
/usr/share/emacs/24.1.50/site-lisp/org-mode/org-archive hides /usr/share/emacs/24.1.50/lisp/org/org-archive
/usr/share/emacs/24.1.50/site-lisp/org-mode/org-latex hides /usr/share/emacs/24.1.50/lisp/org/org-latex
/usr/share/emacs/24.1.50/site-lisp/org-mode/org-crypt hides /usr/share/emacs/24.1.50/lisp/org/org-crypt
/usr/share/emacs/24.1.50/site-lisp/org-mode/ob-emacs-lisp hides /usr/share/emacs/24.1.50/lisp/org/ob-emacs-lisp
/usr/share/emacs/24.1.50/site-lisp/org-mode/ob-clojure hides /usr/share/emacs/24.1.50/lisp/org/ob-clojure
/usr/share/emacs/24.1.50/site-lisp/org-mode/org-lparse hides /usr/share/emacs/24.1.50/lisp/org/org-lparse
/usr/share/emacs/24.1.50/site-lisp/org-mode/org-colview hides /usr/share/emacs/24.1.50/lisp/org/org-colview
/usr/share/emacs/24.1.50/site-lisp/org-mode/org-taskjuggler hides /usr/share/emacs/24.1.50/lisp/org/org-taskjuggler
/usr/share/emacs/24.1.50/site-lisp/org-mode/ob-matlab hides /usr/share/emacs/24.1.50/lisp/org/ob-matlab
/usr/share/emacs/24.1.50/site-lisp/org-mode/org-faces hides /usr/share/emacs/24.1.50/lisp/org/org-faces
/usr/share/emacs/24.1.50/site-lisp/org-mode/ob-table hides /usr/share/emacs/24.1.50/lisp/org/ob-table
/usr/share/emacs/24.1.50/site-lisp/org-mode/org-capture hides /usr/share/emacs/24.1.50/lisp/org/org-capture
/usr/share/emacs/24.1.50/site-lisp/org-mode/ob-js hides /usr/share/emacs/24.1.50/lisp/org/ob-js
/usr/share/emacs/24.1.50/site-lisp/org-mode/org-mobile hides /usr/share/emacs/24.1.50/lisp/org/org-mobile
/usr/share/emacs/24.1.50/site-lisp/org-mode/org-agenda hides /usr/share/emacs/24.1.50/lisp/org/org-agenda
/usr/share/emacs/24.1.50/site-lisp/org-mode/ob-sql hides /usr/share/emacs/24.1.50/lisp/org/ob-sql
/usr/share/emacs/24.1.50/site-lisp/org-mode/org-special-blocks hides /usr/share/emacs/24.1.50/lisp/org/org-special-blocks
/usr/share/emacs/24.1.50/site-lisp/org-mode/org-beamer hides /usr/share/emacs/24.1.50/lisp/org/org-beamer
/usr/share/emacs/24.1.50/site-lisp/org-mode/ob-fortran hides /usr/share/emacs/24.1.50/lisp/org/ob-fortran
/usr/share/emacs/24.1.50/site-lisp/org-mode/org-timer hides /usr/share/emacs/24.1.50/lisp/org/org-timer
/usr/share/emacs/24.1.50/site-lisp/org-mode/ob-perl hides /usr/share/emacs/24.1.50/lisp/org/ob-perl
/usr/share/emacs/24.1.50/site-lisp/org-mode/ob-R hides /usr/share/emacs/24.1.50/lisp/org/ob-R
/usr/share/emacs/24.1.50/site-lisp/org-mode/org-ctags hides /usr/share/emacs/24.1.50/lisp/org/org-ctags
/usr/share/emacs/24.1.50/site-lisp/org-mode/ob-ruby hides /usr/share/emacs/24.1.50/lisp/org/ob-ruby
/usr/share/emacs/24.1.50/site-lisp/org-mode/org-compat hides /usr/share/emacs/24.1.50/lisp/org/org-compat
/usr/share/emacs/24.1.50/site-lisp/org-mode/org-feed hides /usr/share/emacs/24.1.50/lisp/org/org-feed
/usr/share/emacs/24.1.50/site-lisp/org-mode/org-publish hides /usr/share/emacs/24.1.50/lisp/org/org-publish
/usr/share/emacs/24.1.50/site-lisp/org-mode/org-remember hides /usr/share/emacs/24.1.50/lisp/org/org-remember
/usr/share/emacs/24.1.50/site-lisp/org-mode/ob-C hides /usr/share/emacs/24.1.50/lisp/org/ob-C
/usr/share/emacs/24.1.50/site-lisp/org-mode/org-vm hides /usr/share/emacs/24.1.50/lisp/org/org-vm
/usr/share/emacs/24.1.50/site-lisp/org-mode/org-datetree hides /usr/share/emacs/24.1.50/lisp/org/org-datetree
/usr/share/emacs/24.1.50/site-lisp/org-mode/ob-awk hides /usr/share/emacs/24.1.50/lisp/org/ob-awk
/usr/share/emacs/24.1.50/site-lisp/org-mode/org-plot hides /usr/share/emacs/24.1.50/lisp/org/org-plot
/usr/share/emacs/24.1.50/site-lisp/org-mode/ob-scheme hides /usr/share/emacs/24.1.50/lisp/org/ob-scheme
/usr/share/emacs/24.1.50/site-lisp/org-mode/org-attach hides /usr/share/emacs/24.1.50/lisp/org/org-attach
/usr/share/emacs/24.1.50/site-lisp/org-mode/ob-lob hides /usr/share/emacs/24.1.50/lisp/org/ob-lob
/usr/share/emacs/24.1.50/site-lisp/org-mode/ob-comint hides /usr/share/emacs/24.1.50/lisp/org/ob-comint
/usr/share/emacs/24.1.50/site-lisp/org-mode/org-inlinetask hides /usr/share/emacs/24.1.50/lisp/org/org-inlinetask
/usr/share/emacs/24.1.50/site-lisp/org-mode/org-clock hides /usr/share/emacs/24.1.50/lisp/org/org-clock
/usr/share/emacs/24.1.50/site-lisp/org-mode/org-info hides /usr/share/emacs/24.1.50/lisp/org/org-info

Features:
(shadow sort gnus-util mail-extr emacsbug message format-spec rfc822 mml
easymenu mml-sec mm-decode mm-bodies mm-encode mail-parse rfc2231
mailabbrev gmm-utils mailheader sendmail rfc2047 rfc2045 ietf-drums
mm-util mail-prsvr mail-utils benchmark time-date tooltip ediff-hook
vc-hooks lisp-float-type mwheel x-win x-dnd tool-bar dnd fontset image
regexp-opt fringe tabulated-list newcomment lisp-mode register page
menu-bar rfn-eshadow timer select scroll-bar mouse jit-lock font-lock
syntax facemenu font-core frame cham georgian utf-8-lang misc-lang
vietnamese tibetan thai tai-viet lao korean japanese hebrew greek
romanian slovak czech european ethiopic indian cyrillic chinese
case-table epa-hook jka-cmpr-hook help simple abbrev minibuffer loaddefs
button faces cus-face files text-properties overlay sha1 md5 base64
format env code-pages mule custom widget hashtable-print-readable
backquote make-network-process dbusbind dynamic-setting
system-font-setting font-render-setting move-toolbar gtk x-toolkit x
multi-tty emacs)





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

* bug#11943: 24.1.50; Emacs unusably slow when looking at large files (bidi support at fault)
  2012-07-15  0:50 bug#11943: 24.1.50; Emacs unusably slow when looking at large files (bidi support at fault) Dima Kogan
@ 2012-07-15  3:04 ` Eli Zaretskii
  2012-07-15  3:31   ` Dima Kogan
  2012-07-15 11:58   ` Lawrence Mitchell
  0 siblings, 2 replies; 6+ messages in thread
From: Eli Zaretskii @ 2012-07-15  3:04 UTC (permalink / raw)
  To: Dima Kogan; +Cc: 11943

> From: Dima Kogan <dima@secretsauce.net>
> Date: Sat, 14 Jul 2012 17:50:51 -0700
> 
> I'm observing that when some large text files are loaded, emacs slows to
> a crawl. As an example, I have a 14MB file open (with emacs -Q). Every
> time I do (next-line) or (previous-line) it takes a few seconds. This is
> a > 2GHz Core2 machine, so there's no reason for this to happen. 'M-x
> benchmark' says that (previous-line) takes >2s each time. I discovered
> that if I do (setq bidi-display-reordering nil) then emacs is snappy
> again, with previous-line taking <1ms.
> 
> The specific file I'm using to exhibit the bug consists of many repeated
> stanzas such as
> 
> =========================
> {
>  {2.222222,2.222222,2.222222,2.2},
>  {-2.222222,2.222222,2.222222},
>  {-22.222222,22.222222,2.222222}
> },
> =========================
> 
> without the =. Saving a stanza into a file called 'snippet', the 14MB
> file can be made with
> 
> $ for i in `seq 17`; do cat snippet snippet > xxx; mv xxx snippet; done

What is the major mode in the buffer where you see this?  I mean the
real-life example where you bumped into this, not the 'snippet' file
produced by the above.





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

* bug#11943: 24.1.50; Emacs unusably slow when looking at large files (bidi support at fault)
  2012-07-15  3:04 ` Eli Zaretskii
@ 2012-07-15  3:31   ` Dima Kogan
  2012-07-15 14:47     ` Eli Zaretskii
  2012-07-15 11:58   ` Lawrence Mitchell
  1 sibling, 1 reply; 6+ messages in thread
From: Dima Kogan @ 2012-07-15  3:31 UTC (permalink / raw)
  To: Eli Zaretskii; +Cc: 11943

> On Sun, 15 Jul 2012 06:04:47 +0300
> Eli Zaretskii <eliz@gnu.org> wrote:
>
> > From: Dima Kogan <dima@secretsauce.net>
> > Date: Sat, 14 Jul 2012 17:50:51 -0700
> > 
> > I'm observing that when some large text files are loaded, emacs
> > slows to a crawl. As an example, I have a 14MB file open (with
> > emacs -Q). Every time I do (next-line) or (previous-line) it takes
> > a few seconds. This is a > 2GHz Core2 machine, so there's no reason
> > for this to happen. 'M-x benchmark' says that (previous-line) takes
> > >2s each time. I discovered that if I do (setq
> > >bidi-display-reordering nil) then emacs is snappy
> > again, with previous-line taking <1ms.
> > 
> > The specific file I'm using to exhibit the bug consists of many
> > repeated stanzas such as
> > 
> > =========================
> > {
> >  {2.222222,2.222222,2.222222,2.2},
> >  {-2.222222,2.222222,2.222222},
> >  {-22.222222,22.222222,2.222222}
> > },
> > =========================
> > 
> > without the =. Saving a stanza into a file called 'snippet', the
> > 14MB file can be made with
> > 
> > $ for i in `seq 17`; do cat snippet snippet > xxx; mv xxx snippet;
> > done
> 
> What is the major mode in the buffer where you see this?  I mean the
> real-life example where you bumped into this, not the 'snippet' file
> produced by the above.

fundamental-mode





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

* bug#11943: 24.1.50; Emacs unusably slow when looking at large files (bidi support at fault)
  2012-07-15  3:04 ` Eli Zaretskii
  2012-07-15  3:31   ` Dima Kogan
@ 2012-07-15 11:58   ` Lawrence Mitchell
  2012-07-15 14:51     ` Eli Zaretskii
  1 sibling, 1 reply; 6+ messages in thread
From: Lawrence Mitchell @ 2012-07-15 11:58 UTC (permalink / raw)
  To: 11943

Eli Zaretskii wrote:

[...]

> What is the major mode in the buffer where you see this?  I mean the
> real-life example where you bumped into this, not the 'snippet' file
> produced by the above.

This appears to be an issue with buffers that have no strongly
R2L or L2R characters near point-min.

emacs -Q

C-x b *tmp* RET
M-x fundamental-mode RET
M-: (dotimes (i 100000) (insert "1\n")) RET
M-<

next-line now has a noticeable delay (especially when holding
down next-line, display doesn't update the cursor position).

Now insert an 'a' somewhere near the beginning of the buffer,
display updates appear instantaneous again.  If we instead go to
the end of the buffer and insert an 'a', no such change in the
response occurs.

Cheers,
Lawrence
-- 
Lawrence Mitchell <wence@gmx.li>






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

* bug#11943: 24.1.50; Emacs unusably slow when looking at large files (bidi support at fault)
  2012-07-15  3:31   ` Dima Kogan
@ 2012-07-15 14:47     ` Eli Zaretskii
  0 siblings, 0 replies; 6+ messages in thread
From: Eli Zaretskii @ 2012-07-15 14:47 UTC (permalink / raw)
  To: Dima Kogan; +Cc: 11943-done

> Date: Sat, 14 Jul 2012 20:31:03 -0700
> From: Dima Kogan <dima@secretsauce.net>
> Cc: 11943@debbugs.gnu.org
> 
> > On Sun, 15 Jul 2012 06:04:47 +0300
> > Eli Zaretskii <eliz@gnu.org> wrote:
> >
> > > From: Dima Kogan <dima@secretsauce.net>
> > > Date: Sat, 14 Jul 2012 17:50:51 -0700
> > > 
> > > I'm observing that when some large text files are loaded, emacs
> > > slows to a crawl. As an example, I have a 14MB file open (with
> > > emacs -Q). Every time I do (next-line) or (previous-line) it takes
> > > a few seconds. This is a > 2GHz Core2 machine, so there's no reason
> > > for this to happen. 'M-x benchmark' says that (previous-line) takes
> > > >2s each time. I discovered that if I do (setq
> > > >bidi-display-reordering nil) then emacs is snappy
> > > again, with previous-line taking <1ms.
> > > 
> > > The specific file I'm using to exhibit the bug consists of many
> > > repeated stanzas such as
> > > 
> > > =========================
> > > {
> > >  {2.222222,2.222222,2.222222,2.2},
> > >  {-2.222222,2.222222,2.222222},
> > >  {-22.222222,22.222222,2.222222}
> > > },
> > > =========================
> > > 
> > > without the =. Saving a stanza into a file called 'snippet', the
> > > 14MB file can be made with
> > > 
> > > $ for i in `seq 17`; do cat snippet snippet > xxx; mv xxx snippet;
> > > done
> > 
> > What is the major mode in the buffer where you see this?  I mean the
> > real-life example where you bumped into this, not the 'snippet' file
> > produced by the above.
> 
> fundamental-mode

The recommended way to handle such buffers is to set
bidi-paragraph-direction to left-to-right.  Major modes for editing
program source, that inherit from prog-mode, already do that
automatically, but fundamental-mode does not (and can not, IMO).
That's why I asked you about the major mode.

Anyway, to avoid such catastrophic slow-downs, I made a change in the
code that determines base paragraph direction, and committed those
changes as trunk revision 109098.  With those changes, redisplay
should be again fast, even with bidi-paragraph-direction at its
default nil value.

Thanks.





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

* bug#11943: 24.1.50; Emacs unusably slow when looking at large files (bidi support at fault)
  2012-07-15 11:58   ` Lawrence Mitchell
@ 2012-07-15 14:51     ` Eli Zaretskii
  0 siblings, 0 replies; 6+ messages in thread
From: Eli Zaretskii @ 2012-07-15 14:51 UTC (permalink / raw)
  To: Lawrence Mitchell; +Cc: 11943

> From: Lawrence Mitchell <wence@gmx.li>
> Date: Sun, 15 Jul 2012 12:58:17 +0100
> 
> This appears to be an issue with buffers that have no strongly
> R2L or L2R characters near point-min.

More accurately, it was an issue with _paragraphs_ that have no strong
directional characters.

> C-x b *tmp* RET
> M-x fundamental-mode RET
> M-: (dotimes (i 100000) (insert "1\n")) RET
> M-<
> 
> next-line now has a noticeable delay (especially when holding
> down next-line, display doesn't update the cursor position).
> 
> Now insert an 'a' somewhere near the beginning of the buffer,
> display updates appear instantaneous again.  If we instead go to
> the end of the buffer and insert an 'a', no such change in the
> response occurs.

However, if you insert "a\n\n" at the beginning, the slowdown comes
back again.  Which is to say that the problem is not with what we have
at point-min, but what we have in the paragraph around point.  The
fact that setting bidi-paragraph-direction to a non-nil value makes
the problem go away is another telltale sign of that.

Anyway, it's solved now.

Thanks.





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

end of thread, other threads:[~2012-07-15 14:51 UTC | newest]

Thread overview: 6+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2012-07-15  0:50 bug#11943: 24.1.50; Emacs unusably slow when looking at large files (bidi support at fault) Dima Kogan
2012-07-15  3:04 ` Eli Zaretskii
2012-07-15  3:31   ` Dima Kogan
2012-07-15 14:47     ` Eli Zaretskii
2012-07-15 11:58   ` Lawrence Mitchell
2012-07-15 14:51     ` 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).