all messages for Emacs-related lists mirrored at yhetil.org
 help / color / mirror / code / Atom feed
From: "Herbert Euler" <herberteuler@hotmail.com>
Subject: Re: Accelerating Emacs?
Date: Fri, 28 Oct 2005 19:31:35 +0800	[thread overview]
Message-ID: <BAY112-F3384C9371F0710F12AE270DA6B0@phx.gbl> (raw)
In-Reply-To: <uhdb2dp7x.fsf@gnu.org>

>From: Eli Zaretskii <eliz@gnu.org>
>To: help-gnu-emacs@gnu.org
>Subject: Re: Accelerating Emacs?
>Date: Fri, 28 Oct 2005 10:23:46 +0200

>Well, your original complaint _was_ about deleting a single
>character.  Are you on the quest to prove at all costs that Emacs is
>slow?

I am _not_ trying to prove something, I just want to know
whether it is possible to accelerate Emacs in some way,
especially in poor situation, and how.

>What kind of machine do you have there?  I tried this on a 3MB file
>(my email inbox), and it took less than 1 minute, even though I needed
>to answer the question about discarding undo info several times during
>that time.  This is on a 3GHz Pentium 4 running Windows XP.  I then
>tried the same with a 19MB email box on a 700MHz Pentium III running
>Debian GNU/Linux, and it took 13 minutes there (vim did it in 30
>seconds).  Perhaps you should upgrade your hardware?

The CPU of this machine is Pentium(R) 4 CPU 2.80 GHz, and there is
504 MB physical memory, running Windows XP and Emacs 21.3. Actually
Emacs is much more faster than vim in my first try, just replace the
beginning of each line by 4 spaces. Vim spent more than 1min finishing
this, and Emacs spent 7s only. I was so surprised while getting this
result, so I did the second, which discourages me.

Now I must show what I did. First, I wrote a Lisp program to generate
random data:

(let ((i 0))
  (while (< i 20000)
    (let ((j 0) s)
      (while (< j 10)
	(setq s (concat s (char-to-string (+ 50 (random 50))))
	      j (1+ j)))
      (insert s "\n"))
    (setq i (1+ i))))

This resulted in a 235KB size file. I named it 'test', and created a bigger
file with the following command sequence:

    $ cat test >>test1
    $ cat test1 >>test
    $ cat test >>test1
    $ cat test1 >>test
    ... ...

Finally I got a file with about 8MB. I then did what I described.

>Anyway, `replace-regexp' does much more than just replace its first
>argument with the second, and those other things make it run slower.
>The doc string for `replace-regexp' says (note the last part,
>especially):
>
>     This function is usually the wrong thing to use in a Lisp program.
>     What you probably want is a loop like this:
>       (while (re-search-forward regexp nil t)
>	(replace-match to-string nil nil))
>     which will run faster and will not set the mark or print anything.

I tried this, Task Manager said Emacs were using 229 636K memory
by the time I wrote this sentence. And it spent about 5min replacing
about half (more than a half) upper case letter in the generated file.

>??? Not unless you visit many large files, it isn't.  My Emacs session
>where I'm typing this runs for many days, has gobs of files and
>buffers in it, and still uses only 22MB of memory.

I found Emacs used more and more memory when generating random
data, so did when it replacing. These memory is released after Emacs
finishes its job. Is this because Emacs operating buffer residing in memory?

>How much memory do you have on that machine (and what OS is that)?
>Also, please tell what command you used ``to mark all text'', and what
>was the exact language of the Emacs complaint about memory.

This happens when I am testing a 100MB size file. I go to the beginning
of the file, press C-SPACE, then go to the end of the file, press M-w.
Emacs told me:

Warning: past 95% of memory limit
Killing some buffers may delay running out of memory.
However, certainly by the time you receive the 95% warning,
you should clean up, kill this Emacs, and start a new one.

If the place of pressing M-w is a bit backward, only the percentage
will be modified:

Warning: past 85% of memory limit
Killing some buffers may delay running out of memory.
However, certainly by the time you receive the 85% warning,
you should clean up, kill this Emacs, and start a new one.

And in some other case (I do not know what it is yet) it told me in the
Mini-buffer:

Memory exhausted--use M-x save-some-buffers RET

>You are entitled to decide whatever you wish, but this would be not a
>very wise decision, I think.  It is based on an unrealistic example
>(perform unrealistic replacement in an unrealistic file).  I'd advise
>against such a decision.

So perhaps I can restate it like this: if Emacs starts to be slow in
some condition, it is better of using some other tools instead of
it. And I find it very cool of running vim in Eshell.

Regards,
Guanpeng Xu

_________________________________________________________________
Is your PC infected? Get a FREE online computer virus scan from McAfee® 
Security. http://clinic.mcafee.com/clinic/ibuy/campaign.asp?cid=3963

  reply	other threads:[~2005-10-28 11:31 UTC|newest]

Thread overview: 25+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
     [not found] <mailman.12998.1130466347.20277.help-gnu-emacs@gnu.org>
2005-10-28  2:59 ` Accelerating Emacs? Flying Grass
2005-10-28  5:53   ` Herbert Euler
2005-10-28  8:23     ` Eli Zaretskii
2005-10-28 11:31       ` Herbert Euler [this message]
2005-10-28 13:13         ` Eli Zaretskii
     [not found]     ` <mailman.13044.1130487836.20277.help-gnu-emacs@gnu.org>
2005-10-28 10:36       ` Per Abrahamsen
     [not found] <mailman.13061.1130499101.20277.help-gnu-emacs@gnu.org>
2005-10-28 12:08 ` David Kastrup
2005-10-28 13:43   ` Herbert Euler
2005-10-28 12:49 ` Thien-Thi Nguyen
2005-11-01  4:55 ` Stefan Monnier
     [not found] <mailman.13033.1130478796.20277.help-gnu-emacs@gnu.org>
2005-10-28  8:59 ` Alan Mackenzie
2005-10-28 18:28   ` Herbert Euler
2005-10-29 10:18     ` Eli Zaretskii
2005-10-29 11:44       ` Herbert Euler
2005-10-29 15:43         ` Eli Zaretskii
2005-10-31  3:26           ` Herbert Euler
2005-10-28  2:25 Herbert Euler
2005-10-28  8:25 ` Eli Zaretskii
2005-10-28 11:38   ` Herbert Euler
2005-10-28 13:16     ` Eli Zaretskii
     [not found] ` <mailman.13045.1130488013.20277.help-gnu-emacs@gnu.org>
2005-11-28  1:09   ` Christopher C. Stacy
2005-11-28  5:21     ` Eli Zaretskii
     [not found]     ` <mailman.17015.1133155279.20277.help-gnu-emacs@gnu.org>
2005-11-28  5:46       ` Pascal Bourguignon
2005-11-28 10:26         ` Thien-Thi Nguyen
2005-12-01  4:43         ` 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

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

  git send-email \
    --in-reply-to=BAY112-F3384C9371F0710F12AE270DA6B0@phx.gbl \
    --to=herberteuler@hotmail.com \
    /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 external index

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

This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.