Subject: 23.0.60; ispell-word becomes increasingly slower

From: Markus Triska <[email-masked]>
Date: Sat, 28 Jun 2008 02:26:55 +0200 (CEST)

When I save the following form to test.el:

(let ((n 0))
  (with-temp-buffer
    (insert "test")
    (while t
      (setq n (1+ n))
      (when (= (mod n 100) 0)
        (message "n: %s -- %s" n (emacs-uptime)))
      (ispell-word nil t))))

and then do "emacs -Q --script test.el", I get:

   Starting new Ispell process [default] ...
   n: 100 -- 0 seconds
   n: 200 -- 0 seconds
   n: 300 -- 0 seconds
   n: 400 -- 0 seconds
   n: 500 -- 1 second
   n: 600 -- 1 second
   n: 700 -- 1 second
   n: 800 -- 1 second
   n: 900 -- 1 second
   n: 1000 -- 1 second
   n: 1100 -- 1 second
   n: 1200 -- 1 second
   n: 1300 -- 1 second
   n: 1400 -- 1 second
   n: 1500 -- 1 second
   n: 1600 -- 1 second
   n: 1700 -- 1 second
   n: 1800 -- 1 second
   n: 1900 -- 1 second
   n: 2000 -- 1 second
   ...
   n: 52400 -- 3 minutes, 12 seconds
   n: 52500 -- 3 minutes, 13 seconds
   n: 52600 -- 3 minutes, 14 seconds
   n: 52700 -- 3 minutes, 15 seconds
   ..
   n: 70500 -- 8 minutes, 30 seconds
   n: 70600 -- 8 minutes, 31 seconds
   n: 70700 -- 8 minutes, 33 seconds
   n: 70800 -- 8 minutes, 35 seconds
   n: 70900 -- 8 minutes, 36 seconds
   n: 71000 -- 8 minutes, 38 seconds
   ...

i.e., the program becomes increasingly slower, from many iterations
per second to several seconds per iteration. With "top", I also see
that aspell uses increasingly more memory. I can reproduce this on
Fedora Core 9 and OSX 10.4 with Aspell 0.60.5. In a simplified test to
check for memory leaks in aspell, I did:

   $ while true; do echo "test"; done | aspell -a

and in this case, aspell's memory usage seems to stay constant.

In GNU Emacs 23.0.60.1 (i386-apple-darwin8.11.1, GTK+ Version 2.12.9)
 of 2008-06-15 on mt-computer.local
Windowing system distributor `The XFree86 Project, Inc', version 11.0.40400000
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