unofficial mirror of help-gnu-emacs@gnu.org
 help / color / mirror / Atom feed
From: Eli Zaretskii <eliz@gnu.org>
To: help-gnu-emacs@gnu.org
Subject: Re: Emacs Slowdown
Date: Mon, 09 Mar 2015 18:16:18 +0200	[thread overview]
Message-ID: <83pp8i5ep9.fsf@gnu.org> (raw)
In-Reply-To: <87pp8i75nk.fsf@newcastle.ac.uk>

> From: phillip.lord@newcastle.ac.uk (Phillip Lord)
> Date: Mon, 09 Mar 2015 11:48:47 +0000
> 
> I am suffering a rather disasterous slowdown in my emacs. It feels like
> a memory leak, as my emacs gets slower over time. It mostly seems to be
> affected auctex, where there is considerable lag in cursor movement to
> the point that typing becomes difficult.

For starters, customize garbage-collection-messages to a non-nil
value, and see if Emacs announces GC while cursor movement is
sluggish.

> I've tried the profiler. After a long run, I find this for memory usage:
> 
> - redisplay_internal (C function)                       2,853,658,459  79%
>  - and                                                  2,682,842,214  74%
>   - directory-files                                           110,636   0%
>    - concat                                                    74,740   0%
>       regexp-quote                                             57,316   0%
>     file-directory-p
> 
> which is a bit strange. I have no idea when "and" should be getting
> called so much. The top of the CPU profile looks like this...

Forget the memory-usage profile, it doesn't measure what you think it
does, and is mostly useless, except in very specialized situations,
and then for people who really understand what this means (I don't).

If you want to test the hypothesis of a memory leak, it's easier to
look at your Emacs process's virtual memory size, either in 'top' or
in "M-x proced".  Take a few snapshots of the value and try to
correlate that with the values reported by 'garbage-collect'.  If
those values stay approximately stable, or go down, but the VSS of the
process goes up, you can suspect a memory leak; otherwise the problem
is elsewhere.

(Personally, I wouldn't pursue the memory leak avenue first,
especially if this is an official release, not a development version
of Emacs: I think other possible reasons are much more probable.  But
that's me.)

> One other thing that I have noticed is that define-global-minor-mode
> adds to the post-command-hook. Currently, this means that my
> post-command-hook looks like this....
> 
> 
> (global-font-lock-mode-check-buffers global-lentic-mode-check-buffers
> global-pabbrev-mode-check-buffers yas-global-mode-check-buffers
> global-eval-pulse-mode-check-buffers
> global-auto-complete-mode-check-buffers
> projectile-global-mode-check-buffers
> global-wide-column-mode-check-buffers
> wide-column-post-command-hook-function phil-show-paren-mode-check
> winner-save-old-configurations mode-local-post-major-mode-change)
> 
> which is an awful lot of functions to be called on every keypress. I
> realise that I may have gone a bit overboard here, especially as five of
> those functions are mine!

The question is: what do those hook do, on average?  If they are very
lightweight (profile them to see if they are), then this isn't your
villain.

Also, try removing most of the hooks when you see sluggish operation,
and see if that brings any significant speedup; if not, these aren't
what you are looking for.



  reply	other threads:[~2015-03-09 16:16 UTC|newest]

Thread overview: 19+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2015-03-09 11:48 Emacs Slowdown Phillip Lord
2015-03-09 16:16 ` Eli Zaretskii [this message]
2015-03-09 21:50   ` Stefan Monnier
2015-03-10 12:37   ` Phillip Lord
2015-03-10 19:00     ` Eli Zaretskii
2015-03-09 21:59 ` Stefan Monnier
2015-03-10 12:39   ` Phillip Lord
2015-03-10 13:22     ` Stefan Monnier
2015-03-12 11:36 ` Phillip Lord
2015-03-16 11:41   ` Phillip Lord
2015-03-16 12:36     ` Stefan Monnier
2015-03-16 16:51       ` Phillip Lord
2015-03-18 12:23         ` Phillip Lord
2015-03-18 12:44           ` Stefan Monnier
2015-03-18 14:13             ` Phillip Lord
2015-03-18 14:53               ` Stefan Monnier
2015-03-18 16:34                 ` Phillip Lord
2015-03-18 16:32             ` Eli Zaretskii
2015-03-18 17:04               ` Phillip Lord

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

  List information: https://www.gnu.org/software/emacs/

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=83pp8i5ep9.fsf@gnu.org \
    --to=eliz@gnu.org \
    --cc=help-gnu-emacs@gnu.org \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for read-only IMAP folder(s) and NNTP newsgroup(s).