From: Agustin Martin <agustin.martin@hispalinux.es>
To: Aleksey Cherepanov <aleksey.4erepanov@gmail.com>, 16800@debbugs.gnu.org
Subject: bug#16800: 24.3; flyspell works slow on very short words at the end of big file
Date: Wed, 26 Feb 2014 21:32:02 +0100 [thread overview]
Message-ID: <20140226203202.GA23749@agmartin.aq.upm.es> (raw)
In-Reply-To: <20140224160317.GA2475@openwall.com>
On Mon, Feb 24, 2014 at 08:03:17PM +0400, Aleksey Cherepanov wrote:
> I played with different (maybe wrong) implementations of
> flyspell-word-search-backward and measured time against t.txt
> (produced by the one-liner). All implementations are attached.
[ ... Tons of extensive and impressive debugging ... ]
> We could avoid capturing at all. And it works faster as shown by 4
> last functions.
Hi,
Thanks a lot for the extensive debugging and for all the suggestions. I
have been playing with something based in your last function, but trying
to get something more compact, see below current status
;; -----------------------------------
(defun my-test-concat-up-goto-notcap-nobob-bobp-if (word bound &optional ignore-case)
(save-excursion
(let* ((r '())
(inhibit-point-motion-hooks t)
(flyspell-not-casechars (flyspell-get-not-casechars))
(word-re (concat
flyspell-not-casechars
(regexp-quote word)
flyspell-not-casechars))
p)
(while
(and (not r)
(setq p (if (re-search-backward word-re bound t)
(progn (forward-char) (point))
;; Check if word is at bob
(goto-char (point-min))
(search-forward word (length word) t))))
(let ((lw (flyspell-get-word)))
(if (and (consp lw)
(if ignore-case
(string-equal (downcase (car lw)) (downcase word))
(string-equal (car lw) word)))
(setq r p)
(goto-char p))))
r)))
;; -----------------------------------
I did some efficiency test and it seemed similar to those of your efficient
functions. Need to check further for corner cases, bugs, etc ...
Big thanks!
--
Agustin
next prev parent reply other threads:[~2014-02-26 20:32 UTC|newest]
Thread overview: 33+ messages / expand[flat|nested] mbox.gz Atom feed top
2014-02-18 20:56 bug#16800: 24.3; flyspell works slow on very short words at the end of big file Aleksey Cherepanov
2014-02-21 10:15 ` Eli Zaretskii
2014-02-21 14:38 ` Agustin Martin
2014-02-21 15:12 ` Eli Zaretskii
2014-02-21 15:21 ` Eli Zaretskii
2014-02-22 12:44 ` Aleksey Cherepanov
2014-02-22 13:10 ` Eli Zaretskii
2014-02-22 16:02 ` Aleksey Cherepanov
2014-02-22 16:41 ` Eli Zaretskii
2014-02-22 18:55 ` Aleksey Cherepanov
2014-02-22 20:16 ` Aleksey Cherepanov
2014-02-22 21:03 ` Eli Zaretskii
2014-02-23 1:26 ` Agustin Martin
2014-02-23 18:36 ` Eli Zaretskii
2014-02-23 19:56 ` Aleksey Cherepanov
2014-02-23 23:02 ` Aleksey Cherepanov
2014-02-24 16:03 ` Aleksey Cherepanov
2014-02-26 20:32 ` Agustin Martin [this message]
2014-02-28 11:45 ` Agustin Martin
2014-02-28 11:51 ` Eli Zaretskii
2014-03-01 21:44 ` Aleksey Cherepanov
2014-03-02 3:56 ` Eli Zaretskii
2014-03-09 17:36 ` Agustin Martin
2014-03-09 18:02 ` Aleksey Cherepanov
2014-03-09 18:24 ` Eli Zaretskii
2014-02-28 23:11 ` Aleksey Cherepanov
2014-03-01 10:33 ` Aleksey Cherepanov
2014-03-01 15:50 ` Aleksey Cherepanov
2014-03-01 21:39 ` Aleksey Cherepanov
2014-03-09 17:25 ` Agustin Martin
2015-03-06 21:46 ` Agustin Martin
2015-03-07 8:09 ` Eli Zaretskii
2014-02-23 20:39 ` Aleksey Cherepanov
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=20140226203202.GA23749@agmartin.aq.upm.es \
--to=agustin.martin@hispalinux.es \
--cc=16800@debbugs.gnu.org \
--cc=aleksey.4erepanov@gmail.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.