From mboxrd@z Thu Jan 1 00:00:00 1970 Path: news.gmane.org!not-for-mail From: Eli Zaretskii Newsgroups: gmane.emacs.bugs Subject: bug#13675: 24.2.93; Extremely slow redisplay when lines are very long Date: Sun, 10 Feb 2013 18:26:14 +0200 Message-ID: <83sj545e55.fsf@gnu.org> Reply-To: Eli Zaretskii NNTP-Posting-Host: plane.gmane.org X-Trace: ger.gmane.org 1360513612 12628 80.91.229.3 (10 Feb 2013 16:26:52 GMT) X-Complaints-To: usenet@ger.gmane.org NNTP-Posting-Date: Sun, 10 Feb 2013 16:26:52 +0000 (UTC) To: 13675@debbugs.gnu.org Original-X-From: bug-gnu-emacs-bounces+geb-bug-gnu-emacs=m.gmane.org@gnu.org Sun Feb 10 17:27:13 2013 Return-path: Envelope-to: geb-bug-gnu-emacs@m.gmane.org Original-Received: from lists.gnu.org ([208.118.235.17]) by plane.gmane.org with esmtp (Exim 4.69) (envelope-from ) id 1U4ZkG-0005gY-Sv for geb-bug-gnu-emacs@m.gmane.org; Sun, 10 Feb 2013 17:27:13 +0100 Original-Received: from localhost ([::1]:38815 helo=lists.gnu.org) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1U4Zjx-0006Fh-Gw for geb-bug-gnu-emacs@m.gmane.org; Sun, 10 Feb 2013 11:26:53 -0500 Original-Received: from eggs.gnu.org ([208.118.235.92]:34477) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1U4Zjt-0006FW-3S for bug-gnu-emacs@gnu.org; Sun, 10 Feb 2013 11:26:52 -0500 Original-Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1U4Zjr-0003Ez-1G for bug-gnu-emacs@gnu.org; Sun, 10 Feb 2013 11:26:49 -0500 Original-Received: from debbugs.gnu.org ([140.186.70.43]:43746) by eggs.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1U4Zjq-0003Ev-Ue for bug-gnu-emacs@gnu.org; Sun, 10 Feb 2013 11:26:46 -0500 Original-Received: from Debian-debbugs by debbugs.gnu.org with local (Exim 4.72) (envelope-from ) id 1U4Zk5-0006ZE-Lh for bug-gnu-emacs@gnu.org; Sun, 10 Feb 2013 11:27:01 -0500 X-Loop: help-debbugs@gnu.org Resent-From: Eli Zaretskii Original-Sender: debbugs-submit-bounces@debbugs.gnu.org Resent-CC: bug-gnu-emacs@gnu.org Resent-Date: Sun, 10 Feb 2013 16:27:01 +0000 Resent-Message-ID: Resent-Sender: help-debbugs@gnu.org X-GNU-PR-Message: report 13675 X-GNU-PR-Package: emacs X-GNU-PR-Keywords: X-Debbugs-Original-To: bug-gnu-emacs@gnu.org Original-Received: via spool by submit@debbugs.gnu.org id=B.136051360225215 (code B ref -1); Sun, 10 Feb 2013 16:27:01 +0000 Original-Received: (at submit) by debbugs.gnu.org; 10 Feb 2013 16:26:42 +0000 Original-Received: from localhost ([127.0.0.1]:49210 helo=debbugs.gnu.org) by debbugs.gnu.org with esmtp (Exim 4.72) (envelope-from ) id 1U4Zjj-0006Yc-Gs for submit@debbugs.gnu.org; Sun, 10 Feb 2013 11:26:40 -0500 Original-Received: from eggs.gnu.org ([208.118.235.92]:51234) by debbugs.gnu.org with esmtp (Exim 4.72) (envelope-from ) id 1U4Zje-0006YP-8w for submit@debbugs.gnu.org; Sun, 10 Feb 2013 11:26:36 -0500 Original-Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1U4ZjN-00039B-AC for submit@debbugs.gnu.org; Sun, 10 Feb 2013 11:26:19 -0500 Original-Received: from lists.gnu.org ([208.118.235.17]:48260) by eggs.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1U4ZjN-000397-6c for submit@debbugs.gnu.org; Sun, 10 Feb 2013 11:26:17 -0500 Original-Received: from eggs.gnu.org ([208.118.235.92]:34344) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1U4ZjK-000699-NK for bug-gnu-emacs@gnu.org; Sun, 10 Feb 2013 11:26:17 -0500 Original-Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1U4ZjI-00036w-He for bug-gnu-emacs@gnu.org; Sun, 10 Feb 2013 11:26:14 -0500 Original-Received: from mtaout20.012.net.il ([80.179.55.166]:41442) by eggs.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1U4ZjI-00036U-4J for bug-gnu-emacs@gnu.org; Sun, 10 Feb 2013 11:26:12 -0500 Original-Received: from conversion-daemon.a-mtaout20.012.net.il by a-mtaout20.012.net.il (HyperSendmail v2007.08) id <0MI000400IXMVQ00@a-mtaout20.012.net.il> for bug-gnu-emacs@gnu.org; Sun, 10 Feb 2013 18:26:09 +0200 (IST) Original-Received: from HOME-C4E4A596F7 ([87.69.4.28]) by a-mtaout20.012.net.il (HyperSendmail v2007.08) with ESMTPA id <0MI000427IZLOM60@a-mtaout20.012.net.il> for bug-gnu-emacs@gnu.org; Sun, 10 Feb 2013 18:26:09 +0200 (IST) X-012-Sender: halo1@inter.net.il X-detected-operating-system: by eggs.gnu.org: Solaris 10 X-detected-operating-system: by eggs.gnu.org: GNU/Linux 2.6.x X-BeenThere: debbugs-submit@debbugs.gnu.org X-Mailman-Version: 2.1.13 Precedence: list X-detected-operating-system: by eggs.gnu.org: GNU/Linux 2.6.x X-Received-From: 140.186.70.43 X-BeenThere: bug-gnu-emacs@gnu.org List-Id: "Bug reports for GNU Emacs, the Swiss army knife of text editors" List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: bug-gnu-emacs-bounces+geb-bug-gnu-emacs=m.gmane.org@gnu.org Original-Sender: bug-gnu-emacs-bounces+geb-bug-gnu-emacs=m.gmane.org@gnu.org Xref: news.gmane.org gmane.emacs.bugs:71007 Archived-At: This is a very long-standing deficiency of the Emacs display engine: it is awfully slow in buffers with very long (thousands of characters) lines. Specifically, many simple movement commands, scrolling, or even typing "M-x" can take several seconds(!) to complete. A simple Awk script attached below can be used to generate such files. For the latest discussions of this and some data, see this thread: http://lists.gnu.org/archive/html/emacs-devel/2013-02/msg00135.html The solution for this bug should produce algorithmic changes in the display engine and possibly also supporting changes in data structures that would prevent such a terrible slow-down with long lines. Ideally, redisplay of such buffers should not be much slower than buffers with "normal" line length. Here's a script that can be used to produce test files for this bug: --------------------------------------------- BEGIN { # 500 lines for (i = 1; i <= 500; i++) { # Line length between 10K and 20K characters + newline line_len = 10000 * rand() + 10000; for (j = 1; j <= line_len; j++) { # 15% of punctuation and digit charcaters, the rest letters if (rand() < 0.15) { # Start at SPACE lbase = 32; llen = 33; } else { # Start at 'a' lbase = 97; llen = 26; } printf "%c", llen * rand() + lbase; } printf "\n"; } } --------------------------------------------- In GNU Emacs 24.2.93.1 (i386-mingw-nt5.1.2600) of 2013-02-07 on HOME-C4E4A596F7 Windowing system distributor `Microsoft Corp.', version 5.1.2600 Configured using: `configure --with-gcc (3.4) --cflags -Id:/usr/include/libxml2' Important settings: value of $LANG: ENU locale-coding-system: cp1255 default enable-multibyte-characters: t Major mode: Mail Minor modes in effect: shell-dirtrack-mode: t diff-auto-refine-mode: t flyspell-mode: t desktop-save-mode: t show-paren-mode: t display-time-mode: t 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 temp-buffer-resize-mode: t line-number-mode: t auto-fill-function: mail-mode-auto-fill abbrev-mode: t Recent input: e t a i l s . C-x C-e T h e SPC r e a s o n SPC f o r SPC t h e SPC d e f a u l t SPC v a l u e SPC i s SPC t o SPC a v o i d SPC t h e SPC a n n o y i n g SPC j u m p s SPC o f SPC t h e SPC m o d e SPC l i n e SPC a u p SPC a n d SPC d o w n M-q SPC w h e n SPC t h e SPC e c h o SPC a r e a SPC d i s p l a y s SPC m e s s a g e s SPC o f SPC d i f f e r e n t SPC l e n g t h . C-c C-s d d d d d d d d d SPC d d o P O d d d d d d d d d d n d SPC d d d SPC d SPC d d d d d C-z C-z C-z C-z C-z C-z C-z C-z d d d d d d SPC SPC d C-x C-s M-x r e p o r t - e m a c s - b u Recent messages: Sending... Added to d:/usr/eli/rmail/SENT.MAIL Sending email Sending email done Sending...done Added to d:/usr/eli/rmail/PORTS.rmail No following nondeleted message Mark set Saving file d:/usr/eli/rmail/INBOX... Wrote d:/usr/eli/rmail/INBOX [2 times] Load-path shadows: None found. Features: (shadow emacsbug cc-awk tar-mode etags texinfo mule-util ebuff-menu electric bug-reference add-log misearch multi-isearch dabbrev time-stamp rmailout network-stream starttls tls mail-extr smtpmail auth-source eieio password-cache shell mailalias sendmail help-mode tcl nxml-uchnm rng-xsd xsd-regexp rng-cmpct rng-nxml rng-valid rng-loc rng-uri rng-parse nxml-parse rng-match rng-dt rng-util rng-pttrn nxml-ns nxml-mode nxml-outln nxml-rap nxml-util nxml-glyph nxml-enc xmltok sgml-mode conf-mode generic arc-mode archive-mode diff-mode dired-x cl-macs gv dired face-remap org-wl org-w3m org-vm org-rmail org-mhe org-mew org-irc org-jsinfo org-infojs org-html org-exp ob-exp org-exp-blocks org-agenda org-info org-gnus gnus-util org-docview org-bibtex bibtex org-bbdb org byte-opt warnings bytecomp byte-compile cconv advice help-fns advice-preload ob-tangle ob-ref ob-lob ob-table org-footnote org-src ob-comint ob-keys org-pcomplete pcomplete org-list org-faces org-entities org-version ob-emacs-lisp ob org-compat org-macs ob-eval org-loaddefs find-func cal-menu calendar cal-loaddefs parse-time vc-cvs gud comint ansi-color ring sh-script smie executable autoconf autoconf-mode make-mode autorevert noutline outline easy-mmode jka-compr info vc-bzr cc-langs cl cl-lib cc-mode cc-fonts cc-guess cc-menus cc-cmds cc-styles cc-align cc-engine cc-vars cc-defs flyspell rmailsum qp rmailmm message format-spec rfc822 mml mml-sec mm-decode mm-bodies mm-encode mailabbrev gmm-utils mailheader mail-parse rfc2231 rmail rfc2047 rfc2045 ietf-drums mm-util mail-prsvr mail-utils desktop server filecache mairix cus-edit easymenu cus-start cus-load wid-edit saveplace midnight ispell generic-x paren battery time time-date tooltip ediff-hook vc-hooks lisp-float-type mwheel dos-w32 ls-lisp w32-common-fns disp-table w32-win w32-vars 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 macroexp files text-properties overlay sha1 md5 base64 format env code-pages mule custom widget hashtable-print-readable backquote make-network-process w32 multi-tty emacs)