[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
ediff-next-difference very slow
From: |
Roland Winkler |
Subject: |
ediff-next-difference very slow |
Date: |
Wed, 17 Apr 2002 15:21:37 +0200 |
In GNU Emacs 21.2.1 (i386-pc-linux-gnu, X toolkit, Xaw3d scroll bars)
of 2002-04-09 on tfkp12
configured using `configure --prefix=/nfs/common --libexecdir=/nfs/common/lib
--bindir=/nfs/common/lib/emacs/21.2/bin/i686-Linux
--mandir=/nfs/common/share/man --infodir=/nfs/common/share/info --with-gcc
--with-pop --with-x --with-x-toolkit=athena i386-pc-linux'
Important settings:
value of $LC_ALL: nil
value of $LC_COLLATE: POSIX
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: en_US
locale-coding-system: iso-latin-1
default-enable-multibyte-characters: nil
Please describe exactly what actions triggered the bug
and the precise symptoms of the bug:
Since I started working with GNU emacs 21.1 ediff has become rather
slow for me. Stepping through the differences between two buffers
using ediff-next-difference takes much longer than with GNU emacs
20.4 I used earlier. Now I have emacs 21.2 and it is still the same.
Now I tried to pin down more accurately what `slow' means, and I was
rather surprised: With a freshly started emacs 21.2, ediff is as
fast as it used to be, no matter whether I use
`emacs --no-init-file' or whether I load my fairly big .emacs.
(I can't make an accurate comparison because I don't have emacs 20.4
anymore.)
But usually my emacs sessions run for a long time. My present
session started five days ago. Then ediff-next-difference is much
slower. To be more specific:
I created the two files
cat foo <<EOF
foo foo foo foo foo foo foo foo foo foo foo foo foo foo foo
foo foo foo foo foo foo foo foo foo foo foo foo foo foo foo
foo foo bar foo foo bar foo foo bar foo foo bar foo foo bar
foo foo bar foo foo bar foo foo bar foo foo bar foo foo bar
foo foo bar foo foo bar foo foo bar foo foo bar foo foo bar
foo foo foo foo foo foo foo foo foo foo foo foo foo foo foo
foo foo foo foo foo foo foo foo foo foo foo foo foo foo foo
foo foo bar foo foo bar foo foo bar foo foo bar foo foo bar
foo foo bar foo foo bar foo foo bar foo foo bar foo foo bar
foo foo bar foo foo bar foo foo bar foo foo bar foo foo bar
foo foo foo foo foo foo foo foo foo foo foo foo foo foo foo
foo foo foo foo foo foo foo foo foo foo foo foo foo foo foo
EOF
cat bar <<EOF
foo foo foo foo foo foo foo foo foo foo foo foo foo foo foo
foo foo foo foo foo foo foo foo foo foo foo foo foo foo foo
foo bar bar foo bar bar foo bar bar foo bar bar foo bar bar
foo bar bar foo bar bar foo bar bar foo bar bar foo bar bar
foo bar bar foo bar bar foo bar bar foo bar bar foo bar bar
foo foo foo foo foo foo foo foo foo foo foo foo foo foo foo
foo foo foo foo foo foo foo foo foo foo foo foo foo foo foo
foo bar bar foo bar bar foo bar bar foo bar bar foo bar bar
foo bar bar foo bar bar foo bar bar foo bar bar foo bar bar
foo bar bar foo bar bar foo bar bar foo bar bar foo bar bar
foo foo foo foo foo foo foo foo foo foo foo foo foo foo foo
foo foo foo foo foo foo foo foo foo foo foo foo foo foo foo
EOF
For some reason I don't understand, elp.el doesn't work with
ediff-next-difference. It gave me the error message
elp-reset-function: ediff-next-difference is not instrumented for profiling
So I defined
(defun my-ediff-next ()
"Profiling ediff-next-difference."
(interactive)
(let ((time-start (nth 1 (current-time))))
(ediff-next-difference)
(message "Time difference: %s" (- (nth 1 (current-time)) time-start))))
According to my-ediff-next, ediff-next-difference requires 1 or 2
seconds in a fresh emacs session on my old pentium processor. But an
emacs session that has been running for many days requires 6 or
7 seconds for each of the two differences between the files foo
and bar.
What's going on here? Is this a known problem? How can I try to
further pin down why ediff becomes so slow?
Roland
PS: node `Compilation Tips' in the elisp manual says
* Profile your program with the `profile' library or the `elp'
library. See the files `profile.el' and `elp.el' for instructions.
However, in profile.el it says that profile.el has become obsolete.
- ediff-next-difference very slow,
Roland Winkler <=