unofficial mirror of bug-gnu-emacs@gnu.org 
 help / color / mirror / code / Atom feed
From: Eli Zaretskii <eliz@gnu.org>
To: bruce.connor.am@gmail.com
Cc: 20887@debbugs.gnu.org
Subject: bug#20887: 'make bootstrap' now verrrry slow due to recent isearch changes
Date: Thu, 25 Jun 2015 18:03:57 +0300	[thread overview]
Message-ID: <838ub7eso2.fsf@gnu.org> (raw)
In-Reply-To: <CAAdUY-JW==-HD4vggbZOcNmFEsatwfw+Cd3PmKqaA3RTKi9Fog@mail.gmail.com>

> Date: Thu, 25 Jun 2015 00:37:51 +0100
> From: Artur Malabarba <bruce.connor.am@gmail.com>
> Cc: 20887@debbugs.gnu.org
> 
> I think I see now. Reading the code for `get-char-code-property' shows
> that I had to call a function stored in the extra slot.
> Calling that function on the table seems to be sufficient to populate it.

Indeed, the Unicode tables are tricky, in that with some of them you
need to call the function stored in the 1st extra slot to reconstruct
the value for a character.  (And if there's no function in that extra
slot, you should use get-unicode-property-internal to decode the
value.)

However, I think the version you pushed can be further improved.  For
starters, you don't need to populate the table first, and only then
use it; you can produce the property value for a character and use it
in the same call to map-char-table.  For example, the following
snippet loops only once over the table, and does its job in about 2
sec:

  (let* ((table (unicode-property-table-internal 'decomposition))
	 (func (char-table-extra-slot table 1)))
    (map-char-table
     (lambda (key val)
       (if (consp key)
	   (message "%s %s" key (funcall func (car key) val table))
	 (message "%s %s" key (funcall func key val table))))
     table))

All you need is replace the silly 'message' calls with the body of
your processing code (and handle all the characters in a range of
codepoints, not just the first one).

Your code also calls unicode-property-table-internal twice, and the
above method will solve that as well.

Thanks.





  reply	other threads:[~2015-06-25 15:03 UTC|newest]

Thread overview: 24+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2015-06-24  1:35 bug#20887: 'make bootstrap' now verrrry slow due to recent isearch changes Paul Eggert
2015-06-24  7:06 ` Glenn Morris
2015-06-24  7:52   ` Artur Malabarba
2015-06-24 13:36     ` Paul Eggert
2015-06-24 14:28       ` Artur Malabarba
2015-06-24 15:05         ` Eli Zaretskii
2015-06-24 15:19           ` Eli Zaretskii
2015-06-24 17:18             ` Artur Malabarba
2015-06-24 19:14               ` Eli Zaretskii
2015-06-24 20:05                 ` Artur Malabarba
2015-06-24 23:17                   ` Artur Malabarba
2015-06-24 23:37                     ` Artur Malabarba
2015-06-25 15:03                       ` Eli Zaretskii [this message]
2015-06-25 17:32                         ` Artur Malabarba
2015-06-26  7:52                           ` Eli Zaretskii
2015-06-26 11:41                             ` Artur Malabarba
2015-06-26 13:32                               ` Eli Zaretskii
2015-06-24 17:15           ` Glenn Morris
2015-06-24 17:38             ` Artur Malabarba
2015-06-24 15:55     ` Glenn Morris
2015-06-24 13:31   ` Paul Eggert
2015-06-24 15:58     ` Glenn Morris
2015-06-25  2:48       ` Paul Eggert
2015-06-25 23:21         ` Glenn Morris

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=838ub7eso2.fsf@gnu.org \
    --to=eliz@gnu.org \
    --cc=20887@debbugs.gnu.org \
    --cc=bruce.connor.am@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 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).