* bug#9218: 24.0.50; bidi-display-reordering slowdown @ 2011-08-01 18:45 Florian Beck 2011-08-01 18:51 ` Eli Zaretskii 0 siblings, 1 reply; 10+ messages in thread From: Florian Beck @ 2011-08-01 18:45 UTC (permalink / raw) To: 9218 I have a very large org-file (7.2MB, 6300 entries, 137k lines). With 'bidi-display-reordering' set to nil, opening the file takes about 20s, `scroll-up-command' takes 1s. With 'bidi-display-reordering' set to t, opening the file takes ore than 15 minutes, `scroll-up-command' takes about 2.5 minutes from the very top. The files contains many paragraphs (ie empty lines), but most of these are hidden (folded). The first character in the file is »#«. So the buffer looks like this: #+STARTUP: overview * Entry… * Entry… * Entry… * Entry… … Some of the folded entries contain a couple of hundred lines; one contains a couple of thousands. [Just a data point, really. In my case, I can easily set `bidi-display-reordering' to nil for that file, but others might conceivably want to edit R-to-L text with org.] In GNU Emacs 24.0.50.2 (x86_64-unknown-linux-gnu, X toolkit) of 2011-07-30 on flo-laptop Windowing system distributor `The X.Org Foundation', version 11.0.11001000 configured using `configure '--with-x-toolkit=lucid' 'CFLAGS=-march=core2 -msse2 -mssse3 -mcx16 -mfpmath=sse -O2 -pipe'' Important settings: value of $LC_ALL: nil value of $LC_COLLATE: nil value of $LC_CTYPE: nil value of $LC_MESSAGES: nil value of $LC_MONETARY: nil value of $LC_NUMERIC: nil value of $LC_TIME: nil value of $LANG: en_US.UTF-8 value of $XMODIFIERS: nil locale-coding-system: utf-8-unix default enable-multibyte-characters: t Major mode: Lisp Interaction Minor modes in effect: diff-auto-refine-mode: t show-paren-mode: t shell-dirtrack-mode: t yas/global-mode: t yas/minor-mode: t tooltip-mode: t mouse-wheel-mode: t menu-bar-mode: 0 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 Recent input: <C-right> <C-right> <right> <C-backspace> <C-backspace> <C-backspace> <C-backspace> <C-backspace> <C-backspace> <C-backspace> <C-backspace> <C-backspace> <C-backspace> <C-backspace> b i f i - <backspace> <backspace> <backspace> d i - <tab> <f2> : SPC n i l C-x s <backspace> n M-x r e v e r <tab> t - b <tab> <return> y C-x C-g C-x k <return> C-o C-x b * s c <tab> <return> 2 3 s <backspace> <backspace> 4 s SPC i <backspace> w i t h o u t <return> <return> 2 0 : 0 3 : 1 5 <switch-frame> I f SPC y o u SPC r <backspace> a r e SPC u s d <backspace> i n g SPC t h e SPC c u r r e n z <backspace> t SPC b z r SPC v e r s i o n SPC o f SPC e m a c s , SPC m a k e SPC s u r e SPC t o SPC s e z t <backspace> <backspace> t <switch-frame> <f1> v <kp-end> <up> <up> <down> C-g <f1> v <help-echo> b i b d <backspace> i - d i <tab> <tab> <backspace> <backspace> <backspace> <backspace> <backspace> d i - d i <tab> C-SPC C-SPC <home> M-w C-g <switch-frame> SPC ` C-y ' SPC t o SPC n i l SPC ( u n t i l SPC b i d i <C-backspace> <backspace> <backspace> <backspace> <backspace> <backspace> <backspace> <backspace> <backspace> . <up> <up> <up> <up> <up> <up> <up> <C-right> <C-right> <down> <down> <down> <up> <C-left> <C-left> <C-left> <C-left> <C-left> <C-left> <C-left> c a n SPC M-x o r g - v e r s <tab> <return> <switch-frame> <switch-frame> C-c C-c q <up> <up> <return> <help-echo> <down> <return> <down> <return> <switch-frame> M-x r e p o r t - e m <tab> <return> Recent messages: Exiting summary buffer and applying spam rules Retrieving newsgroup: gmane.emacs.devel... Opening nntp server on news.gmane.org...done Fetching headers for gmane.emacs.devel...done Scoring...done Generating summary...done Saving file /home/flo/.newsrc-dribble... Wrote /home/flo/.newsrc-dribble [2 times] (Saved .newsrc-dribble) Opening nntp server on news.gmane.org...done Load-path shadows: /home/flo/.emacs.d/elpa/htmlize-1.37/htmlize hides /home/flo/elisp/lisp/htmlize /home/flo/.emacs.d/elpa/htmlize-1.37/htmlize hides /home/flo/elisp/org-mode/contrib/lisp/htmlize /home/flo/elisp/org-drill/org-drill hides /home/flo/elisp/org-mode/contrib/lisp/org-drill /home/flo/DATA/elisp/autofocus hides /home/flo/DATA/elisp/prm/autofocus /home/flo/elisp/lisp/xml hides /usr/local/share/emacs/24.0.50/lisp/xml /home/flo/.emacs.d/elpa/css-mode-1.0/css-mode hides /usr/local/share/emacs/24.0.50/lisp/textmodes/css-mode /home/flo/elisp/lisp/ruby-mode hides /usr/local/share/emacs/24.0.50/lisp/progmodes/ruby-mode /home/flo/elisp/org-mode/lisp/ob-comint hides /usr/local/share/emacs/24.0.50/lisp/org/ob-comint /home/flo/elisp/org-mode/lisp/org-install hides /usr/local/share/emacs/24.0.50/lisp/org/org-install /home/flo/elisp/org-mode/lisp/org-mhe hides /usr/local/share/emacs/24.0.50/lisp/org/org-mhe /home/flo/elisp/org-mode/lisp/org-ascii hides /usr/local/share/emacs/24.0.50/lisp/org/org-ascii /home/flo/elisp/org-mode/lisp/ob-R hides /usr/local/share/emacs/24.0.50/lisp/org/ob-R /home/flo/elisp/org-mode/lisp/org-exp-blocks hides /usr/local/share/emacs/24.0.50/lisp/org/org-exp-blocks /home/flo/elisp/org-mode/lisp/ob-asymptote hides /usr/local/share/emacs/24.0.50/lisp/org/ob-asymptote /home/flo/elisp/org-mode/lisp/org-latex hides /usr/local/share/emacs/24.0.50/lisp/org/org-latex /home/flo/elisp/org-mode/lisp/org-docbook hides /usr/local/share/emacs/24.0.50/lisp/org/org-docbook /home/flo/elisp/org-mode/lisp/ob-haskell hides /usr/local/share/emacs/24.0.50/lisp/org/ob-haskell /home/flo/elisp/org-mode/lisp/ob-sql hides /usr/local/share/emacs/24.0.50/lisp/org/ob-sql /home/flo/elisp/org-mode/lisp/ob-exp hides /usr/local/share/emacs/24.0.50/lisp/org/ob-exp /home/flo/elisp/org-mode/lisp/org-plot hides /usr/local/share/emacs/24.0.50/lisp/org/org-plot /home/flo/elisp/org-mode/lisp/ob-ruby hides /usr/local/share/emacs/24.0.50/lisp/org/ob-ruby /home/flo/elisp/org-mode/lisp/ob-eval hides /usr/local/share/emacs/24.0.50/lisp/org/ob-eval /home/flo/elisp/org-mode/lisp/ob-ocaml hides /usr/local/share/emacs/24.0.50/lisp/org/ob-ocaml /home/flo/elisp/org-mode/lisp/org-habit hides /usr/local/share/emacs/24.0.50/lisp/org/org-habit /home/flo/elisp/org-mode/lisp/org-clock hides /usr/local/share/emacs/24.0.50/lisp/org/org-clock /home/flo/elisp/org-mode/lisp/org-agenda hides /usr/local/share/emacs/24.0.50/lisp/org/org-agenda /home/flo/elisp/org-mode/lisp/ob-ledger hides /usr/local/share/emacs/24.0.50/lisp/org/ob-ledger /home/flo/elisp/org-mode/lisp/ob-octave hides /usr/local/share/emacs/24.0.50/lisp/org/ob-octave /home/flo/elisp/org-mode/lisp/org-feed hides /usr/local/share/emacs/24.0.50/lisp/org/org-feed /home/flo/elisp/org-mode/lisp/org-exp hides /usr/local/share/emacs/24.0.50/lisp/org/org-exp /home/flo/elisp/org-mode/lisp/org-faces hides /usr/local/share/emacs/24.0.50/lisp/org/org-faces /home/flo/elisp/org-mode/lisp/ob-gnuplot hides /usr/local/share/emacs/24.0.50/lisp/org/ob-gnuplot /home/flo/elisp/org-mode/lisp/org-html hides /usr/local/share/emacs/24.0.50/lisp/org/org-html /home/flo/elisp/org-mode/lisp/ob-ref hides /usr/local/share/emacs/24.0.50/lisp/org/ob-ref /home/flo/elisp/org-mode/lisp/org-beamer hides /usr/local/share/emacs/24.0.50/lisp/org/org-beamer /home/flo/elisp/org-mode/lisp/org-icalendar hides /usr/local/share/emacs/24.0.50/lisp/org/org-icalendar /home/flo/elisp/org-mode/lisp/org-table hides /usr/local/share/emacs/24.0.50/lisp/org/org-table /home/flo/elisp/org-mode/lisp/ob-tangle hides /usr/local/share/emacs/24.0.50/lisp/org/ob-tangle /home/flo/elisp/org-mode/lisp/ob-dot hides /usr/local/share/emacs/24.0.50/lisp/org/ob-dot /home/flo/elisp/org-mode/lisp/ob-org hides /usr/local/share/emacs/24.0.50/lisp/org/ob-org /home/flo/elisp/org-mode/lisp/org-bbdb hides /usr/local/share/emacs/24.0.50/lisp/org/org-bbdb /home/flo/elisp/org-mode/lisp/org-docview hides /usr/local/share/emacs/24.0.50/lisp/org/org-docview /home/flo/elisp/org-mode/lisp/org-mobile hides /usr/local/share/emacs/24.0.50/lisp/org/org-mobile /home/flo/elisp/org-mode/lisp/ob-table hides /usr/local/share/emacs/24.0.50/lisp/org/ob-table /home/flo/elisp/org-mode/lisp/ob-js hides /usr/local/share/emacs/24.0.50/lisp/org/ob-js /home/flo/elisp/org-mode/lisp/ob-lob hides /usr/local/share/emacs/24.0.50/lisp/org/ob-lob /home/flo/elisp/org-mode/lisp/ob hides /usr/local/share/emacs/24.0.50/lisp/org/ob /home/flo/elisp/org-mode/lisp/org-mks hides /usr/local/share/emacs/24.0.50/lisp/org/org-mks /home/flo/elisp/org-mode/lisp/org-publish hides /usr/local/share/emacs/24.0.50/lisp/org/org-publish /home/flo/elisp/org-mode/lisp/ob-clojure hides /usr/local/share/emacs/24.0.50/lisp/org/ob-clojure /home/flo/elisp/org-mode/lisp/org-xoxo hides /usr/local/share/emacs/24.0.50/lisp/org/org-xoxo /home/flo/elisp/org-mode/lisp/org-vm hides /usr/local/share/emacs/24.0.50/lisp/org/org-vm /home/flo/elisp/org-mode/lisp/org-special-blocks hides /usr/local/share/emacs/24.0.50/lisp/org/org-special-blocks /home/flo/elisp/org-mode/lisp/ob-awk hides /usr/local/share/emacs/24.0.50/lisp/org/ob-awk /home/flo/elisp/org-mode/lisp/ob-maxima hides /usr/local/share/emacs/24.0.50/lisp/org/ob-maxima /home/flo/elisp/org-mode/lisp/org-mouse hides /usr/local/share/emacs/24.0.50/lisp/org/org-mouse /home/flo/elisp/org-mode/lisp/ob-mscgen hides /usr/local/share/emacs/24.0.50/lisp/org/ob-mscgen /home/flo/elisp/org-mode/lisp/ob-plantuml hides /usr/local/share/emacs/24.0.50/lisp/org/ob-plantuml /home/flo/elisp/org-mode/lisp/org-ctags hides /usr/local/share/emacs/24.0.50/lisp/org/org-ctags /home/flo/elisp/org-mode/lisp/org-indent hides /usr/local/share/emacs/24.0.50/lisp/org/org-indent /home/flo/elisp/org-mode/lisp/org-macs hides /usr/local/share/emacs/24.0.50/lisp/org/org-macs /home/flo/elisp/org-mode/lisp/ob-sh hides /usr/local/share/emacs/24.0.50/lisp/org/ob-sh /home/flo/elisp/org-mode/lisp/org-gnus hides /usr/local/share/emacs/24.0.50/lisp/org/org-gnus /home/flo/elisp/org-mode/lisp/ob-lilypond hides /usr/local/share/emacs/24.0.50/lisp/org/ob-lilypond /home/flo/elisp/org-mode/lisp/org-list hides /usr/local/share/emacs/24.0.50/lisp/org/org-list /home/flo/elisp/org-mode/lisp/org-inlinetask hides /usr/local/share/emacs/24.0.50/lisp/org/org-inlinetask /home/flo/elisp/org-mode/lisp/ob-calc hides /usr/local/share/emacs/24.0.50/lisp/org/ob-calc /home/flo/elisp/org-mode/lisp/ob-lisp hides /usr/local/share/emacs/24.0.50/lisp/org/ob-lisp /home/flo/elisp/org-mode/lisp/org-pcomplete hides /usr/local/share/emacs/24.0.50/lisp/org/org-pcomplete /home/flo/elisp/org-mode/lisp/org-attach hides /usr/local/share/emacs/24.0.50/lisp/org/org-attach /home/flo/elisp/org-mode/lisp/org-footnote hides /usr/local/share/emacs/24.0.50/lisp/org/org-footnote /home/flo/elisp/org-mode/lisp/org-src hides /usr/local/share/emacs/24.0.50/lisp/org/org-src /home/flo/elisp/org-mode/lisp/org-freemind hides /usr/local/share/emacs/24.0.50/lisp/org/org-freemind /home/flo/elisp/org-mode/lisp/ob-C hides /usr/local/share/emacs/24.0.50/lisp/org/ob-C /home/flo/elisp/org-mode/lisp/ob-python hides /usr/local/share/emacs/24.0.50/lisp/org/ob-python /home/flo/elisp/org-mode/lisp/org-colview hides /usr/local/share/emacs/24.0.50/lisp/org/org-colview /home/flo/elisp/org-mode/lisp/ob-java hides /usr/local/share/emacs/24.0.50/lisp/org/ob-java /home/flo/elisp/org-mode/lisp/ob-screen hides /usr/local/share/emacs/24.0.50/lisp/org/ob-screen /home/flo/elisp/org-mode/lisp/org-compat hides /usr/local/share/emacs/24.0.50/lisp/org/org-compat /home/flo/elisp/org-mode/lisp/org-wl hides /usr/local/share/emacs/24.0.50/lisp/org/org-wl /home/flo/elisp/org-mode/lisp/org-taskjuggler hides /usr/local/share/emacs/24.0.50/lisp/org/org-taskjuggler /home/flo/elisp/org-mode/lisp/ob-latex hides /usr/local/share/emacs/24.0.50/lisp/org/ob-latex /home/flo/elisp/org-mode/lisp/org hides /usr/local/share/emacs/24.0.50/lisp/org/org /home/flo/elisp/org-mode/lisp/org-id hides /usr/local/share/emacs/24.0.50/lisp/org/org-id /home/flo/elisp/org-mode/lisp/org-mew hides /usr/local/share/emacs/24.0.50/lisp/org/org-mew /home/flo/elisp/org-mode/lisp/ob-perl hides /usr/local/share/emacs/24.0.50/lisp/org/ob-perl /home/flo/elisp/org-mode/lisp/org-archive hides /usr/local/share/emacs/24.0.50/lisp/org/org-archive /home/flo/elisp/org-mode/lisp/org-entities hides /usr/local/share/emacs/24.0.50/lisp/org/org-entities /home/flo/elisp/org-mode/lisp/org-rmail hides /usr/local/share/emacs/24.0.50/lisp/org/org-rmail /home/flo/elisp/org-mode/lisp/ob-ditaa hides /usr/local/share/emacs/24.0.50/lisp/org/ob-ditaa /home/flo/elisp/org-mode/lisp/org-mac-message hides /usr/local/share/emacs/24.0.50/lisp/org/org-mac-message /home/flo/elisp/org-mode/lisp/org-crypt hides /usr/local/share/emacs/24.0.50/lisp/org/org-crypt /home/flo/elisp/org-mode/lisp/ob-emacs-lisp hides /usr/local/share/emacs/24.0.50/lisp/org/ob-emacs-lisp /home/flo/elisp/org-mode/lisp/ob-matlab hides /usr/local/share/emacs/24.0.50/lisp/org/ob-matlab /home/flo/elisp/org-mode/lisp/org-w3m hides /usr/local/share/emacs/24.0.50/lisp/org/org-w3m /home/flo/elisp/org-mode/lisp/org-timer hides /usr/local/share/emacs/24.0.50/lisp/org/org-timer /home/flo/elisp/org-mode/lisp/org-bibtex hides /usr/local/share/emacs/24.0.50/lisp/org/org-bibtex /home/flo/elisp/org-mode/lisp/org-protocol hides /usr/local/share/emacs/24.0.50/lisp/org/org-protocol /home/flo/elisp/org-mode/lisp/ob-sass hides /usr/local/share/emacs/24.0.50/lisp/org/ob-sass /home/flo/elisp/org-mode/lisp/ob-sqlite hides /usr/local/share/emacs/24.0.50/lisp/org/ob-sqlite /home/flo/elisp/org-mode/lisp/org-datetree hides /usr/local/share/emacs/24.0.50/lisp/org/org-datetree /home/flo/elisp/org-mode/lisp/ob-css hides /usr/local/share/emacs/24.0.50/lisp/org/ob-css /home/flo/elisp/org-mode/lisp/org-remember hides /usr/local/share/emacs/24.0.50/lisp/org/org-remember /home/flo/elisp/org-mode/lisp/ob-scheme hides /usr/local/share/emacs/24.0.50/lisp/org/ob-scheme /home/flo/elisp/org-mode/lisp/org-irc hides /usr/local/share/emacs/24.0.50/lisp/org/org-irc /home/flo/elisp/org-mode/lisp/org-info hides /usr/local/share/emacs/24.0.50/lisp/org/org-info /home/flo/elisp/org-mode/lisp/org-capture hides /usr/local/share/emacs/24.0.50/lisp/org/org-capture /home/flo/elisp/org-mode/lisp/org-jsinfo hides /usr/local/share/emacs/24.0.50/lisp/org/org-jsinfo /home/flo/elisp/org-mode/lisp/ob-keys hides /usr/local/share/emacs/24.0.50/lisp/org/ob-keys /home/flo/.emacs.d/elpa/erc-5.3/erc-ring hides /usr/local/share/emacs/24.0.50/lisp/erc/erc-ring /home/flo/.emacs.d/elpa/erc-5.3/erc-menu hides /usr/local/share/emacs/24.0.50/lisp/erc/erc-menu /home/flo/.emacs.d/elpa/erc-5.3/erc-networks hides /usr/local/share/emacs/24.0.50/lisp/erc/erc-networks /home/flo/.emacs.d/elpa/erc-5.3/erc-pcomplete hides /usr/local/share/emacs/24.0.50/lisp/erc/erc-pcomplete /home/flo/.emacs.d/elpa/erc-5.3/erc-stamp hides /usr/local/share/emacs/24.0.50/lisp/erc/erc-stamp /home/flo/.emacs.d/elpa/erc-5.3/erc-speedbar hides /usr/local/share/emacs/24.0.50/lisp/erc/erc-speedbar /home/flo/.emacs.d/elpa/erc-5.3/erc-backend hides /usr/local/share/emacs/24.0.50/lisp/erc/erc-backend /home/flo/.emacs.d/elpa/erc-5.3/erc hides /usr/local/share/emacs/24.0.50/lisp/erc/erc /home/flo/.emacs.d/elpa/erc-5.3/erc-services hides /usr/local/share/emacs/24.0.50/lisp/erc/erc-services /home/flo/.emacs.d/elpa/erc-5.3/erc-truncate hides /usr/local/share/emacs/24.0.50/lisp/erc/erc-truncate /home/flo/.emacs.d/elpa/erc-5.3/erc-button hides /usr/local/share/emacs/24.0.50/lisp/erc/erc-button /home/flo/.emacs.d/elpa/erc-5.3/erc-track hides /usr/local/share/emacs/24.0.50/lisp/erc/erc-track /home/flo/.emacs.d/elpa/erc-5.3/erc-xdcc hides /usr/local/share/emacs/24.0.50/lisp/erc/erc-xdcc /home/flo/.emacs.d/elpa/erc-5.3/erc-sound hides /usr/local/share/emacs/24.0.50/lisp/erc/erc-sound /home/flo/.emacs.d/elpa/erc-5.3/erc-dcc hides /usr/local/share/emacs/24.0.50/lisp/erc/erc-dcc /home/flo/.emacs.d/elpa/erc-5.3/erc-list hides /usr/local/share/emacs/24.0.50/lisp/erc/erc-list /home/flo/.emacs.d/elpa/erc-5.3/erc-replace hides /usr/local/share/emacs/24.0.50/lisp/erc/erc-replace /home/flo/.emacs.d/elpa/erc-5.3/erc-spelling hides /usr/local/share/emacs/24.0.50/lisp/erc/erc-spelling /home/flo/.emacs.d/elpa/erc-5.3/erc-match hides /usr/local/share/emacs/24.0.50/lisp/erc/erc-match /home/flo/.emacs.d/elpa/erc-5.3/erc-page hides /usr/local/share/emacs/24.0.50/lisp/erc/erc-page /home/flo/.emacs.d/elpa/erc-5.3/erc-ibuffer hides /usr/local/share/emacs/24.0.50/lisp/erc/erc-ibuffer /home/flo/.emacs.d/elpa/erc-5.3/erc-autoaway hides /usr/local/share/emacs/24.0.50/lisp/erc/erc-autoaway /home/flo/.emacs.d/elpa/erc-5.3/erc-lang hides /usr/local/share/emacs/24.0.50/lisp/erc/erc-lang /home/flo/.emacs.d/elpa/erc-5.3/erc-compat hides /usr/local/share/emacs/24.0.50/lisp/erc/erc-compat /home/flo/.emacs.d/elpa/erc-5.3/erc-netsplit hides /usr/local/share/emacs/24.0.50/lisp/erc/erc-netsplit /home/flo/.emacs.d/elpa/erc-5.3/erc-identd hides /usr/local/share/emacs/24.0.50/lisp/erc/erc-identd /home/flo/.emacs.d/elpa/erc-5.3/erc-capab hides /usr/local/share/emacs/24.0.50/lisp/erc/erc-capab /home/flo/.emacs.d/elpa/erc-5.3/erc-notify hides /usr/local/share/emacs/24.0.50/lisp/erc/erc-notify /home/flo/.emacs.d/elpa/erc-5.3/erc-fill hides /usr/local/share/emacs/24.0.50/lisp/erc/erc-fill /home/flo/.emacs.d/elpa/erc-5.3/erc-ezbounce hides /usr/local/share/emacs/24.0.50/lisp/erc/erc-ezbounce /home/flo/.emacs.d/elpa/erc-5.3/erc-log hides /usr/local/share/emacs/24.0.50/lisp/erc/erc-log /home/flo/.emacs.d/elpa/erc-5.3/erc-goodies hides /usr/local/share/emacs/24.0.50/lisp/erc/erc-goodies /home/flo/.emacs.d/elpa/erc-5.3/erc-join hides /usr/local/share/emacs/24.0.50/lisp/erc/erc-join /home/flo/.emacs.d/elpa/erc-5.3/erc-imenu hides /usr/local/share/emacs/24.0.50/lisp/erc/erc-imenu /home/flo/.emacs.d/elpa/emms-3.0/tq hides /usr/local/share/emacs/24.0.50/lisp/emacs-lisp/tq /home/flo/.emacs.d/elpa/erc-5.3/erc-hecomplete hides /usr/local/share/emacs/24.0.50/lisp/obsolete/erc-hecomplete Features: (shadow emacsbug mailalias debug multi-isearch url-dav rect url-http nnagent preview prv-emacs tex-buf font-latex latex tex-style tex latexenc newcomment thingatpt grep face-remap bookmark w3-forms w3-style w3-hot url-file url-dired w3-toolbar w3-emacs w3-props url-auth w3 w3-menu url-queue url-news url-irc url-gw w3-emulate w3-auto w3-parse w3-fast-parse w3-display w3-mouse w3-imap url-handlers w3-widget w3-vars w3-keymap w3-cus css font devices ange-ftp w3-cfg w3-compat tabify mule-util flow-fill diff-mode jka-compr hippie-exp vc-git find-func help-mode qp gnus-html browse-url url-cache ansi-color gnus-cite mail-extr gnus-async gnus-bcklg gnus-ml gnus-topic utf-7 utf7 rfc2104 imap pop3 nndraft nnmh nnml nnfolder parse-time rot13 disp-table netrc gnutls network-stream starttls tls gnus-agent gnus-srvr gnus-score score-mode nnvirtual nntp gnus-cache smtpmail sendmail spam spam-stat bbdb-com bbdb timezone gnus-uu yenc gnus-msg gnus-art mm-uu mml2015 mm-view mml-smime smime nnir gnus-sum gnus-group gnus-undo dig gnus-propfont nnrss mm-url nnmail mail-source nnoo gnus-start gnus-spec gnus-int gnus-range gnus-win gnus gnus-ems view cal-iso cdlatex texmathp image-file org-wl org-w3m org-vm org-rmail org-mhe org-mew org-irc org-jsinfo org-infojs org-html org-info org-gnus org-docview org-bibtex bibtex org-bbdb server session saveplace paren spell-number color-insert overrides unicode-test my-font-settings fb-byte-compile zettelkasten window-config outline-bar heisig logik robin refile fb-bibtex my-skeletons my-emacs-extras re-builder message rfc822 mml mml-sec mm-decode mm-bodies mm-encode mail-parse rfc2231 rfc2047 rfc2045 ietf-drums mailabbrev gmm-utils mailheader muse-bulletins wesnoth-fb emms-fb emms-volume emms-volume-amixer emms-tag-editor emms-i18n emms-mark emms-history emms-bookmarks emms-last-played emms-stream-info emms-metaplaylist-mode emms-lastfm emms-url url url-proxy url-privacy url-expand url-methods url-history url-cookie url-util url-parse auth-source eieio password-cache url-vars mailcap emms-browser sort emms-playlist-sort emms-score emms-player-xine emms-player-mpd tq emms-playing-time emms-lyrics emms-streams emms-mode-line emms-cache emms-info-ogginfo emms-info-mp3info emms-info later-do emms-playlist-mode emms-player-mplayer emms-player-simple emms-source-playlist emms-source-file emms-setup emms emms-compat calendar-fb cal-china lunar solar cal-dst cal-bahai cal-islam cal-hebrew holidays hol-loaddefs appt diary-lib diary-loaddefs regexp-fb typopunct-fb typopunct changelog-fb dired-fb dired file-props format-spec crm keybindings cus-edit cus-start cus-load muse-publish muse-project muse-protocols muse-regexps wid-edit muse muse-nested-tags muse-mode pomodoro dictem-fb dictem timeclock uniquify command-frequency elk-test two-mode-mode yank-match nnheader mm-util mail-prsvr mail-utils gnus-util xml aspell-fb htmlize haskell-fb inf-haskell haskell-mode pp epa-file epa derived epg epg-config cfdg-mode generic org-fb org-datetree org-id org-timer org-latex org-export-latex org-beamer org-exp ob-exp org-exp-blocks org-agenda footnote org-capture org-mks org-archive org-install ob-sqlite ob-sh shell ob-ruby ob-python ob-gnuplot ob-latex ob-asymptote ob-dot ob-ditaa ob-R org byte-opt warnings ob-emacs-lisp ob-tangle ob-ref ob-lob ob-table org-footnote org-src ob-comint ob-keys ob ob-eval org-pcomplete pcomplete org-list org-faces org-compat org-entities org-macs noutline outline easy-mmode cal-menu calendar cal-loaddefs settings-fb avoid package-fb auctex-autoloads tex-site auto-complete-autoloads clojure-mode-autoloads css-mode-autoloads emms-autoloads erc-autoloads htmlize-autoloads kill-ring-search-autoloads lambdacalc-autoloads lua-mode-autoloads perspective-autoloads rainbow-mode-autoloads slime-repl-autoloads slime-autoloads w3-autoloads info yasnippet-bundle-autoloads yasnippet-bundle dropdown-list advice help-fns advice-preload yasnippet edmacro kmacro easymenu assoc cl package tabulated-list compile comint regexp-opt ring bytecomp byte-compile cconv macroexp time-date tooltip ediff-hook vc-hooks lisp-float-type mwheel x-win x-dnd tool-bar dnd fontset image fringe 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 x-toolkit x multi-tty emacs) -- Florian Beck ^ permalink raw reply [flat|nested] 10+ messages in thread
* bug#9218: 24.0.50; bidi-display-reordering slowdown 2011-08-01 18:45 bug#9218: 24.0.50; bidi-display-reordering slowdown Florian Beck @ 2011-08-01 18:51 ` Eli Zaretskii 2011-08-01 19:00 ` Eli Zaretskii 0 siblings, 1 reply; 10+ messages in thread From: Eli Zaretskii @ 2011-08-01 18:51 UTC (permalink / raw) To: Florian Beck; +Cc: 9218 > From: Florian Beck <abstraktion@t-online.de> > Date: Mon, 01 Aug 2011 20:45:27 +0200 > > I have a very large org-file (7.2MB, 6300 entries, 137k lines). > > With 'bidi-display-reordering' set to nil, opening the file takes about > 20s, `scroll-up-command' takes 1s. > > With 'bidi-display-reordering' set to t, opening the file takes ore than > 15 minutes, `scroll-up-command' takes about 2.5 minutes from the very > top. Does setting bidi-paragraph-direction to left-to-right solve the problem? ^ permalink raw reply [flat|nested] 10+ messages in thread
* bug#9218: 24.0.50; bidi-display-reordering slowdown 2011-08-01 18:51 ` Eli Zaretskii @ 2011-08-01 19:00 ` Eli Zaretskii 2011-08-01 19:34 ` Florian Beck 0 siblings, 1 reply; 10+ messages in thread From: Eli Zaretskii @ 2011-08-01 19:00 UTC (permalink / raw) To: abstraktion; +Cc: 9218 > Date: Mon, 01 Aug 2011 21:51:13 +0300 > From: Eli Zaretskii <eliz@gnu.org> > Cc: 9218@debbugs.gnu.org > > > From: Florian Beck <abstraktion@t-online.de> > > Date: Mon, 01 Aug 2011 20:45:27 +0200 > > > > I have a very large org-file (7.2MB, 6300 entries, 137k lines). > > > > With 'bidi-display-reordering' set to nil, opening the file takes about > > 20s, `scroll-up-command' takes 1s. > > > > With 'bidi-display-reordering' set to t, opening the file takes ore than > > 15 minutes, `scroll-up-command' takes about 2.5 minutes from the very > > top. > > Does setting bidi-paragraph-direction to left-to-right solve the > problem? I meant without resetting bidi-display-reordering to nil, of course. ^ permalink raw reply [flat|nested] 10+ messages in thread
* bug#9218: 24.0.50; bidi-display-reordering slowdown 2011-08-01 19:00 ` Eli Zaretskii @ 2011-08-01 19:34 ` Florian Beck 2011-08-01 19:38 ` Eli Zaretskii 0 siblings, 1 reply; 10+ messages in thread From: Florian Beck @ 2011-08-01 19:34 UTC (permalink / raw) To: Eli Zaretskii; +Cc: 9218, abstraktion Eli Zaretskii <eliz@gnu.org> writes: >> Does setting bidi-paragraph-direction to left-to-right solve the >> problem? > > I meant without resetting bidi-display-reordering to nil, of course. The file opens just as fast as with bidi turned of, yes. Scrolling is still somewhat erratic: scrolling down takes 12s the first time; then, after `(beginning-of-buffer)' it only takes ~1s (as usual for that file). But I can live with that. But that still requires me to set a per file variable. -- Florian Beck ^ permalink raw reply [flat|nested] 10+ messages in thread
* bug#9218: 24.0.50; bidi-display-reordering slowdown 2011-08-01 19:34 ` Florian Beck @ 2011-08-01 19:38 ` Eli Zaretskii 2011-08-01 20:38 ` Florian Beck 0 siblings, 1 reply; 10+ messages in thread From: Eli Zaretskii @ 2011-08-01 19:38 UTC (permalink / raw) To: Florian Beck; +Cc: 9218 > From: Florian Beck <abstraktion@t-online.de> > Cc: abstraktion@t-online.de, 9218@debbugs.gnu.org > Date: Mon, 01 Aug 2011 21:34:30 +0200 > > Eli Zaretskii <eliz@gnu.org> writes: > > >> Does setting bidi-paragraph-direction to left-to-right solve the > >> problem? > > > > I meant without resetting bidi-display-reordering to nil, of course. > > The file opens just as fast as with bidi turned of, yes. Scrolling is > still somewhat erratic: scrolling down takes 12s the first time By "scrolling down" you mean all the way to the end, or just one screenful? > then, after `(beginning-of-buffer)' it only takes ~1s (as usual for > that file). But I can live with that. > > But that still requires me to set a per file variable. I think Org Mode should set bidi-paragraph-direction in all its buffers. Can you see any disadvantages to such a solution? ^ permalink raw reply [flat|nested] 10+ messages in thread
* bug#9218: 24.0.50; bidi-display-reordering slowdown 2011-08-01 19:38 ` Eli Zaretskii @ 2011-08-01 20:38 ` Florian Beck 2011-08-02 5:40 ` Eli Zaretskii 2011-08-02 19:25 ` Eli Zaretskii 0 siblings, 2 replies; 10+ messages in thread From: Florian Beck @ 2011-08-01 20:38 UTC (permalink / raw) To: Eli Zaretskii; +Cc: 9218, Florian Beck Eli Zaretskii <eliz@gnu.org> writes: >> From: Florian Beck <abstraktion@t-online.de> >> Cc: abstraktion@t-online.de, 9218@debbugs.gnu.org >> Date: Mon, 01 Aug 2011 21:34:30 +0200 >> >> Eli Zaretskii <eliz@gnu.org> writes: >> >> >> Does setting bidi-paragraph-direction to left-to-right solve the >> >> problem? >> > >> > I meant without resetting bidi-display-reordering to nil, of course. >> >> The file opens just as fast as with bidi turned of, yes. Scrolling is >> still somewhat erratic: scrolling down takes 12s the first time > > By "scrolling down" you mean all the way to the end, or just one > screenful? `scroll-up-command' And `end-of-buffer' takes the same time (12s vs 1s). But it does not matter really. ANY command takes several seconds in that buffer, e.g. C-h k <up> or C-x C-b – whereas they are instantanious with bidi turned off. In fact <NEXT> may even be slowed down because of fontification going on (it only is slow the first time). Other commands are reproduciable. Strange. C-h k is instantenious, but C-h k <up> takes several seconds to complete. Happens also when selecting the other window (*Help*) with the mouse or when running C-h k <up> in the other window. Once the large buffer is no longer displayed in any window, the speed returns to normal (as in before bidi). > >> then, after `(beginning-of-buffer)' it only takes ~1s (as usual for >> that file). But I can live with that. >> >> But that still requires me to set a per file variable. > > I think Org Mode should set bidi-paragraph-direction in all its > buffers. Can you see any disadvantages to such a solution? Personally, no. People writing right-to-left prose might, though. I just don't understand why it has to be that slow. I have paragraphs of reasonable length. Is it because of the folded display? (But then there are only some 6000 visible lines which should be fast in any case.) Org mode does quite a bit of fontification, i.e. it already parses the buffer. Is there a way for org mode to tell the display engine where a new paragraph should be considered, what is to be displayed RtL or LtR, etc? -- Florian Beck ^ permalink raw reply [flat|nested] 10+ messages in thread
* bug#9218: 24.0.50; bidi-display-reordering slowdown 2011-08-01 20:38 ` Florian Beck @ 2011-08-02 5:40 ` Eli Zaretskii 2011-08-02 9:01 ` Eli Zaretskii 2011-08-02 19:25 ` Eli Zaretskii 1 sibling, 1 reply; 10+ messages in thread From: Eli Zaretskii @ 2011-08-02 5:40 UTC (permalink / raw) To: Florian Beck; +Cc: 9218 > From: Florian Beck <abstraktion@t-online.de> > Cc: Florian Beck <abstraktion@t-online.de>, 9218@debbugs.gnu.org > Date: Mon, 01 Aug 2011 22:38:54 +0200 > > Eli Zaretskii <eliz@gnu.org> writes: > > >> From: Florian Beck <abstraktion@t-online.de> > >> Cc: abstraktion@t-online.de, 9218@debbugs.gnu.org > >> Date: Mon, 01 Aug 2011 21:34:30 +0200 > >> > >> Eli Zaretskii <eliz@gnu.org> writes: > >> > >> >> Does setting bidi-paragraph-direction to left-to-right solve the > >> >> problem? > >> > > >> > I meant without resetting bidi-display-reordering to nil, of course. > >> > >> The file opens just as fast as with bidi turned of, yes. Scrolling is > >> still somewhat erratic: scrolling down takes 12s the first time > > > > By "scrolling down" you mean all the way to the end, or just one > > screenful? > > `scroll-up-command' > > And `end-of-buffer' takes the same time (12s vs 1s). > > But it does not matter really. ANY command takes several seconds in that > buffer, e.g. C-h k <up> or C-x C-b – whereas they are instantanious with > bidi turned off. And this slowdown happens only on the first command, as you said earlier? Or on subsequent commands as well? > In fact <NEXT> may even be slowed down because of fontification going on > (it only is slow the first time). Other commands are reproduciable. "Reproducible" meaning that they are slow not only the first time? Or does it mean something else? > Strange. C-h k is instantenious, but C-h k <up> takes several seconds to > complete. Happens also when selecting the other window (*Help*) with the mouse or > when running C-h k <up> in the other window. I'd expect the slowdown to happen whenever the window showing that Org buffer needs to be redisplayed. "C-h k" just displays the prompt in the echo area, so the Org window needs not be redisplayed. "C-h k <up>" pops up another window, which changes the dimensions of the Org window, and that window needs to be redisplayed. Emacs tries very hard to optimize the redisplay, because redisplaying everything would be painfully slow. That is the reason of what you see, IIUC. > Once the large buffer is no longer displayed in any window, the speed > returns to normal (as in before bidi). Of course: a buffer not shown in any window does not affect redisplay in any way. > >> But that still requires me to set a per file variable. > > > > I think Org Mode should set bidi-paragraph-direction in all its > > buffers. Can you see any disadvantages to such a solution? > > Personally, no. People writing right-to-left prose might, though. Why would they? setting bidi-paragraph-direction does not disable reordering of R2L text, it just makes all Org entries start at the left margin. > I just don't understand why it has to be that slow. I have paragraphs of > reasonable length. Is it because of the folded display? Probably, but that's a guess, and I'm not very good at guessing when the display engine is involved. I don't suppose you can ship me that file for playing with it? If not, I will try to generate such a huge file and see if I get such slowdown. My Org files are much shorter (around 1.5K lines overall), and I don't see any slowdown at all, even though I have Flyspell mode turned on in them. > (But then there are only some 6000 visible lines which should be > fast in any case.) The display engine has no way of knowing which parts are visible and which aren't, until it actually traverses all of that text and takes notice of the `invisible' text properties, selective-display, and other display features. This is much slower than just scanning buffer text, and somehow the paragraph direction detection comes into play during this in a way that slows things down unbearably... > Org mode does quite a bit of fontification, i.e. it already parses > the buffer. Fontification pays attention only to a few text properties, while redisplay needs to cater to much more. > Is there a way for org mode to tell the display engine where a new > paragraph should be considered, what is to be displayed RtL or LtR, > etc? How can it do that without running the same code that the bidi display runs, and which is the cause of the slowdown? The rules of determining the paragraph direction are spelled out by an annex to the Unicode Standard (http://unicode.org/reports/tr9/#The_Paragraph_Level), and bidi.c includes its full implementation. Any piece of code that tries to do the same will be hit with the same slowness. IOW, to solve this problem without the need to set bidi-paragraph-direction non-nil, I need either (a) find a bug in the current bidi display that makes paragraph detection so slow in this case, or (b) find some way to optimize the paragraph detection so it runs faster or is invoked less in most cases like this one. ^ permalink raw reply [flat|nested] 10+ messages in thread
* bug#9218: 24.0.50; bidi-display-reordering slowdown 2011-08-02 5:40 ` Eli Zaretskii @ 2011-08-02 9:01 ` Eli Zaretskii 2011-08-02 19:20 ` Eli Zaretskii 0 siblings, 1 reply; 10+ messages in thread From: Eli Zaretskii @ 2011-08-02 9:01 UTC (permalink / raw) To: abstraktion; +Cc: 9218 > Date: Tue, 02 Aug 2011 01:40:45 -0400 > From: Eli Zaretskii <eliz@gnu.org> > Cc: 9218@debbugs.gnu.org > > I don't suppose you can ship me that file for playing with it? No need: I made a dummy Org file of a considerable size, and I see the slowdown there already. ^ permalink raw reply [flat|nested] 10+ messages in thread
* bug#9218: 24.0.50; bidi-display-reordering slowdown 2011-08-02 9:01 ` Eli Zaretskii @ 2011-08-02 19:20 ` Eli Zaretskii 0 siblings, 0 replies; 10+ messages in thread From: Eli Zaretskii @ 2011-08-02 19:20 UTC (permalink / raw) To: abstraktion; +Cc: 9218-done > Date: Tue, 02 Aug 2011 05:01:53 -0400 > From: Eli Zaretskii <eliz@gnu.org> > Cc: 9218@debbugs.gnu.org > > > Date: Tue, 02 Aug 2011 01:40:45 -0400 > > From: Eli Zaretskii <eliz@gnu.org> > > Cc: 9218@debbugs.gnu.org > > > > I don't suppose you can ship me that file for playing with it? > > No need: I made a dummy Org file of a considerable size, and I see the > slowdown there already. Please try trunk revision 105387 (leaving bidi-paragraph-direction at its default nil value). I think I fixed this problem. Feel free to reopen the bug, if there are any leftovers. Thanks. ^ permalink raw reply [flat|nested] 10+ messages in thread
* bug#9218: 24.0.50; bidi-display-reordering slowdown 2011-08-01 20:38 ` Florian Beck 2011-08-02 5:40 ` Eli Zaretskii @ 2011-08-02 19:25 ` Eli Zaretskii 1 sibling, 0 replies; 10+ messages in thread From: Eli Zaretskii @ 2011-08-02 19:25 UTC (permalink / raw) To: Florian Beck; +Cc: 9218 > From: Florian Beck <abstraktion@t-online.de> > Cc: Florian Beck <abstraktion@t-online.de>, 9218@debbugs.gnu.org > Date: Mon, 01 Aug 2011 22:38:54 +0200 > > I just don't understand why it has to be that slow. I have paragraphs of > reasonable length. It turns out the problem was with looking for possible display properties and strings (text covered by them is reordered as a single entity). This searched to the end of the humongous buffer every time Emacs needed to determine paragraph direction. There was a cache that should have prevented all such searches but the first one, but Org mode caused that cache to be invalidated due to its display tricks. Plus, since the display is folded, what shows on the screen as 50 innocent lines actually hides 50 paragraphs, which means Emacs did that long search 50 times... To fix this, I dropped the simplistic cache, and instead introduced machinery that searches at most 5K characters forward. ^ permalink raw reply [flat|nested] 10+ messages in thread
end of thread, other threads:[~2011-08-02 19:25 UTC | newest] Thread overview: 10+ messages (download: mbox.gz follow: Atom feed -- links below jump to the message on this page -- 2011-08-01 18:45 bug#9218: 24.0.50; bidi-display-reordering slowdown Florian Beck 2011-08-01 18:51 ` Eli Zaretskii 2011-08-01 19:00 ` Eli Zaretskii 2011-08-01 19:34 ` Florian Beck 2011-08-01 19:38 ` Eli Zaretskii 2011-08-01 20:38 ` Florian Beck 2011-08-02 5:40 ` Eli Zaretskii 2011-08-02 9:01 ` Eli Zaretskii 2011-08-02 19:20 ` Eli Zaretskii 2011-08-02 19:25 ` Eli Zaretskii
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.