unofficial mirror of emacs-devel@gnu.org 
 help / color / mirror / code / Atom feed
From: Juri Linkov <juri@jurta.org>
Cc: ttn@gnu.org, eliz@gnu.org, emacs-devel@gnu.org
Subject: GC (was: lists.texi)
Date: Fri, 24 Jun 2005 22:02:45 +0300	[thread overview]
Message-ID: <87oe9v3a62.fsf_-_@jurta.org> (raw)
In-Reply-To: <200506222025.j5MKP8S00642@raven.dms.auburn.edu> (Luc Teirlinck's message of "Wed, 22 Jun 2005 15:25:08 -0500 (CDT)")

> My test case constructed ten thousand times a list of size 1000,
> triggering a lot of garbage collections.  In a freshly started Emacs,
> the ring-elements function I propose to install ran the test in 11
> seconds, slightly over 5 being spent in gc.  This gives between 5 and
> 6 for the function itself.  The "abstract" version ran 37 seconds, a
> little bit over 5 in gc, giving 31 to 32 for the function itself.  In
> other words, avoiding the `ring-ref' overhead makes the function run
> more than five times faster, but the amount of consing stays the same.
>
> If I run the same test in a somewhat older Emacs, the functions
> themselves still take 5 to 6 and 31 to 32 seconds, but now they both
> spend 17.5 seconds doing gc (instead of slightly more than 5).
>
> I guess that in a really big Emacs, gc will take even much longer.  It
> is not very surprising that the more objects gc has to check, the
> longer it takes.  I believe this pretty much explains the gradual
> slowdown of Emacs as it grows older (and hence bigger).

Yes, indeed GC is what causes the slowdown.  With the option
`garbage-collection-messages' set to t, it is clearly visible that in
a big Emacs session GC takes too much time.  For example, I can see
that each GC takes about 1 sec.  The formula (/ gc-elapsed gcs-done)
with real values (/ 1788.2 1597) gives 1.12 sec.  This is substantial
time for every GC to contribute to the overall slowdown.

-- 
Juri Linkov
http://www.jurta.org/emacs/

  parent reply	other threads:[~2005-06-24 19:02 UTC|newest]

Thread overview: 46+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2005-06-18 23:19 lists.texi Luc Teirlinck
2005-06-19  0:01 ` lists.texi Luc Teirlinck
2005-06-19  0:15 ` lists.texi Luc Teirlinck
2005-06-19  0:37   ` lists.texi Luc Teirlinck
2005-06-19  6:37     ` lists.texi David Kastrup
2005-06-19 15:55     ` lists.texi Richard Stallman
2005-06-19 17:47       ` lists.texi Luc Teirlinck
2005-06-20 17:52         ` lists.texi Richard Stallman
2005-06-20 23:12           ` lists.texi Luc Teirlinck
2005-06-21  5:13             ` lists.texi David Kastrup
2005-06-21 15:13             ` lists.texi Richard M. Stallman
2005-06-21 16:35             ` lists.texi Thien-Thi Nguyen
2005-06-21 19:00               ` lists.texi Luc Teirlinck
2005-06-21 21:56                 ` lists.texi Thien-Thi Nguyen
2005-06-21 19:45               ` lists.texi Luc Teirlinck
2005-06-21 20:58               ` lists.texi Luc Teirlinck
2005-06-21 22:09                 ` lists.texi Thien-Thi Nguyen
2005-06-22 16:28                 ` lists.texi Juri Linkov
2005-06-22 19:27                   ` lists.texi Eli Zaretskii
2005-06-22 18:44                     ` lists.texi Luc Teirlinck
2005-06-22 20:25                     ` lists.texi Luc Teirlinck
2005-06-23 16:53                       ` lists.texi Richard M. Stallman
2005-06-24 19:02                       ` Juri Linkov [this message]
2005-06-24 19:02                     ` GC (was: lists.texi) Juri Linkov
2005-06-24 21:08                       ` Eli Zaretskii
2005-06-24 21:54                         ` Juri Linkov
2005-06-24 23:52                           ` Luc Teirlinck
2005-06-25  0:51                             ` Miles Bader
2005-06-25  9:48                           ` Eli Zaretskii
2005-06-25 11:58                             ` GC Adrian Aichner
2005-06-25 12:53                               ` GC Miles Bader
2005-06-25 21:53                                 ` GC Adrian Aichner
2005-06-26  0:02                                   ` GC Miles Bader
2005-06-26  8:20                                     ` GC Adrian Aichner
2005-06-26 18:51                                       ` GC Eli Zaretskii
2005-06-26 23:43                                         ` GC Juri Linkov
2005-06-27  5:38                                         ` GC Richard M. Stallman
2005-06-26 22:42                                       ` GC Richard M. Stallman
2005-06-25 12:15                             ` GC (was: lists.texi) Miles Bader
2005-06-25 13:10                               ` GC Gaëtan LEURENT
2005-06-25 14:48                                 ` GC Eli Zaretskii
2005-06-25 14:45                               ` GC (was: lists.texi) Eli Zaretskii
2005-06-25 16:40                               ` Richard M. Stallman
2005-06-28  4:55                             ` GC Stefan Monnier
2005-06-28 21:29                               ` GC Richard M. Stallman
2005-07-11 17:00                                 ` GC Stefan Monnier

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=87oe9v3a62.fsf_-_@jurta.org \
    --to=juri@jurta.org \
    --cc=eliz@gnu.org \
    --cc=emacs-devel@gnu.org \
    --cc=ttn@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.
Code repositories for project(s) associated with this public inbox

	https://git.savannah.gnu.org/cgit/emacs.git

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for read-only IMAP folder(s) and NNTP newsgroup(s).