Package: emacs;
Reported by: Dave Abrahams <dave <at> boostpro.com>
Date: Sat, 18 Jun 2011 16:46:02 UTC
Severity: normal
Found in version 23.3
Fixed in version 29.1
Done: Lars Ingebrigtsen <larsi <at> gnus.org>
Bug is archived. No further changes may be made.
To add a comment to this bug, you must first unarchive it, by sending
a message to control AT debbugs.gnu.org, with unarchive 8890 in the body.
You can then email your comments to 8890 AT debbugs.gnu.org in the normal way.
Toggle the display of automated, internal messages from the tracker.
View this report as an mbox folder, status mbox, maintainer mbox
owner <at> debbugs.gnu.org, bug-gnu-emacs <at> gnu.org
:bug#8890
; Package emacs
.
(Sat, 18 Jun 2011 16:46:02 GMT) Full text and rfc822 format available.Dave Abrahams <dave <at> boostpro.com>
:bug-gnu-emacs <at> gnu.org
.
(Sat, 18 Jun 2011 16:46:02 GMT) Full text and rfc822 format available.Message #5 received at submit <at> debbugs.gnu.org (full text, mbox):
From: Dave Abrahams <dave <at> boostpro.com> To: bug-gnu-emacs <at> gnu.org Subject: 23.3; message writing slows emacs Date: Sat, 18 Jun 2011 12:45:15 -0400
I haven't done actual timings, but I'm finding that I have a *very* strong perception that when emacs is writing lots of messages, it slows down considerably. Even if this is only a perception, if it's shared by others I think it should be considered a bug. Unless the *Message* buffer is visible, these messages are often flashing by so quickly that nobody could hope to see them. It would be good, IMO, to delay updating the visible message in the minibuffer line long enough to be sure that the message just written isn't about to be overwritten so fast that the user couldn't read it anyway. In GNU Emacs 23.3.1 (x86_64-apple-darwin, NS apple-appkit-1038.35) of 2011-03-09 on black.porkrind.org Windowing system distributor `Apple', version 10.3.1038 configured using `configure '--host=x86_64-apple-darwin' '--build=i686-apple-darwin' '--with-ns' 'build_alias=i686-apple-darwin' 'host_alias=x86_64-apple-darwin' 'CC=gcc -mmacosx-version-min=10.5'' 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: nil value of $XMODIFIERS: nil locale-coding-system: nil default enable-multibyte-characters: t Major mode: Emacs-Lisp Minor modes in effect: diff-auto-refine-mode: t me-minor-mode: t show-paren-mode: t ido-everywhere: t global-auto-revert-mode: t delete-selection-mode: t 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 auto-encryption-mode: t auto-compression-mode: t line-number-mode: t transient-mark-mode: t Recent input: C-, C-, C-, C-a C-. C-. C-. C-. C-. C-. C-n C-, C-, C-, C-, C-p C-p C-p C-p C-p C-p C-p C-p C-p C-e C-p C-p C-p C-n C-n C-n C-e C-, C-, C-, C-, C-, C-. C-. C-. C-. C-. C-e C-b C-n C-e C-n C-n C-p C-p C-n C-n C-b C-( C-p C-p C-p C-p C-p C-p C-p C-p C-p C-p C-p C-p C-p C-p C-p C-p C-p C-p C-p C-p C-p C-p C-p C-p C-p C-p C-p C-p C-p C-p C-p C-p C-p C-p C-p C-p C-p C-p C-p C-p C-p C-p C-n C-n C-e C-, C-a C-n C-n C-n C-n C-n C-n C-n C-n C-n C-n C-n C-n C-n C-n C-n C-n C-n C-n C-n C-n C-n C-n C-n C-n C-n C-n C-n C-n C-n C-n C-n C-n C-n C-n C-n C-n C-n C-n C-n C-n C-n C-n C-n C-n C-n C-n C-n C-n C-n C-n C-n C-n C-n C-n C-n C-n C-n C-p C-p C-p C-p C-p C-p C-p C-p C-p C-p C-p C-p C-. C-. C-. C-. C-p C-p C-p C-p C-p C-p C-p C-p C-p C-p C-p C-n C-n C-n C-n C-n C-. C-. C-. C-. C-. C-. C-. C-. C-. C-. C-. C-. C-. C-. C-. C-. C-. C-. C-. C-. C-. C-n C-n C-n C-n C-n C-n C-p C-p C-, C-, C-, C-, C-, C-p C-p C-p C-p C-p C-p C-p C-p C-p C-n C-. C-. C-. <down-mouse-1> <mouse-1> C-x C-n C-x C-n C-n C-p q y C-x C-n C-x C-p C-n C-n C-n C-n C-n C-n C-n C-n C-n C-p C-p C-p C-p C-p C-p C-p C-p C-p C-p C-p C-p C-p C-p C-p C-p C-p C-p C-p M-x M-p C-g M-x e m a c s - b u f <tab> <backspace> g <tab> C-a - <tab> <return> Recent messages: Saving file /Users/dave/.emacs.d/el-get/dwamacs/settings/wl-settings.el... Saving file /Users/dave/.emacs.d/el-get/dwamacs/settings/mime-view-settings.el... Saving file /Users/dave/.emacs.d/el-get/dwamacs/settings/compile-settings.el... Saving file /Users/dave/.emacs.d/el-get/dwamacs/settings/ediff-settings.el... Saving file /Users/dave/.emacs.d/el-get/dwamacs/settings/settings.el... Wrote /Users/dave/.emacs.d/el-get/dwamacs/settings/settings.el uncompressing files.el.gz...done Mark saved where search started Quit this Ediff session? (y or n) Quit Load-path shadows: /Users/dave/.emacs.d/el-get/wl-gravatar/gravatar hides /Users/dave/.emacs.d/el-get/gravatar/gravatar /Users/dave/.emacs.d/el-get/wl-gravatar/gravatar hides /Users/dave/.emacs.d/el-get/nognus/lisp/gravatar /Users/dave/.emacs.d/el-get/nognus/lisp/utf7 hides /Users/dave/.emacs.d/el-get/wanderlust/site-lisp/wl/utf7 /Users/dave/.emacs.d/el-get/nognus/lisp/smime hides /Users/dave/.emacs.d/el-get/semi/site-lisp/semi/smime /Users/dave/.emacs.d/el-get/nognus/lisp/pgg hides /Users/dave/.emacs.d/el-get/semi/site-lisp/semi/pgg /Users/dave/.emacs.d/el-get/nognus/lisp/pgg-pgp5 hides /Users/dave/.emacs.d/el-get/semi/site-lisp/semi/pgg-pgp5 /Users/dave/.emacs.d/el-get/nognus/lisp/pgg-pgp hides /Users/dave/.emacs.d/el-get/semi/site-lisp/semi/pgg-pgp /Users/dave/.emacs.d/el-get/nognus/lisp/pgg-parse hides /Users/dave/.emacs.d/el-get/semi/site-lisp/semi/pgg-parse /Users/dave/.emacs.d/el-get/nognus/lisp/pgg-gpg hides /Users/dave/.emacs.d/el-get/semi/site-lisp/semi/pgg-gpg /Users/dave/.emacs.d/el-get/nognus/lisp/pgg-def hides /Users/dave/.emacs.d/el-get/semi/site-lisp/semi/pgg-def /Users/dave/.emacs.d/el-get/nognus/lisp/sha1 hides /Users/dave/.emacs.d/el-get/flim/site-lisp/flim/sha1 /Users/dave/.emacs.d/el-get/nognus/lisp/sasl hides /Users/dave/.emacs.d/el-get/flim/site-lisp/flim/sasl /Users/dave/.emacs.d/el-get/nognus/lisp/sasl-ntlm hides /Users/dave/.emacs.d/el-get/flim/site-lisp/flim/sasl-ntlm /Users/dave/.emacs.d/el-get/nognus/lisp/sasl-digest hides /Users/dave/.emacs.d/el-get/flim/site-lisp/flim/sasl-digest /Users/dave/.emacs.d/el-get/nognus/lisp/sasl-cram hides /Users/dave/.emacs.d/el-get/flim/site-lisp/flim/sasl-cram /Users/dave/.emacs.d/el-get/nognus/lisp/ntlm hides /Users/dave/.emacs.d/el-get/flim/site-lisp/flim/ntlm /Users/dave/.emacs.d/el-get/nognus/lisp/md4 hides /Users/dave/.emacs.d/el-get/flim/site-lisp/flim/md4 /Users/dave/.emacs.d/el-get/nognus/lisp/hmac-md5 hides /Users/dave/.emacs.d/el-get/flim/site-lisp/flim/hmac-md5 /Users/dave/.emacs.d/el-get/nognus/lisp/hmac-def hides /Users/dave/.emacs.d/el-get/flim/site-lisp/flim/hmac-def /Users/dave/.emacs.d/el-get/nognus/lisp/hex-util hides /Users/dave/.emacs.d/el-get/flim/site-lisp/flim/hex-util /Users/dave/.emacs.d/el-get/nognus/lisp/.dir-locals hides /Users/dave/.emacs.d/el-get/magit/.dir-locals /Users/dave/.emacs.d/el-get/nognus/lisp/sha1 hides /Applications/Emacs.app/Contents/Resources/lisp/sha1 /Users/dave/.emacs.d/el-get/nognus/lisp/pgg hides /Applications/Emacs.app/Contents/Resources/lisp/pgg /Users/dave/.emacs.d/el-get/nognus/lisp/pgg-pgp5 hides /Applications/Emacs.app/Contents/Resources/lisp/pgg-pgp5 /Users/dave/.emacs.d/el-get/nognus/lisp/pgg-pgp hides /Applications/Emacs.app/Contents/Resources/lisp/pgg-pgp /Users/dave/.emacs.d/el-get/nognus/lisp/pgg-parse hides /Applications/Emacs.app/Contents/Resources/lisp/pgg-parse /Users/dave/.emacs.d/el-get/nognus/lisp/pgg-gpg hides /Applications/Emacs.app/Contents/Resources/lisp/pgg-gpg /Users/dave/.emacs.d/el-get/nognus/lisp/pgg-def hides /Applications/Emacs.app/Contents/Resources/lisp/pgg-def /Users/dave/.emacs.d/el-get/nognus/lisp/password-cache hides /Applications/Emacs.app/Contents/Resources/lisp/password-cache /Users/dave/.emacs.d/el-get/nognus/lisp/md4 hides /Applications/Emacs.app/Contents/Resources/lisp/md4 /Users/dave/.emacs.d/el-get/nognus/lisp/hex-util hides /Applications/Emacs.app/Contents/Resources/lisp/hex-util /Users/dave/.emacs.d/el-get/nognus/lisp/format-spec hides /Applications/Emacs.app/Contents/Resources/lisp/format-spec /Users/dave/.emacs.d/el-get/nognus/lisp/dns-mode hides /Applications/Emacs.app/Contents/Resources/lisp/textmodes/dns-mode /Users/dave/.emacs.d/el-get/org-mode/lisp/org hides /Applications/Emacs.app/Contents/Resources/lisp/org/org /Users/dave/.emacs.d/el-get/org-mode/lisp/org-xoxo hides /Applications/Emacs.app/Contents/Resources/lisp/org/org-xoxo /Users/dave/.emacs.d/el-get/org-mode/lisp/org-wl hides /Applications/Emacs.app/Contents/Resources/lisp/org/org-wl /Users/dave/.emacs.d/el-get/org-mode/lisp/org-w3m hides /Applications/Emacs.app/Contents/Resources/lisp/org/org-w3m /Users/dave/.emacs.d/el-get/org-mode/lisp/org-vm hides /Applications/Emacs.app/Contents/Resources/lisp/org/org-vm /Users/dave/.emacs.d/el-get/org-mode/lisp/org-timer hides /Applications/Emacs.app/Contents/Resources/lisp/org/org-timer /Users/dave/.emacs.d/el-get/org-mode/lisp/org-table hides /Applications/Emacs.app/Contents/Resources/lisp/org/org-table /Users/dave/.emacs.d/el-get/org-mode/lisp/org-src hides /Applications/Emacs.app/Contents/Resources/lisp/org/org-src /Users/dave/.emacs.d/el-get/org-mode/lisp/org-rmail hides /Applications/Emacs.app/Contents/Resources/lisp/org/org-rmail /Users/dave/.emacs.d/el-get/org-mode/lisp/org-remember hides /Applications/Emacs.app/Contents/Resources/lisp/org/org-remember /Users/dave/.emacs.d/el-get/org-mode/lisp/org-publish hides /Applications/Emacs.app/Contents/Resources/lisp/org/org-publish /Users/dave/.emacs.d/el-get/org-mode/lisp/org-protocol hides /Applications/Emacs.app/Contents/Resources/lisp/org/org-protocol /Users/dave/.emacs.d/el-get/org-mode/lisp/org-plot hides /Applications/Emacs.app/Contents/Resources/lisp/org/org-plot /Users/dave/.emacs.d/el-get/org-mode/lisp/org-mouse hides /Applications/Emacs.app/Contents/Resources/lisp/org/org-mouse /Users/dave/.emacs.d/el-get/org-mode/lisp/org-mobile hides /Applications/Emacs.app/Contents/Resources/lisp/org/org-mobile /Users/dave/.emacs.d/el-get/org-mode/lisp/org-mhe hides /Applications/Emacs.app/Contents/Resources/lisp/org/org-mhe /Users/dave/.emacs.d/el-get/org-mode/lisp/org-mew hides /Applications/Emacs.app/Contents/Resources/lisp/org/org-mew /Users/dave/.emacs.d/el-get/org-mode/lisp/org-macs hides /Applications/Emacs.app/Contents/Resources/lisp/org/org-macs /Users/dave/.emacs.d/el-get/org-mode/lisp/org-mac-message hides /Applications/Emacs.app/Contents/Resources/lisp/org/org-mac-message /Users/dave/.emacs.d/el-get/org-mode/lisp/org-list hides /Applications/Emacs.app/Contents/Resources/lisp/org/org-list /Users/dave/.emacs.d/el-get/org-mode/lisp/org-latex hides /Applications/Emacs.app/Contents/Resources/lisp/org/org-latex /Users/dave/.emacs.d/el-get/org-mode/lisp/org-jsinfo hides /Applications/Emacs.app/Contents/Resources/lisp/org/org-jsinfo /Users/dave/.emacs.d/el-get/org-mode/lisp/org-irc hides /Applications/Emacs.app/Contents/Resources/lisp/org/org-irc /Users/dave/.emacs.d/el-get/org-mode/lisp/org-install hides /Applications/Emacs.app/Contents/Resources/lisp/org/org-install /Users/dave/.emacs.d/el-get/org-mode/lisp/org-inlinetask hides /Applications/Emacs.app/Contents/Resources/lisp/org/org-inlinetask /Users/dave/.emacs.d/el-get/org-mode/lisp/org-info hides /Applications/Emacs.app/Contents/Resources/lisp/org/org-info /Users/dave/.emacs.d/el-get/org-mode/lisp/org-indent hides /Applications/Emacs.app/Contents/Resources/lisp/org/org-indent /Users/dave/.emacs.d/el-get/org-mode/lisp/org-id hides /Applications/Emacs.app/Contents/Resources/lisp/org/org-id /Users/dave/.emacs.d/el-get/org-mode/lisp/org-icalendar hides /Applications/Emacs.app/Contents/Resources/lisp/org/org-icalendar /Users/dave/.emacs.d/el-get/org-mode/lisp/org-html hides /Applications/Emacs.app/Contents/Resources/lisp/org/org-html /Users/dave/.emacs.d/el-get/org-mode/lisp/org-habit hides /Applications/Emacs.app/Contents/Resources/lisp/org/org-habit /Users/dave/.emacs.d/el-get/org-mode/lisp/org-gnus hides /Applications/Emacs.app/Contents/Resources/lisp/org/org-gnus /Users/dave/.emacs.d/el-get/org-mode/lisp/org-freemind hides /Applications/Emacs.app/Contents/Resources/lisp/org/org-freemind /Users/dave/.emacs.d/el-get/org-mode/lisp/org-footnote hides /Applications/Emacs.app/Contents/Resources/lisp/org/org-footnote /Users/dave/.emacs.d/el-get/org-mode/lisp/org-feed hides /Applications/Emacs.app/Contents/Resources/lisp/org/org-feed /Users/dave/.emacs.d/el-get/org-mode/lisp/org-faces hides /Applications/Emacs.app/Contents/Resources/lisp/org/org-faces /Users/dave/.emacs.d/el-get/org-mode/lisp/org-exp hides /Applications/Emacs.app/Contents/Resources/lisp/org/org-exp /Users/dave/.emacs.d/el-get/org-mode/lisp/org-exp-blocks hides /Applications/Emacs.app/Contents/Resources/lisp/org/org-exp-blocks /Users/dave/.emacs.d/el-get/org-mode/lisp/org-docbook hides /Applications/Emacs.app/Contents/Resources/lisp/org/org-docbook /Users/dave/.emacs.d/el-get/org-mode/lisp/org-datetree hides /Applications/Emacs.app/Contents/Resources/lisp/org/org-datetree /Users/dave/.emacs.d/el-get/org-mode/lisp/org-crypt hides /Applications/Emacs.app/Contents/Resources/lisp/org/org-crypt /Users/dave/.emacs.d/el-get/org-mode/lisp/org-compat hides /Applications/Emacs.app/Contents/Resources/lisp/org/org-compat /Users/dave/.emacs.d/el-get/org-mode/lisp/org-colview hides /Applications/Emacs.app/Contents/Resources/lisp/org/org-colview /Users/dave/.emacs.d/el-get/org-mode/lisp/org-clock hides /Applications/Emacs.app/Contents/Resources/lisp/org/org-clock /Users/dave/.emacs.d/el-get/org-mode/lisp/org-bibtex hides /Applications/Emacs.app/Contents/Resources/lisp/org/org-bibtex /Users/dave/.emacs.d/el-get/org-mode/lisp/org-bbdb hides /Applications/Emacs.app/Contents/Resources/lisp/org/org-bbdb /Users/dave/.emacs.d/el-get/org-mode/lisp/org-attach hides /Applications/Emacs.app/Contents/Resources/lisp/org/org-attach /Users/dave/.emacs.d/el-get/org-mode/lisp/org-ascii hides /Applications/Emacs.app/Contents/Resources/lisp/org/org-ascii /Users/dave/.emacs.d/el-get/org-mode/lisp/org-archive hides /Applications/Emacs.app/Contents/Resources/lisp/org/org-archive /Users/dave/.emacs.d/el-get/org-mode/lisp/org-agenda hides /Applications/Emacs.app/Contents/Resources/lisp/org/org-agenda /Users/dave/.emacs.d/el-get/nognus/lisp/tls hides /Applications/Emacs.app/Contents/Resources/lisp/net/tls /Users/dave/.emacs.d/el-get/nognus/lisp/sasl hides /Applications/Emacs.app/Contents/Resources/lisp/net/sasl /Users/dave/.emacs.d/el-get/nognus/lisp/sasl-ntlm hides /Applications/Emacs.app/Contents/Resources/lisp/net/sasl-ntlm /Users/dave/.emacs.d/el-get/nognus/lisp/sasl-digest hides /Applications/Emacs.app/Contents/Resources/lisp/net/sasl-digest /Users/dave/.emacs.d/el-get/nognus/lisp/sasl-cram hides /Applications/Emacs.app/Contents/Resources/lisp/net/sasl-cram /Users/dave/.emacs.d/el-get/nognus/lisp/ntlm hides /Applications/Emacs.app/Contents/Resources/lisp/net/ntlm /Users/dave/.emacs.d/el-get/nognus/lisp/netrc hides /Applications/Emacs.app/Contents/Resources/lisp/net/netrc /Users/dave/.emacs.d/el-get/nognus/lisp/imap hides /Applications/Emacs.app/Contents/Resources/lisp/net/imap /Users/dave/.emacs.d/el-get/nognus/lisp/hmac-md5 hides /Applications/Emacs.app/Contents/Resources/lisp/net/hmac-md5 /Users/dave/.emacs.d/el-get/nognus/lisp/hmac-def hides /Applications/Emacs.app/Contents/Resources/lisp/net/hmac-def /Users/dave/.emacs.d/el-get/nognus/lisp/dns hides /Applications/Emacs.app/Contents/Resources/lisp/net/dns /Users/dave/.emacs.d/el-get/nognus/lisp/dig hides /Applications/Emacs.app/Contents/Resources/lisp/net/dig /Users/dave/.emacs.d/el-get/nognus/lisp/uudecode hides /Applications/Emacs.app/Contents/Resources/lisp/mail/uudecode /Users/dave/.emacs.d/el-get/wanderlust/site-lisp/wl/rfc2368 hides /Applications/Emacs.app/Contents/Resources/lisp/mail/rfc2368 /Users/dave/.emacs.d/el-get/nognus/lisp/hashcash hides /Applications/Emacs.app/Contents/Resources/lisp/mail/hashcash /Users/dave/.emacs.d/el-get/nognus/lisp/binhex hides /Applications/Emacs.app/Contents/Resources/lisp/mail/binhex /Users/dave/.emacs.d/el-get/nognus/lisp/yenc hides /Applications/Emacs.app/Contents/Resources/lisp/gnus/yenc /Users/dave/.emacs.d/el-get/nognus/lisp/utf7 hides /Applications/Emacs.app/Contents/Resources/lisp/gnus/utf7 /Users/dave/.emacs.d/el-get/nognus/lisp/starttls hides /Applications/Emacs.app/Contents/Resources/lisp/gnus/starttls /Users/dave/.emacs.d/el-get/nognus/lisp/spam hides /Applications/Emacs.app/Contents/Resources/lisp/gnus/spam /Users/dave/.emacs.d/el-get/nognus/lisp/spam-wash hides /Applications/Emacs.app/Contents/Resources/lisp/gnus/spam-wash /Users/dave/.emacs.d/el-get/nognus/lisp/spam-stat hides /Applications/Emacs.app/Contents/Resources/lisp/gnus/spam-stat /Users/dave/.emacs.d/el-get/nognus/lisp/spam-report hides /Applications/Emacs.app/Contents/Resources/lisp/gnus/spam-report /Users/dave/.emacs.d/el-get/nognus/lisp/smime hides /Applications/Emacs.app/Contents/Resources/lisp/gnus/smime /Users/dave/.emacs.d/el-get/nognus/lisp/smiley hides /Applications/Emacs.app/Contents/Resources/lisp/gnus/smiley /Users/dave/.emacs.d/el-get/nognus/lisp/sieve hides /Applications/Emacs.app/Contents/Resources/lisp/gnus/sieve /Users/dave/.emacs.d/el-get/nognus/lisp/sieve-mode hides /Applications/Emacs.app/Contents/Resources/lisp/gnus/sieve-mode /Users/dave/.emacs.d/el-get/nognus/lisp/sieve-manage hides /Applications/Emacs.app/Contents/Resources/lisp/gnus/sieve-manage /Users/dave/.emacs.d/el-get/nognus/lisp/score-mode hides /Applications/Emacs.app/Contents/Resources/lisp/gnus/score-mode /Users/dave/.emacs.d/el-get/nognus/lisp/rfc2231 hides /Applications/Emacs.app/Contents/Resources/lisp/gnus/rfc2231 /Users/dave/.emacs.d/el-get/nognus/lisp/rfc2104 hides /Applications/Emacs.app/Contents/Resources/lisp/gnus/rfc2104 /Users/dave/.emacs.d/el-get/nognus/lisp/rfc2047 hides /Applications/Emacs.app/Contents/Resources/lisp/gnus/rfc2047 /Users/dave/.emacs.d/el-get/nognus/lisp/rfc2045 hides /Applications/Emacs.app/Contents/Resources/lisp/gnus/rfc2045 /Users/dave/.emacs.d/el-get/nognus/lisp/rfc1843 hides /Applications/Emacs.app/Contents/Resources/lisp/gnus/rfc1843 /Users/dave/.emacs.d/el-get/nognus/lisp/qp hides /Applications/Emacs.app/Contents/Resources/lisp/gnus/qp /Users/dave/.emacs.d/el-get/nognus/lisp/pop3 hides /Applications/Emacs.app/Contents/Resources/lisp/gnus/pop3 /Users/dave/.emacs.d/el-get/nognus/lisp/nnweb hides /Applications/Emacs.app/Contents/Resources/lisp/gnus/nnweb /Users/dave/.emacs.d/el-get/nognus/lisp/nnvirtual hides /Applications/Emacs.app/Contents/Resources/lisp/gnus/nnvirtual /Users/dave/.emacs.d/el-get/nognus/lisp/nntp hides /Applications/Emacs.app/Contents/Resources/lisp/gnus/nntp /Users/dave/.emacs.d/el-get/nognus/lisp/nnspool hides /Applications/Emacs.app/Contents/Resources/lisp/gnus/nnspool /Users/dave/.emacs.d/el-get/nognus/lisp/nnrss hides /Applications/Emacs.app/Contents/Resources/lisp/gnus/nnrss /Users/dave/.emacs.d/el-get/nognus/lisp/nnoo hides /Applications/Emacs.app/Contents/Resources/lisp/gnus/nnoo /Users/dave/.emacs.d/el-get/nognus/lisp/nnnil hides /Applications/Emacs.app/Contents/Resources/lisp/gnus/nnnil /Users/dave/.emacs.d/el-get/nognus/lisp/nnml hides /Applications/Emacs.app/Contents/Resources/lisp/gnus/nnml /Users/dave/.emacs.d/el-get/nognus/lisp/nnmh hides /Applications/Emacs.app/Contents/Resources/lisp/gnus/nnmh /Users/dave/.emacs.d/el-get/nognus/lisp/nnmbox hides /Applications/Emacs.app/Contents/Resources/lisp/gnus/nnmbox /Users/dave/.emacs.d/el-get/nognus/lisp/nnmairix hides /Applications/Emacs.app/Contents/Resources/lisp/gnus/nnmairix /Users/dave/.emacs.d/el-get/nognus/lisp/nnmaildir hides /Applications/Emacs.app/Contents/Resources/lisp/gnus/nnmaildir /Users/dave/.emacs.d/el-get/nognus/lisp/nnmail hides /Applications/Emacs.app/Contents/Resources/lisp/gnus/nnmail /Users/dave/.emacs.d/el-get/nognus/lisp/nnir hides /Applications/Emacs.app/Contents/Resources/lisp/gnus/nnir /Users/dave/.emacs.d/el-get/nognus/lisp/nnimap hides /Applications/Emacs.app/Contents/Resources/lisp/gnus/nnimap /Users/dave/.emacs.d/el-get/nognus/lisp/nnheader hides /Applications/Emacs.app/Contents/Resources/lisp/gnus/nnheader /Users/dave/.emacs.d/el-get/nognus/lisp/nngateway hides /Applications/Emacs.app/Contents/Resources/lisp/gnus/nngateway /Users/dave/.emacs.d/el-get/nognus/lisp/nnfolder hides /Applications/Emacs.app/Contents/Resources/lisp/gnus/nnfolder /Users/dave/.emacs.d/el-get/nognus/lisp/nneething hides /Applications/Emacs.app/Contents/Resources/lisp/gnus/nneething /Users/dave/.emacs.d/el-get/nognus/lisp/nndraft hides /Applications/Emacs.app/Contents/Resources/lisp/gnus/nndraft /Users/dave/.emacs.d/el-get/nognus/lisp/nndoc hides /Applications/Emacs.app/Contents/Resources/lisp/gnus/nndoc /Users/dave/.emacs.d/el-get/nognus/lisp/nndir hides /Applications/Emacs.app/Contents/Resources/lisp/gnus/nndir /Users/dave/.emacs.d/el-get/nognus/lisp/nndiary hides /Applications/Emacs.app/Contents/Resources/lisp/gnus/nndiary /Users/dave/.emacs.d/el-get/nognus/lisp/nnbabyl hides /Applications/Emacs.app/Contents/Resources/lisp/gnus/nnbabyl /Users/dave/.emacs.d/el-get/nognus/lisp/nnagent hides /Applications/Emacs.app/Contents/Resources/lisp/gnus/nnagent /Users/dave/.emacs.d/el-get/nognus/lisp/mml2015 hides /Applications/Emacs.app/Contents/Resources/lisp/gnus/mml2015 /Users/dave/.emacs.d/el-get/nognus/lisp/mml1991 hides /Applications/Emacs.app/Contents/Resources/lisp/gnus/mml1991 /Users/dave/.emacs.d/el-get/nognus/lisp/mml hides /Applications/Emacs.app/Contents/Resources/lisp/gnus/mml /Users/dave/.emacs.d/el-get/nognus/lisp/mml-smime hides /Applications/Emacs.app/Contents/Resources/lisp/gnus/mml-smime /Users/dave/.emacs.d/el-get/nognus/lisp/mml-sec hides /Applications/Emacs.app/Contents/Resources/lisp/gnus/mml-sec /Users/dave/.emacs.d/el-get/nognus/lisp/mm-view hides /Applications/Emacs.app/Contents/Resources/lisp/gnus/mm-view /Users/dave/.emacs.d/el-get/nognus/lisp/mm-uu hides /Applications/Emacs.app/Contents/Resources/lisp/gnus/mm-uu /Users/dave/.emacs.d/el-get/nognus/lisp/mm-util hides /Applications/Emacs.app/Contents/Resources/lisp/gnus/mm-util /Users/dave/.emacs.d/el-get/nognus/lisp/mm-url hides /Applications/Emacs.app/Contents/Resources/lisp/gnus/mm-url /Users/dave/.emacs.d/el-get/nognus/lisp/mm-partial hides /Applications/Emacs.app/Contents/Resources/lisp/gnus/mm-partial /Users/dave/.emacs.d/el-get/nognus/lisp/mm-extern hides /Applications/Emacs.app/Contents/Resources/lisp/gnus/mm-extern /Users/dave/.emacs.d/el-get/nognus/lisp/mm-encode hides /Applications/Emacs.app/Contents/Resources/lisp/gnus/mm-encode /Users/dave/.emacs.d/el-get/nognus/lisp/mm-decode hides /Applications/Emacs.app/Contents/Resources/lisp/gnus/mm-decode /Users/dave/.emacs.d/el-get/nognus/lisp/mm-bodies hides /Applications/Emacs.app/Contents/Resources/lisp/gnus/mm-bodies /Users/dave/.emacs.d/el-get/nognus/lisp/messcompat hides /Applications/Emacs.app/Contents/Resources/lisp/gnus/messcompat /Users/dave/.emacs.d/el-get/nognus/lisp/message hides /Applications/Emacs.app/Contents/Resources/lisp/gnus/message /Users/dave/.emacs.d/el-get/nognus/lisp/mailcap hides /Applications/Emacs.app/Contents/Resources/lisp/gnus/mailcap /Users/dave/.emacs.d/el-get/nognus/lisp/mail-source hides /Applications/Emacs.app/Contents/Resources/lisp/gnus/mail-source /Users/dave/.emacs.d/el-get/nognus/lisp/mail-prsvr hides /Applications/Emacs.app/Contents/Resources/lisp/gnus/mail-prsvr /Users/dave/.emacs.d/el-get/nognus/lisp/mail-parse hides /Applications/Emacs.app/Contents/Resources/lisp/gnus/mail-parse /Users/dave/.emacs.d/el-get/nognus/lisp/legacy-gnus-agent hides /Applications/Emacs.app/Contents/Resources/lisp/gnus/legacy-gnus-agent /Users/dave/.emacs.d/el-get/nognus/lisp/ietf-drums hides /Applications/Emacs.app/Contents/Resources/lisp/gnus/ietf-drums /Users/dave/.emacs.d/el-get/nognus/lisp/html2text hides /Applications/Emacs.app/Contents/Resources/lisp/gnus/html2text /Users/dave/.emacs.d/el-get/nognus/lisp/gnus hides /Applications/Emacs.app/Contents/Resources/lisp/gnus/gnus /Users/dave/.emacs.d/el-get/nognus/lisp/gnus-win hides /Applications/Emacs.app/Contents/Resources/lisp/gnus/gnus-win /Users/dave/.emacs.d/el-get/nognus/lisp/gnus-vm hides /Applications/Emacs.app/Contents/Resources/lisp/gnus/gnus-vm /Users/dave/.emacs.d/el-get/nognus/lisp/gnus-uu hides /Applications/Emacs.app/Contents/Resources/lisp/gnus/gnus-uu /Users/dave/.emacs.d/el-get/nognus/lisp/gnus-util hides /Applications/Emacs.app/Contents/Resources/lisp/gnus/gnus-util /Users/dave/.emacs.d/el-get/nognus/lisp/gnus-undo hides /Applications/Emacs.app/Contents/Resources/lisp/gnus/gnus-undo /Users/dave/.emacs.d/el-get/nognus/lisp/gnus-topic hides /Applications/Emacs.app/Contents/Resources/lisp/gnus/gnus-topic /Users/dave/.emacs.d/el-get/nognus/lisp/gnus-sum hides /Applications/Emacs.app/Contents/Resources/lisp/gnus/gnus-sum /Users/dave/.emacs.d/el-get/nognus/lisp/gnus-start hides /Applications/Emacs.app/Contents/Resources/lisp/gnus/gnus-start /Users/dave/.emacs.d/el-get/nognus/lisp/gnus-srvr hides /Applications/Emacs.app/Contents/Resources/lisp/gnus/gnus-srvr /Users/dave/.emacs.d/el-get/nognus/lisp/gnus-spec hides /Applications/Emacs.app/Contents/Resources/lisp/gnus/gnus-spec /Users/dave/.emacs.d/el-get/nognus/lisp/gnus-sieve hides /Applications/Emacs.app/Contents/Resources/lisp/gnus/gnus-sieve /Users/dave/.emacs.d/el-get/nognus/lisp/gnus-setup hides /Applications/Emacs.app/Contents/Resources/lisp/gnus/gnus-setup /Users/dave/.emacs.d/el-get/nognus/lisp/gnus-score hides /Applications/Emacs.app/Contents/Resources/lisp/gnus/gnus-score /Users/dave/.emacs.d/el-get/nognus/lisp/gnus-salt hides /Applications/Emacs.app/Contents/Resources/lisp/gnus/gnus-salt /Users/dave/.emacs.d/el-get/nognus/lisp/gnus-registry hides /Applications/Emacs.app/Contents/Resources/lisp/gnus/gnus-registry /Users/dave/.emacs.d/el-get/nognus/lisp/gnus-range hides /Applications/Emacs.app/Contents/Resources/lisp/gnus/gnus-range /Users/dave/.emacs.d/el-get/nognus/lisp/gnus-picon hides /Applications/Emacs.app/Contents/Resources/lisp/gnus/gnus-picon /Users/dave/.emacs.d/el-get/nognus/lisp/gnus-msg hides /Applications/Emacs.app/Contents/Resources/lisp/gnus/gnus-msg /Users/dave/.emacs.d/el-get/nognus/lisp/gnus-mlspl hides /Applications/Emacs.app/Contents/Resources/lisp/gnus/gnus-mlspl /Users/dave/.emacs.d/el-get/nognus/lisp/gnus-ml hides /Applications/Emacs.app/Contents/Resources/lisp/gnus/gnus-ml /Users/dave/.emacs.d/el-get/nognus/lisp/gnus-mh hides /Applications/Emacs.app/Contents/Resources/lisp/gnus/gnus-mh /Users/dave/.emacs.d/el-get/nognus/lisp/gnus-logic hides /Applications/Emacs.app/Contents/Resources/lisp/gnus/gnus-logic /Users/dave/.emacs.d/el-get/nognus/lisp/gnus-kill hides /Applications/Emacs.app/Contents/Resources/lisp/gnus/gnus-kill /Users/dave/.emacs.d/el-get/nognus/lisp/gnus-int hides /Applications/Emacs.app/Contents/Resources/lisp/gnus/gnus-int /Users/dave/.emacs.d/el-get/nognus/lisp/gnus-group hides /Applications/Emacs.app/Contents/Resources/lisp/gnus/gnus-group /Users/dave/.emacs.d/el-get/nognus/lisp/gnus-fun hides /Applications/Emacs.app/Contents/Resources/lisp/gnus/gnus-fun /Users/dave/.emacs.d/el-get/nognus/lisp/gnus-ems hides /Applications/Emacs.app/Contents/Resources/lisp/gnus/gnus-ems /Users/dave/.emacs.d/el-get/nognus/lisp/gnus-eform hides /Applications/Emacs.app/Contents/Resources/lisp/gnus/gnus-eform /Users/dave/.emacs.d/el-get/nognus/lisp/gnus-dup hides /Applications/Emacs.app/Contents/Resources/lisp/gnus/gnus-dup /Users/dave/.emacs.d/el-get/nognus/lisp/gnus-draft hides /Applications/Emacs.app/Contents/Resources/lisp/gnus/gnus-draft /Users/dave/.emacs.d/el-get/nognus/lisp/gnus-dired hides /Applications/Emacs.app/Contents/Resources/lisp/gnus/gnus-dired /Users/dave/.emacs.d/el-get/nognus/lisp/gnus-diary hides /Applications/Emacs.app/Contents/Resources/lisp/gnus/gnus-diary /Users/dave/.emacs.d/el-get/nognus/lisp/gnus-demon hides /Applications/Emacs.app/Contents/Resources/lisp/gnus/gnus-demon /Users/dave/.emacs.d/el-get/nognus/lisp/gnus-delay hides /Applications/Emacs.app/Contents/Resources/lisp/gnus/gnus-delay /Users/dave/.emacs.d/el-get/nognus/lisp/gnus-cus hides /Applications/Emacs.app/Contents/Resources/lisp/gnus/gnus-cus /Users/dave/.emacs.d/el-get/nognus/lisp/gnus-cite hides /Applications/Emacs.app/Contents/Resources/lisp/gnus/gnus-cite /Users/dave/.emacs.d/el-get/nognus/lisp/gnus-cache hides /Applications/Emacs.app/Contents/Resources/lisp/gnus/gnus-cache /Users/dave/.emacs.d/el-get/nognus/lisp/gnus-bookmark hides /Applications/Emacs.app/Contents/Resources/lisp/gnus/gnus-bookmark /Users/dave/.emacs.d/el-get/nognus/lisp/gnus-bcklg hides /Applications/Emacs.app/Contents/Resources/lisp/gnus/gnus-bcklg /Users/dave/.emacs.d/el-get/nognus/lisp/gnus-async hides /Applications/Emacs.app/Contents/Resources/lisp/gnus/gnus-async /Users/dave/.emacs.d/el-get/nognus/lisp/gnus-art hides /Applications/Emacs.app/Contents/Resources/lisp/gnus/gnus-art /Users/dave/.emacs.d/el-get/nognus/lisp/gnus-agent hides /Applications/Emacs.app/Contents/Resources/lisp/gnus/gnus-agent /Users/dave/.emacs.d/el-get/nognus/lisp/gmm-utils hides /Applications/Emacs.app/Contents/Resources/lisp/gnus/gmm-utils /Users/dave/.emacs.d/el-get/nognus/lisp/flow-fill hides /Applications/Emacs.app/Contents/Resources/lisp/gnus/flow-fill /Users/dave/.emacs.d/el-get/nognus/lisp/ecomplete hides /Applications/Emacs.app/Contents/Resources/lisp/gnus/ecomplete /Users/dave/.emacs.d/el-get/nognus/lisp/deuglify hides /Applications/Emacs.app/Contents/Resources/lisp/gnus/deuglify /Users/dave/.emacs.d/el-get/nognus/lisp/compface hides /Applications/Emacs.app/Contents/Resources/lisp/gnus/compface /Users/dave/.emacs.d/el-get/nognus/lisp/canlock hides /Applications/Emacs.app/Contents/Resources/lisp/gnus/canlock /Users/dave/.emacs.d/el-get/nognus/lisp/auth-source hides /Applications/Emacs.app/Contents/Resources/lisp/gnus/auth-source /Users/dave/.emacs.d/el-get/nognus/lisp/time-date hides /Applications/Emacs.app/Contents/Resources/lisp/calendar/time-date /Users/dave/.emacs.d/el-get/nognus/lisp/parse-time hides /Applications/Emacs.app/Contents/Resources/lisp/calendar/parse-time Features: (shadow sort gnus-util mail-extr message format-spec rfc822 mml mml-sec mm-decode mm-bodies mm-encode mail-parse rfc2231 rfc2047 rfc2045 ietf-drums mailabbrev gmm-utils mailheader emacsbug thingatpt newcomment cus-edit multi-isearch jka-compr ediff-merg ediff-diff ediff-wind ediff-help ediff-util ediff-mult ediff-init ediff vc-git wl-score mule-util ssl elmo-nntp elmo-sendlog elmo-internal elmo-imap4 time-stamp elmo-net elmo-dop elmo-cache elmo-map hl-line modb-standard wl-mime mime-edit pgg-parse mail-utils mailalias mime-setup mail-mime-setup semi-setup mime-pgp pgg-def mime-play filename mime-image signature wl-spam elmo-spam elsp-header elsp-generic org-wl bookmark org-mac-message org-habit org-agenda org-id org-crypt org 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 cal-menu calendar cal-loaddefs filladapt wl-demo wl-draft eword-encode wl-template sendmail wl-news derived wl-address wl-thread wl-action wl-summary ps-print ps-def lpr wl-refile wl-message elmo-mime mmelmo-buffer mmelmo-imap mime-view mime-conf calist semi-def mmimap mime-parse mmbuffer mmgeneric wl-highlight elmo-multi wl-folder wl wl-e21 wl-util pp elmo-flag elmo-localdir wl-vars epg-config wl-version elmo elmo-signal elmo-msgdb modb modb-generic modb-entity mime elmo-util emu invisible inv-23 poem poem-e20 poem-e20_3 utf7 eword-decode mel mime-def alist std11 mcharset mcs-20 mcs-e20 pces pces-e20 pces-20 broken pcustom elmo-date timezone path-util elmo-vars poe elmo-version pym static apel-ver product luna magit diff-mode log-edit pcvs-util add-log zenburn compile comint ring maxframe system-type-darwin-theme .loaddefs find-func browse-kill-ring byte-code-cache byte-opt gravatar time-date url-cache url url-proxy url-privacy url-expand url-methods url-history url-cookie url-util url-parse url-vars mm-util mail-prsvr mailcap org-install gnus-load info markdown-mode noutline outline yasnippet advice advice-preload edmacro kmacro help-mode view assoc color-theme wid-edit el-get autoload help-fns bytecomp byte-compile cl cl-19 dired regexp-opt easy-mmode warnings paren server ido autorevert delsel cus-start cus-load elhome tooltip ediff-hook vc-hooks lisp-float-type mwheel ns-win easymenu tool-bar dnd fontset image fringe lisp-mode register page menu-bar rfn-eshadow timer select scroll-bar mldrag 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 loaddefs button minibuffer faces cus-face files text-properties overlay md5 base64 format env code-pages mule custom widget hashtable-print-readable backquote make-network-process ns multi-tty emacs) -- Dave Abrahams BoostPro Computing http://www.boostpro.com
owner <at> debbugs.gnu.org, bug-gnu-emacs <at> gnu.org
:bug#8890
; Package emacs
.
(Sun, 11 Sep 2011 04:48:02 GMT) Full text and rfc822 format available.Message #8 received at 8890 <at> debbugs.gnu.org (full text, mbox):
From: Lars Magne Ingebrigtsen <larsi <at> gnus.org> To: Dave Abrahams <dave <at> boostpro.com> Cc: 8890 <at> debbugs.gnu.org Subject: Re: 23.3; message writing slows emacs Date: Sun, 11 Sep 2011 06:32:33 +0200
Dave Abrahams <dave <at> boostpro.com> writes: > It would be good, IMO, to delay updating the visible message in the > minibuffer line long enough to be sure that the message just written > isn't about to be overwritten so fast that the user couldn't read it > anyway. Over-enthusiastic messaging isn't pretty, but slowing down Emacs just to display normal "informative" messages would be really bad, in my opinion. -- (domestic pets only, the antidote for overdose, milk.) bloggy blog http://lars.ingebrigtsen.no/
owner <at> debbugs.gnu.org, bug-gnu-emacs <at> gnu.org
:bug#8890
; Package emacs
.
(Sun, 11 Sep 2011 06:59:02 GMT) Full text and rfc822 format available.Message #11 received at 8890 <at> debbugs.gnu.org (full text, mbox):
From: Dave Abrahams <dave <at> boostpro.com> To: Lars Magne Ingebrigtsen <larsi <at> gnus.org> Cc: 8890 <at> debbugs.gnu.org Subject: Re: 23.3; message writing slows emacs Date: Sun, 11 Sep 2011 02:54:34 -0400
on Sun Sep 11 2011, Lars Magne Ingebrigtsen <larsi-AT-gnus.org> wrote: > Dave Abrahams <dave <at> boostpro.com> writes: > >> It would be good, IMO, to delay updating the visible message in the >> minibuffer line long enough to be sure that the message just written >> isn't about to be overwritten so fast that the user couldn't read it >> anyway. > > Over-enthusiastic messaging isn't pretty, but slowing down Emacs just to > display normal "informative" messages would be really bad, in my > opinion. I'm sorry; you've misunderstood me. I agree with you! I don't mean to pause emacs; I mean to buffer the message until it has been stable for some amount of time. Hmm, I don't know whether emacs has the architecture for that sort of asynchrony... but it should :-) -- Dave Abrahams BoostPro Computing http://www.boostpro.com
owner <at> debbugs.gnu.org, bug-gnu-emacs <at> gnu.org
:bug#8890
; Package emacs
.
(Sun, 11 Sep 2011 09:01:01 GMT) Full text and rfc822 format available.Message #14 received at 8890 <at> debbugs.gnu.org (full text, mbox):
From: Eli Zaretskii <eliz <at> gnu.org> To: Dave Abrahams <dave <at> boostpro.com> Cc: larsi <at> gnus.org, 8890 <at> debbugs.gnu.org Subject: Re: bug#8890: 23.3; message writing slows emacs Date: Sun, 11 Sep 2011 04:55:49 -0400
> From: Dave Abrahams <dave <at> boostpro.com> > Date: Sun, 11 Sep 2011 02:54:34 -0400 > Cc: 8890 <at> debbugs.gnu.org > > I mean to buffer the message until it has been stable for some > amount of time. I don't understand the details of the feature you are requesting. Suppose `message' is being repeatedly called by some Lisp program in quick succession -- what would you like to be actually displayed? only the text of final message? If so, why is that a good idea? Most "good" uses of fast echoing display very similar messages, like "Updating... NN% done", where only the number changes. It would be a pity to lose this checkpointing feature, IMO. So you will probably say that there should be a variable to be bound to select one behavior or the other. But if Lisp code needs to bind a variable to avoid the flashing of different messages, why not avoid those messages in the first place? Your original report says: I haven't done actual timings, but I'm finding that I have a *very* strong perception that when emacs is writing lots of messages, it slows down considerably. Redisplay always slows down, but on any modern machine displaying only the echo area should take a few milliseconds at the most, so I'd be surprised if some real slowdown was involved. If you can show some timings, please do, as there could be a bug or misfeature somewhere. Anyway, can you describe the situation in which you see these flashing messages? The only one I can think of is when Emacs starts up and restores a previous session. Is that your use case, or did you see this in other situations?
owner <at> debbugs.gnu.org, bug-gnu-emacs <at> gnu.org
:bug#8890
; Package emacs
.
(Sun, 11 Sep 2011 10:51:02 GMT) Full text and rfc822 format available.Message #17 received at 8890 <at> debbugs.gnu.org (full text, mbox):
From: Dave Abrahams <dave <at> boostpro.com> To: Eli Zaretskii <eliz <at> gnu.org> Cc: larsi <at> gnus.org, 8890 <at> debbugs.gnu.org Subject: Re: bug#8890: 23.3; message writing slows emacs Date: Sun, 11 Sep 2011 06:45:39 -0400
on Sun Sep 11 2011, Eli Zaretskii <eliz-AT-gnu.org> wrote: >> From: Dave Abrahams <dave <at> boostpro.com> > >> Date: Sun, 11 Sep 2011 02:54:34 -0400 >> Cc: 8890 <at> debbugs.gnu.org >> >> I mean to buffer the message until it has been stable for some >> amount of time. > > I don't understand the details of the feature you are requesting. > Suppose `message' is being repeatedly called by some Lisp program in > quick succession -- what would you like to be actually displayed? only > the text of final message? If so, why is that a good idea? Most > "good" uses of fast echoing display very similar messages, like > "Updating... NN% done", where only the number changes. OK, good point. But actually it's those that set the message once for each percentage (or even more often) that cause me the most (perceived) slowdown. If you're just updating percentage complete, please don't do it more than once every .5 seconds... at the fastest! > It would be a pity to lose this checkpointing feature, IMO. So you > will probably say that there should be a variable to be bound to > select one behavior or the other. No need to argue against that; I wasn't going to suggest it. > Your original report says: > > I haven't done actual timings, but I'm finding that I have a *very* > strong perception that when emacs is writing lots of messages, it > slows down considerably. > > Redisplay always slows down, but on any modern machine displaying only > the echo area should take a few milliseconds at the most, so I'd be > surprised if some real slowdown was involved. Don't forget that messages also fill up the *Messages* buffer. > If you can show some timings, please do, as there could be a bug or > misfeature somewhere. I probably don't have time to do it, sadly. So you will probably say there should be a variable bound to give me more time... wait, I mean you'll probably say that's a cop-out. Guilty as charged. > Anyway, can you describe the situation in which you see these flashing > messages? The only one I can think of is when Emacs starts up and > restores a previous session. Is that your use case, or did you see > this in other situations? Yeah, there's something in Gnus, perhaps article expiry, that seems slow mostly because gnus-verbose defaults to 7 and it writes out gobs of messages. When I turned gnus-verbose down it seemed a lot faster. -- Dave Abrahams BoostPro Computing http://www.boostpro.com
owner <at> debbugs.gnu.org, bug-gnu-emacs <at> gnu.org
:bug#8890
; Package emacs
.
(Sun, 11 Sep 2011 11:26:02 GMT) Full text and rfc822 format available.Message #20 received at 8890 <at> debbugs.gnu.org (full text, mbox):
From: Eli Zaretskii <eliz <at> gnu.org> To: Dave Abrahams <dave <at> boostpro.com> Cc: larsi <at> gnus.org, 8890 <at> debbugs.gnu.org Subject: Re: bug#8890: 23.3; message writing slows emacs Date: Sun, 11 Sep 2011 07:20:53 -0400
> From: Dave Abrahams <dave <at> boostpro.com> > Cc: larsi <at> gnus.org, 8890 <at> debbugs.gnu.org > Date: Sun, 11 Sep 2011 06:45:39 -0400 > > If you're just updating percentage complete, please don't do > it more than once every .5 seconds... at the fastest! Agreed, but that's something for the application programmers to consider, not for the infrastructure. > > Redisplay always slows down, but on any modern machine displaying only > > the echo area should take a few milliseconds at the most, so I'd be > > surprised if some real slowdown was involved. > > Don't forget that messages also fill up the *Messages* buffer. I think that's so fast it can be ignored, unless _generating_ these messages takes non-trivial computations. > > Anyway, can you describe the situation in which you see these flashing > > messages? The only one I can think of is when Emacs starts up and > > restores a previous session. Is that your use case, or did you see > > this in other situations? > > Yeah, there's something in Gnus, perhaps article expiry, that seems slow > mostly because gnus-verbose defaults to 7 and it writes out gobs of > messages. When I turned gnus-verbose down it seemed a lot faster. Maybe there's something specific to Gnus, then. In which case it's a good thing we have Lars listening ;-)
owner <at> debbugs.gnu.org, bug-gnu-emacs <at> gnu.org
:bug#8890
; Package emacs
.
(Sun, 11 Sep 2011 11:36:02 GMT) Full text and rfc822 format available.Message #23 received at 8890 <at> debbugs.gnu.org (full text, mbox):
From: Dave Abrahams <dave <at> boostpro.com> To: Eli Zaretskii <eliz <at> gnu.org> Cc: larsi <at> gnus.org, 8890 <at> debbugs.gnu.org Subject: Re: bug#8890: 23.3; message writing slows emacs Date: Sun, 11 Sep 2011 07:30:57 -0400
on Sun Sep 11 2011, Eli Zaretskii <eliz-AT-gnu.org> wrote: >> From: Dave Abrahams <dave <at> boostpro.com> > >> Cc: larsi <at> gnus.org, 8890 <at> debbugs.gnu.org >> Date: Sun, 11 Sep 2011 06:45:39 -0400 >> >> If you're just updating percentage complete, please don't do >> it more than once every .5 seconds... at the fastest! > > Agreed, but that's something for the application programmers to > consider, not for the infrastructure. Well, not necessarily. If emacs had a built-in, sanctioned "progress" library, people could use that and it would take care of the problem. >> > Anyway, can you describe the situation in which you see these flashing >> > messages? The only one I can think of is when Emacs starts up and >> > restores a previous session. Is that your use case, or did you see >> > this in other situations? >> >> Yeah, there's something in Gnus, perhaps article expiry, that seems slow >> mostly because gnus-verbose defaults to 7 and it writes out gobs of >> messages. When I turned gnus-verbose down it seemed a lot faster. > > Maybe there's something specific to Gnus, then. In which case it's a > good thing we have Lars listening ;-) Maybe. But it seems like a common enough issue that emacs should provide application programmers with some tools for avoiding it. -- Dave Abrahams BoostPro Computing http://www.boostpro.com
owner <at> debbugs.gnu.org, bug-gnu-emacs <at> gnu.org
:bug#8890
; Package emacs
.
(Sun, 11 Sep 2011 15:04:01 GMT) Full text and rfc822 format available.Message #26 received at 8890 <at> debbugs.gnu.org (full text, mbox):
From: Lars Magne Ingebrigtsen <larsi <at> gnus.org> To: Dave Abrahams <dave <at> boostpro.com> Cc: Eli Zaretskii <eliz <at> gnu.org>, 8890 <at> debbugs.gnu.org Subject: Re: bug#8890: 23.3; message writing slows emacs Date: Sun, 11 Sep 2011 16:51:39 +0200
Dave Abrahams <dave <at> boostpro.com> writes: > Yeah, there's something in Gnus, perhaps article expiry, that seems slow > mostly because gnus-verbose defaults to 7 and it writes out gobs of > messages. When I turned gnus-verbose down it seemed a lot faster. That sounds like a bug. :-) I see that I have `gnus-verbose' set to 4. I'll set it to the default and pounce on unnecessary messaging... -- (domestic pets only, the antidote for overdose, milk.) bloggy blog http://lars.ingebrigtsen.no/
owner <at> debbugs.gnu.org, bug-gnu-emacs <at> gnu.org
:bug#8890
; Package emacs
.
(Sun, 11 Sep 2011 15:04:01 GMT) Full text and rfc822 format available.Message #29 received at 8890 <at> debbugs.gnu.org (full text, mbox):
From: Lars Magne Ingebrigtsen <larsi <at> gnus.org> To: Dave Abrahams <dave <at> boostpro.com> Cc: Eli Zaretskii <eliz <at> gnu.org>, 8890 <at> debbugs.gnu.org Subject: Re: bug#8890: 23.3; message writing slows emacs Date: Sun, 11 Sep 2011 16:52:56 +0200
Dave Abrahams <dave <at> boostpro.com> writes: >>> If you're just updating percentage complete, please don't do >>> it more than once every .5 seconds... at the fastest! >> >> Agreed, but that's something for the application programmers to >> consider, not for the infrastructure. > > Well, not necessarily. If emacs had a built-in, sanctioned "progress" > library, people could use that and it would take care of the problem. Emacs does clever screen updates, though. So if the only thing that changes is the number before the percentage, Emacs won't repaint the entire line, I think? -- (domestic pets only, the antidote for overdose, milk.) bloggy blog http://lars.ingebrigtsen.no/
owner <at> debbugs.gnu.org, bug-gnu-emacs <at> gnu.org
:bug#8890
; Package emacs
.
(Sun, 11 Sep 2011 16:03:01 GMT) Full text and rfc822 format available.Message #32 received at 8890 <at> debbugs.gnu.org (full text, mbox):
From: Eli Zaretskii <eliz <at> gnu.org> To: Lars Magne Ingebrigtsen <larsi <at> gnus.org> Cc: dave <at> boostpro.com, 8890 <at> debbugs.gnu.org Subject: Re: bug#8890: 23.3; message writing slows emacs Date: Sun, 11 Sep 2011 18:58:24 +0300
> From: Lars Magne Ingebrigtsen <larsi <at> gnus.org> > Cc: Eli Zaretskii <eliz <at> gnu.org>, 8890 <at> debbugs.gnu.org > Date: Sun, 11 Sep 2011 16:52:56 +0200 > > Emacs does clever screen updates, though. So if the only thing that > changes is the number before the percentage, Emacs won't repaint the > entire line, I think? True. Like I said, redisplay of the echo area is very fast.
owner <at> debbugs.gnu.org, bug-gnu-emacs <at> gnu.org
:bug#8890
; Package emacs
.
(Sun, 11 Sep 2011 16:44:02 GMT) Full text and rfc822 format available.Message #35 received at 8890 <at> debbugs.gnu.org (full text, mbox):
From: Dave Abrahams <dave <at> boostpro.com> To: Eli Zaretskii <eliz <at> gnu.org> Cc: Lars Magne Ingebrigtsen <larsi <at> gnus.org>, 8890 <at> debbugs.gnu.org Subject: Re: bug#8890: 23.3; message writing slows emacs Date: Sun, 11 Sep 2011 12:39:23 -0400
on Sun Sep 11 2011, Eli Zaretskii <eliz-AT-gnu.org> wrote: >> From: Lars Magne Ingebrigtsen <larsi <at> gnus.org> > >> Cc: Eli Zaretskii <eliz <at> gnu.org>, 8890 <at> debbugs.gnu.org >> Date: Sun, 11 Sep 2011 16:52:56 +0200 >> >> Emacs does clever screen updates, though. So if the only thing that >> changes is the number before the percentage, Emacs won't repaint the >> entire line, I think? > > True. Like I said, redisplay of the echo area is very fast. I don't think it's clever enough. Try this: --8<---------------cut here---------------start------------->8--- (let (timings) (dolist (reps '(1 10)) (let ((start-time (current-time))) (loop for x to 10000 do (loop repeat reps do (message "message #%s" x))) (push (time-subtract (current-time) start-time) timings))) (message "%s" (mapcar 'time-to-seconds timings))) --8<---------------cut here---------------end--------------->8--- I get (29.539774 2.514761) I think this shows that it takes (more than) 10x as long to write out the same message 10 times as it does to write it out once. -- Dave Abrahams BoostPro Computing http://www.boostpro.com
owner <at> debbugs.gnu.org, bug-gnu-emacs <at> gnu.org
:bug#8890
; Package emacs
.
(Fri, 16 Sep 2011 02:28:01 GMT) Full text and rfc822 format available.Message #38 received at 8890 <at> debbugs.gnu.org (full text, mbox):
From: Dave Abrahams <dave <at> boostpro.com> To: Eli Zaretskii <eliz <at> gnu.org> Cc: Lars Magne Ingebrigtsen <larsi <at> gnus.org>, 8890 <at> debbugs.gnu.org Subject: Re: bug#8890: 23.3; message writing slows emacs Date: Thu, 15 Sep 2011 22:22:45 -0400
on Sun Sep 11 2011, Dave Abrahams <dave-AT-boostpro.com> wrote: > on Sun Sep 11 2011, Eli Zaretskii <eliz-AT-gnu.org> wrote: > >>> From: Lars Magne Ingebrigtsen <larsi <at> gnus.org> >> >>> Cc: Eli Zaretskii <eliz <at> gnu.org>, 8890 <at> debbugs.gnu.org >>> Date: Sun, 11 Sep 2011 16:52:56 +0200 >>> >>> Emacs does clever screen updates, though. So if the only thing that >>> changes is the number before the percentage, Emacs won't repaint the >>> entire line, I think? >> >> True. Like I said, redisplay of the echo area is very fast. > > I don't think it's clever enough. Try this: > (let (timings) > (dolist (reps '(1 10)) > (let ((start-time (current-time))) > (loop for x to 10000 do > (loop repeat reps do > (message "message #%s" x))) > (push (time-subtract (current-time) start-time) timings))) > (message "%s" (mapcar 'time-to-seconds timings))) > I get (29.539774 2.514761) > > I think this shows that it takes (more than) 10x as long to write out > the same message 10 times as it does to write it out once. <bump> The above looks to me like conclusive evidence that writing out the same percentage many times as part of a progress indication, rather than, say, updating progress information once per second, will slow things down a lot... and that's not a Gnus-specific problem. *I* think this is important, anyway. -- Dave Abrahams BoostPro Computing http://www.boostpro.com
owner <at> debbugs.gnu.org, bug-gnu-emacs <at> gnu.org
:bug#8890
; Package emacs
.
(Fri, 16 Sep 2011 09:00:03 GMT) Full text and rfc822 format available.Message #41 received at 8890 <at> debbugs.gnu.org (full text, mbox):
From: Eli Zaretskii <eliz <at> gnu.org> To: Dave Abrahams <dave <at> boostpro.com> Cc: larsi <at> gnus.org, 8890 <at> debbugs.gnu.org Subject: Re: bug#8890: 23.3; message writing slows emacs Date: Fri, 16 Sep 2011 11:54:28 +0300
> From: Dave Abrahams <dave <at> boostpro.com> > Cc: Lars Magne Ingebrigtsen <larsi <at> gnus.org>, 8890 <at> debbugs.gnu.org > Date: Sun, 11 Sep 2011 12:39:23 -0400 > > >> Emacs does clever screen updates, though. So if the only thing that > >> changes is the number before the percentage, Emacs won't repaint the > >> entire line, I think? > > > > True. Like I said, redisplay of the echo area is very fast. > > I don't think it's clever enough. Try this: > > --8<---------------cut here---------------start------------->8--- > (let (timings) > (dolist (reps '(1 10)) > (let ((start-time (current-time))) > (loop for x to 10000 do > (loop repeat reps do > (message "message #%s" x))) > (push (time-subtract (current-time) start-time) timings))) > (message "%s" (mapcar 'time-to-seconds timings))) > --8<---------------cut here---------------end--------------->8--- > > I get (29.539774 2.514761) > > I think this shows that it takes (more than) 10x as long to write out > the same message 10 times as it does to write it out once. My results are different: . in a GUI session: (16.172 2.891) . in a -nw (TTY) session: (26.125 4.734) The above is from an unoptimized build. Here are timings from an optimized build: . GUI session: (10.875 2.0) . TTY: (19.313 3.453) This shows that it takes 45% _less_ time to write the same message 10 times than 10x time to write the message once. So at best the numbers are inconclusive. Anyway, I know for a fact that Emacs does optimize screen writes in this case. Look at the function dispnew.c:update_text_area, around lines 3784 to 3967. I actually put a breakpoint there and saw that only the changing number is being redrawn while running your test code. E.g., on line 3885, I see i = 9 while stop = 11, which means Emacs will redraw only 2 characters.
owner <at> debbugs.gnu.org, bug-gnu-emacs <at> gnu.org
:bug#8890
; Package emacs
.
(Fri, 16 Sep 2011 13:24:01 GMT) Full text and rfc822 format available.Message #44 received at 8890 <at> debbugs.gnu.org (full text, mbox):
From: Stefan Monnier <monnier <at> iro.umontreal.ca> To: Dave Abrahams <dave <at> boostpro.com> Cc: 8890 <at> debbugs.gnu.org Subject: Re: bug#8890: 23.3; message writing slows emacs Date: Fri, 16 Sep 2011 09:18:51 -0400
> I haven't done actual timings, but I'm finding that I have a *very* > strong perception that when Emacs is writing lots of messages, it slows > down considerably. No doubt: Emacs redisplay is among its slowest operations, and while "message" is handled specially so it doesn't cause a full redisplay, it's still a slow operation. > Even if this is only a perception, if it's shared by > others I think it should be considered a bug. I think it's largely unavoidable. > Unless the *Message* buffer is visible, these messages are often > flashing by so quickly that nobody could hope to see them. Any such circumstance where messages flash by quickly and repeatedly (the repetition is important, since otherwise the speed impact is negligible compared to the redisplay that takes place at the end of every command anyway) is a bug, so please report them. > It would be good, IMO, to delay updating the visible message in the > minibuffer line long enough to be sure that the message just written > isn't about to be overwritten so fast that the user couldn't read > it anyway. We could try and have such a mechanism, yes, but it might be easier to handle it at some other level. E.g. the progress-reporter functions attack one instance of the problem. > Redisplay always slows down, but on any modern machine displaying only > the echo area should take a few milliseconds at the most, so I'd be > surprised if some real slowdown was involved. If you can show some > timings, please do, as there could be a bug or misfeature somewhere. We've already had cases where we found that most of the time was spent displaying messages. That's why progress-reporter doesn't call message at every update. "A few milliseconds" sounds negligible, but if it's done at every iteration of a loop whose body takes less than a millisecond to run (we can do a lot of work in a millisecond on today's machines), then it's a major slowdown. Stefan
owner <at> debbugs.gnu.org, bug-gnu-emacs <at> gnu.org
:bug#8890
; Package emacs
.
(Fri, 16 Sep 2011 13:51:01 GMT) Full text and rfc822 format available.Message #47 received at 8890 <at> debbugs.gnu.org (full text, mbox):
From: Eli Zaretskii <eliz <at> gnu.org> To: Stefan Monnier <monnier <at> iro.umontreal.ca> Cc: dave <at> boostpro.com, 8890 <at> debbugs.gnu.org Subject: Re: bug#8890: 23.3; message writing slows emacs Date: Fri, 16 Sep 2011 16:45:32 +0300
> From: Stefan Monnier <monnier <at> iro.umontreal.ca> > Date: Fri, 16 Sep 2011 09:18:51 -0400 > Cc: 8890 <at> debbugs.gnu.org > > "A few milliseconds" sounds negligible, but if it's done at every > iteration of a loop whose body takes less than a millisecond to run > (we can do a lot of work in a millisecond on today's machines), then > it's a major slowdown. Then programmers who run those loops should update the progress less aggressively. Redisplay (and infrastructure in general) lack the context that would allow them to make good decisions as to when defer repeated display. Only the calling application can know that. > (we can do a lot of work in a millisecond on today's machines) From my experience, if a full redisplay cycle takes less than 50 ms, it "feels" responsive enough.
owner <at> debbugs.gnu.org, bug-gnu-emacs <at> gnu.org
:bug#8890
; Package emacs
.
(Fri, 16 Sep 2011 14:25:02 GMT) Full text and rfc822 format available.Message #50 received at 8890 <at> debbugs.gnu.org (full text, mbox):
From: Stefan Monnier <monnier <at> iro.umontreal.ca> To: Eli Zaretskii <eliz <at> gnu.org> Cc: dave <at> boostpro.com, 8890 <at> debbugs.gnu.org Subject: Re: bug#8890: 23.3; message writing slows emacs Date: Fri, 16 Sep 2011 10:20:05 -0400
>> "A few milliseconds" sounds negligible, but if it's done at every >> iteration of a loop whose body takes less than a millisecond to run >> (we can do a lot of work in a millisecond on today's machines), then >> it's a major slowdown. > Then programmers who run those loops should update the progress less > aggressively. Redisplay (and infrastructure in general) lack the > context that would allow them to make good decisions as to when defer > repeated display. Only the calling application can know that. Indeed. The main problem with changing `message' is that if it is called too soon after the previous `message' we can't easily say "don't display this one" since there may not be any subsequent message coming, so we'd have to stash the last undisplayed message and then try and figure out good places/times to cause them to be displayed. So the general approach to fixing those problems is to say "use progress-reporter-update" since this function has the advantage of knowing that there will be a `progress-reporter-done' at some later point, which allows it to skip a message without worries. Stefan
owner <at> debbugs.gnu.org, bug-gnu-emacs <at> gnu.org
:bug#8890
; Package emacs
.
(Fri, 16 Sep 2011 15:15:02 GMT) Full text and rfc822 format available.Message #53 received at 8890 <at> debbugs.gnu.org (full text, mbox):
From: Dave Abrahams <dave <at> boostpro.com> To: Eli Zaretskii <eliz <at> gnu.org> Cc: Stefan Monnier <monnier <at> iro.umontreal.ca>, 8890 <at> debbugs.gnu.org Subject: Re: bug#8890: 23.3; message writing slows emacs Date: Fri, 16 Sep 2011 11:09:59 -0400
on Fri Sep 16 2011, Eli Zaretskii <eliz-AT-gnu.org> wrote: >> From: Stefan Monnier <monnier <at> iro.umontreal.ca> > >> Date: Fri, 16 Sep 2011 09:18:51 -0400 >> Cc: 8890 <at> debbugs.gnu.org >> >> "A few milliseconds" sounds negligible, but if it's done at every >> iteration of a loop whose body takes less than a millisecond to run >> (we can do a lot of work in a millisecond on today's machines), then >> it's a major slowdown. > > Then programmers who run those loops should update the progress less > aggressively. Redisplay (and infrastructure in general) lack the > context that would allow them to make good decisions as to when defer > repeated display. Only the calling application can know that. There's a middle path: provide a `progress-message' function. That allows the caller to provide the semantic context that this particular message isn't critical without burdening every single application with building its own throttling updater. -- Dave Abrahams BoostPro Computing http://www.boostpro.com
owner <at> debbugs.gnu.org, bug-gnu-emacs <at> gnu.org
:bug#8890
; Package emacs
.
(Fri, 16 Sep 2011 15:17:01 GMT) Full text and rfc822 format available.Message #56 received at 8890 <at> debbugs.gnu.org (full text, mbox):
From: Dave Abrahams <dave <at> boostpro.com> To: Stefan Monnier <monnier <at> iro.umontreal.ca> Cc: Eli Zaretskii <eliz <at> gnu.org>, 8890 <at> debbugs.gnu.org Subject: Re: bug#8890: 23.3; message writing slows emacs Date: Fri, 16 Sep 2011 11:11:56 -0400
on Fri Sep 16 2011, Stefan Monnier <monnier-AT-iro.umontreal.ca> wrote: >>> "A few milliseconds" sounds negligible, but if it's done at every > >>> iteration of a loop whose body takes less than a millisecond to run >>> (we can do a lot of work in a millisecond on today's machines), then >>> it's a major slowdown. >> Then programmers who run those loops should update the progress less >> aggressively. Redisplay (and infrastructure in general) lack the >> context that would allow them to make good decisions as to when defer >> repeated display. Only the calling application can know that. > > Indeed. The main problem with changing `message' is that if it is > called too soon after the previous `message' we can't easily say "don't > display this one" since there may not be any subsequent message coming, > so we'd have to stash the last undisplayed message and then try and > figure out good places/times to cause them to be displayed. Well, the `obvious' good place/time is at next idle if no further messages have come along to stomp on the previous one. > So the general approach to fixing those problems is to say "use > progress-reporter-update" since this function has the advantage of > knowing that there will be a `progress-reporter-done' at some later > point, which allows it to skip a message without worries. Hm. So there *is* a builtin functionality for this... well, that's good. Sorry if I've wasted everyone's time on this. -- Dave Abrahams BoostPro Computing http://www.boostpro.com
owner <at> debbugs.gnu.org, bug-gnu-emacs <at> gnu.org
:bug#8890
; Package emacs
.
(Sat, 17 Sep 2011 05:29:02 GMT) Full text and rfc822 format available.Message #59 received at 8890 <at> debbugs.gnu.org (full text, mbox):
From: Lars Magne Ingebrigtsen <larsi <at> gnus.org> To: Dave Abrahams <dave <at> boostpro.com> Cc: Stefan Monnier <monnier <at> iro.umontreal.ca>, 8890 <at> debbugs.gnu.org Subject: Re: bug#8890: 23.3; message writing slows emacs Date: Sat, 17 Sep 2011 07:19:56 +0200
Dave Abrahams <dave <at> boostpro.com> writes: >> So the general approach to fixing those problems is to say "use >> progress-reporter-update" since this function has the advantage of >> knowing that there will be a `progress-reporter-done' at some later >> point, which allows it to skip a message without worries. > > Hm. So there *is* a builtin functionality for this... well, that's > good. Sorry if I've wasted everyone's time on this. I didn't know about progress-reporter, so my time wasn't wasted, at least. :-) But I wonder whether a simpler, more general function would be possible. If we're outputting stuff that's not a percentage, progress-reporter doesn't help much. `message' could work as follows: If it's been less than (say) 50th of a second since the previous message, then don't message anything. However, set up a timer in a 100th of a second's time to display that message -- if nothing else has been displayed in the mean time. The net effect will be that normal messaging (where it's been a long time since the previous message) is displayed as usual, but when we enter a "high-message" storm, we start skipping messages. But we always end up showing the final message, anyway. This would be a very simple interface for programmers to deal with (i.e., "don't worry about it"), and the user wouldn't notice anything in particular -- other than Emacs being faster in some situations. -- (domestic pets only, the antidote for overdose, milk.) bloggy blog http://lars.ingebrigtsen.no/
owner <at> debbugs.gnu.org, bug-gnu-emacs <at> gnu.org
:bug#8890
; Package emacs
.
(Sat, 17 Sep 2011 06:28:01 GMT) Full text and rfc822 format available.Message #62 received at 8890 <at> debbugs.gnu.org (full text, mbox):
From: Dave Abrahams <dave <at> boostpro.com> To: Lars Magne Ingebrigtsen <larsi <at> gnus.org> Cc: Stefan Monnier <monnier <at> iro.umontreal.ca>, 8890 <at> debbugs.gnu.org Subject: Re: bug#8890: 23.3; message writing slows emacs Date: Sat, 17 Sep 2011 02:23:05 -0400
on Sat Sep 17 2011, Lars Magne Ingebrigtsen <larsi-AT-gnus.org> wrote: > Dave Abrahams <dave <at> boostpro.com> writes: > >>> So the general approach to fixing those problems is to say "use >>> progress-reporter-update" since this function has the advantage of >>> knowing that there will be a `progress-reporter-done' at some later >>> point, which allows it to skip a message without worries. >> >> Hm. So there *is* a builtin functionality for this... well, that's >> good. Sorry if I've wasted everyone's time on this. > > I didn't know about progress-reporter, so my time wasn't wasted, at > least. :-) > > But I wonder whether a simpler, more general function would be > possible. If we're outputting stuff that's not a percentage, > progress-reporter doesn't help much. > > `message' could work as follows: > > If it's been less than (say) 50th of a second since the previous > message, then don't message anything. However, set up a timer in a > 100th of a second's time to display that message -- if nothing else has > been displayed in the mean time. Technically, that 100th of a second could be arbitrarily long: ,----[ (info "(elisp)Timers") ] | Emacs cannot run timers at any arbitrary point in a Lisp program; it | can run them only when Emacs could accept output from a subprocess: | namely, while waiting or inside certain primitive functions such as | `sit-for' or `read-event' which _can_ wait. Therefore, a timer's | execution may be delayed if Emacs is busy. However, the time of | execution is very precise if Emacs is idle. `---- However, that might not be such a bad thing. -- Dave Abrahams BoostPro Computing http://www.boostpro.com
owner <at> debbugs.gnu.org, bug-gnu-emacs <at> gnu.org
:bug#8890
; Package emacs
.
(Sat, 17 Sep 2011 08:33:01 GMT) Full text and rfc822 format available.Message #65 received at 8890 <at> debbugs.gnu.org (full text, mbox):
From: Eli Zaretskii <eliz <at> gnu.org> To: Lars Magne Ingebrigtsen <larsi <at> gnus.org> Cc: dave <at> boostpro.com, 8890 <at> debbugs.gnu.org Subject: Re: bug#8890: 23.3; message writing slows emacs Date: Sat, 17 Sep 2011 11:25:10 +0300
> From: Lars Magne Ingebrigtsen <larsi <at> gnus.org> > Date: Sat, 17 Sep 2011 07:19:56 +0200 > Cc: 8890 <at> debbugs.gnu.org > > `message' could work as follows: > > If it's been less than (say) 50th of a second since the previous > message, then don't message anything. However, set up a timer in a > 100th of a second's time to display that message -- if nothing else has > been displayed in the mean time. As I wrote earlier, `message' is the wrong place to fix this kind of problems: it doesn't have enough context to decide whether or not it's TRT to skip a message. A Lisp program that calls `message' could have good reasons to do this; not displaying those messages violates the principle of least surprise. The right place for applying this logic is in the Lisp program that calls `message'. > The net effect will be that normal messaging (where it's been a long > time since the previous message) is displayed as usual, but when we > enter a "high-message" storm, we start skipping messages. But we always > end up showing the final message, anyway. You are assuming that the final message is the only one that counts. Undoubtedly, there are use cases where this is correct. But there are others where it will be wrong, and `message' will not be able to second-guess its callers well enough to know which one is true.
owner <at> debbugs.gnu.org, bug-gnu-emacs <at> gnu.org
:bug#8890
; Package emacs
.
(Sat, 17 Sep 2011 08:38:02 GMT) Full text and rfc822 format available.Message #68 received at 8890 <at> debbugs.gnu.org (full text, mbox):
From: Lars Magne Ingebrigtsen <larsi <at> gnus.org> To: Eli Zaretskii <eliz <at> gnu.org> Cc: dave <at> boostpro.com, 8890 <at> debbugs.gnu.org Subject: Re: bug#8890: 23.3; message writing slows emacs Date: Sat, 17 Sep 2011 10:29:33 +0200
Eli Zaretskii <eliz <at> gnu.org> writes: > You are assuming that the final message is the only one that counts. > Undoubtedly, there are use cases where this is correct. But there are > others where it will be wrong, and `message' will not be able to > second-guess its callers well enough to know which one is true. If the messages arrive with a 50ms delay, there's no way anybody is going to see that message in any case. -- (domestic pets only, the antidote for overdose, milk.) bloggy blog http://lars.ingebrigtsen.no/
owner <at> debbugs.gnu.org, bug-gnu-emacs <at> gnu.org
:bug#8890
; Package emacs
.
(Sat, 17 Sep 2011 09:32:01 GMT) Full text and rfc822 format available.Message #71 received at 8890 <at> debbugs.gnu.org (full text, mbox):
From: Eli Zaretskii <eliz <at> gnu.org> To: Lars Magne Ingebrigtsen <larsi <at> gnus.org> Cc: dave <at> boostpro.com, 8890 <at> debbugs.gnu.org Subject: Re: bug#8890: 23.3; message writing slows emacs Date: Sat, 17 Sep 2011 12:24:19 +0300
> From: Lars Magne Ingebrigtsen <larsi <at> gnus.org> > Cc: dave <at> boostpro.com, 8890 <at> debbugs.gnu.org > Date: Sat, 17 Sep 2011 10:29:33 +0200 > > Eli Zaretskii <eliz <at> gnu.org> writes: > > > You are assuming that the final message is the only one that counts. > > Undoubtedly, there are use cases where this is correct. But there are > > others where it will be wrong, and `message' will not be able to > > second-guess its callers well enough to know which one is true. > > If the messages arrive with a 50ms delay, there's no way anybody is > going to see that message in any case. You underestimate the speed of speed-reading ;-)
owner <at> debbugs.gnu.org, bug-gnu-emacs <at> gnu.org
:bug#8890
; Package emacs
.
(Sat, 17 Sep 2011 12:16:01 GMT) Full text and rfc822 format available.Message #74 received at 8890 <at> debbugs.gnu.org (full text, mbox):
From: Juri Linkov <juri <at> jurta.org> To: Lars Magne Ingebrigtsen <larsi <at> gnus.org> Cc: dave <at> boostpro.com, Eli Zaretskii <eliz <at> gnu.org>, 8890 <at> debbugs.gnu.org Subject: Re: bug#8890: 23.3; message writing slows emacs Date: Sat, 17 Sep 2011 15:01:14 +0300
> If the messages arrive with a 50ms delay, there's no way anybody is > going to see that message in any case. There is a related problem. Some messages are too important to miss. So in some cases messages should be accumulated and displayed as one multi-line message.
owner <at> debbugs.gnu.org, bug-gnu-emacs <at> gnu.org
:bug#8890
; Package emacs
.
(Sat, 17 Sep 2011 21:12:02 GMT) Full text and rfc822 format available.Message #77 received at 8890 <at> debbugs.gnu.org (full text, mbox):
From: Stefan Monnier <monnier <at> iro.umontreal.ca> To: Lars Magne Ingebrigtsen <larsi <at> gnus.org> Cc: Dave Abrahams <dave <at> boostpro.com>, 8890 <at> debbugs.gnu.org Subject: Re: bug#8890: 23.3; message writing slows emacs Date: Sat, 17 Sep 2011 17:06:46 -0400
> If it's been less than (say) 50th of a second since the previous > message, then don't message anything. However, set up a timer in a > 100th of a second's time to display that message -- if nothing else has > been displayed in the mean time. That's much too tricky to implement. Making it reliable is going to be painful. Much easier to allow progress-reporter-update to output non-percentage messages (e.g. for bytecomp, the changing part is not a percentage but a function name). Stefan
bug-gnu-emacs <at> gnu.org
:bug#8890
; Package emacs
.
(Sun, 18 Sep 2011 07:00:03 GMT) Full text and rfc822 format available.Message #80 received at 8890 <at> debbugs.gnu.org (full text, mbox):
From: Lars Magne Ingebrigtsen <larsi <at> gnus.org> To: Stefan Monnier <monnier <at> iro.umontreal.ca> Cc: Dave Abrahams <dave <at> boostpro.com>, 8890 <at> debbugs.gnu.org Subject: Re: bug#8890: 23.3; message writing slows emacs Date: Sun, 18 Sep 2011 08:50:24 +0200
Stefan Monnier <monnier <at> iro.umontreal.ca> writes: >> If it's been less than (say) 50th of a second since the previous >> message, then don't message anything. However, set up a timer in a >> 100th of a second's time to display that message -- if nothing else has >> been displayed in the mean time. > > That's much too tricky to implement. Making it reliable is going to > be painful. Is it getting a timer to work that's tricky? > Much easier to allow progress-reporter-update to output non-percentage > messages (e.g. for bytecomp, the changing part is not a percentage but > a function name). If we're not going to make `message' just behave, then a function pair like `message-maybe' (which wouldn't output anything that arrives too fast) and a `message-flush' (to say that we're finished with the dubious messaging) might do the trick. That doesn't work very well with nested regions of dubious messaging, of course, but that's probably not very common. -- (domestic pets only, the antidote for overdose, milk.) bloggy blog http://lars.ingebrigtsen.no/
bug-gnu-emacs <at> gnu.org
:bug#8890
; Package emacs
.
(Sun, 18 Sep 2011 13:22:02 GMT) Full text and rfc822 format available.Message #83 received at 8890 <at> debbugs.gnu.org (full text, mbox):
From: Stefan Monnier <monnier <at> iro.umontreal.ca> To: Lars Magne Ingebrigtsen <larsi <at> gnus.org> Cc: Dave Abrahams <dave <at> boostpro.com>, 8890 <at> debbugs.gnu.org Subject: Re: bug#8890: 23.3; message writing slows emacs Date: Sun, 18 Sep 2011 09:16:43 -0400
>>> If it's been less than (say) 50th of a second since the previous >>> message, then don't message anything. However, set up a timer in a >>> 100th of a second's time to display that message -- if nothing else has >>> been displayed in the mean time. >> That's much too tricky to implement. Making it reliable is going to >> be painful. > Is it getting a timer to work that's tricky? Yes, getting the timer to work, canceling it when needed, etc... It's fiddly. Especially when compared to the simplicity of progress-reporter-update/progress-reporter-done. > If we're not going to make `message' just behave, then a function pair > like `message-maybe' (which wouldn't output anything that arrives too > fast) and a `message-flush' (to say that we're finished with the dubious > messaging) might do the trick. They exist and are called progress-reporter-update and progress-reporter-done respectively. They just need to be improved to allow non-numerical non-nil updates. Stefan
bug-gnu-emacs <at> gnu.org
:bug#8890
; Package emacs
.
(Wed, 21 Sep 2011 19:06:02 GMT) Full text and rfc822 format available.Message #86 received at 8890 <at> debbugs.gnu.org (full text, mbox):
From: Lars Magne Ingebrigtsen <larsi <at> gnus.org> To: Stefan Monnier <monnier <at> iro.umontreal.ca> Cc: Dave Abrahams <dave <at> boostpro.com>, 8890 <at> debbugs.gnu.org Subject: Re: bug#8890: 23.3; message writing slows emacs Date: Wed, 21 Sep 2011 21:01:28 +0200
Stefan Monnier <monnier <at> iro.umontreal.ca> writes: > Yes, getting the timer to work, canceling it when needed, etc... It's > fiddly. Especially when compared to the simplicity of > progress-reporter-update/progress-reporter-done. If it's possible to get the timer to work, then I think the rest is just a small matter of programming. While the process-reporter interface is very clean and nice, it does require that you pass around the reporter object, which can be fiddly, too -- but it's a fiddliness that all the users of the code have to relate to. Whereas a hysteresis-safe `message' would just work without anybody thinking about it. I mean, if we could get it to work. -- (domestic pets only, the antidote for overdose, milk.) bloggy blog http://lars.ingebrigtsen.no/
bug-gnu-emacs <at> gnu.org
:bug#8890
; Package emacs
.
(Tue, 26 Apr 2022 13:21:02 GMT) Full text and rfc822 format available.Message #89 received at 8890 <at> debbugs.gnu.org (full text, mbox):
From: Lars Ingebrigtsen <larsi <at> gnus.org> To: Dave Abrahams <dave <at> boostpro.com> Cc: Stefan Monnier <monnier <at> iro.umontreal.ca>, 8890 <at> debbugs.gnu.org Subject: Re: bug#8890: 23.3; message writing slows emacs Date: Tue, 26 Apr 2022 15:20:44 +0200
Lars Magne Ingebrigtsen <larsi <at> gnus.org> writes: > But I wonder whether a simpler, more general function would be > possible. If we're outputting stuff that's not a percentage, > progress-reporter doesn't help much. This has basically been implemented as `with-delayed-message' in Emacs 29, so I'm therefore closing this bug report. (Although we haven't changed some of the more message-happy things in Emacs to use the macro, but we should.) -- (domestic pets only, the antidote for overdose, milk.) bloggy blog: http://lars.ingebrigtsen.no
Lars Ingebrigtsen <larsi <at> gnus.org>
to control <at> debbugs.gnu.org
.
(Tue, 26 Apr 2022 13:21:02 GMT) Full text and rfc822 format available.Debbugs Internal Request <help-debbugs <at> gnu.org>
to internal_control <at> debbugs.gnu.org
.
(Wed, 25 May 2022 11:24:09 GMT) Full text and rfc822 format available.
GNU bug tracking system
Copyright (C) 1999 Darren O. Benham,
1997,2003 nCipher Corporation Ltd,
1994-97 Ian Jackson.