From mboxrd@z Thu Jan 1 00:00:00 1970 Path: news.gmane.org!not-for-mail From: npostavs@users.sourceforge.net Newsgroups: gmane.emacs.bugs Subject: bug#23967: 25.1.50; Slow compilation of ns-win.el Date: Fri, 15 Jul 2016 22:46:12 -0400 Message-ID: <87mvlie1vv.fsf@users.sourceforge.net> References: <83bn21a8q2.fsf@gnu.org> <83inw88e3k.fsf@gnu.org> <87poqfega9.fsf@users.sourceforge.net> <83k2gn74dq.fsf@gnu.org> NNTP-Posting-Host: plane.gmane.org Mime-Version: 1.0 Content-Type: multipart/mixed; boundary="=-=-=" X-Trace: ger.gmane.org 1468637877 18171 80.91.229.3 (16 Jul 2016 02:57:57 GMT) X-Complaints-To: usenet@ger.gmane.org NNTP-Posting-Date: Sat, 16 Jul 2016 02:57:57 +0000 (UTC) Cc: larsi@gnus.org, 23967@debbugs.gnu.org To: Eli Zaretskii Original-X-From: bug-gnu-emacs-bounces+geb-bug-gnu-emacs=m.gmane.org@gnu.org Sat Jul 16 04:57:47 2016 Return-path: Envelope-to: geb-bug-gnu-emacs@m.gmane.org Original-Received: from lists.gnu.org ([208.118.235.17]) by plane.gmane.org with esmtp (Exim 4.69) (envelope-from ) id 1bOFnX-0003ef-3F for geb-bug-gnu-emacs@m.gmane.org; Sat, 16 Jul 2016 04:57:47 +0200 Original-Received: from localhost ([::1]:35709 helo=lists.gnu.org) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1bOFdH-0008N6-W4 for geb-bug-gnu-emacs@m.gmane.org; Fri, 15 Jul 2016 22:47:12 -0400 Original-Received: from eggs.gnu.org ([2001:4830:134:3::10]:49580) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1bOFdC-0008Mu-1W for bug-gnu-emacs@gnu.org; Fri, 15 Jul 2016 22:47:07 -0400 Original-Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1bOFd8-0004rj-QF for bug-gnu-emacs@gnu.org; Fri, 15 Jul 2016 22:47:05 -0400 Original-Received: from debbugs.gnu.org ([208.118.235.43]:41051) by eggs.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1bOFd8-0004rF-MK for bug-gnu-emacs@gnu.org; Fri, 15 Jul 2016 22:47:02 -0400 Original-Received: from Debian-debbugs by debbugs.gnu.org with local (Exim 4.84_2) (envelope-from ) id 1bOFd8-0002Vj-9W for bug-gnu-emacs@gnu.org; Fri, 15 Jul 2016 22:47:02 -0400 X-Loop: help-debbugs@gnu.org Resent-From: npostavs@users.sourceforge.net Original-Sender: "Debbugs-submit" Resent-CC: bug-gnu-emacs@gnu.org Resent-Date: Sat, 16 Jul 2016 02:47:02 +0000 Resent-Message-ID: Resent-Sender: help-debbugs@gnu.org X-GNU-PR-Message: followup 23967 X-GNU-PR-Package: emacs X-GNU-PR-Keywords: Original-Received: via spool by 23967-submit@debbugs.gnu.org id=B23967.14686371819585 (code B ref 23967); Sat, 16 Jul 2016 02:47:02 +0000 Original-Received: (at 23967) by debbugs.gnu.org; 16 Jul 2016 02:46:21 +0000 Original-Received: from localhost ([127.0.0.1]:53388 helo=debbugs.gnu.org) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1bOFcS-0002UX-MR for submit@debbugs.gnu.org; Fri, 15 Jul 2016 22:46:20 -0400 Original-Received: from mail-it0-f53.google.com ([209.85.214.53]:37354) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1bOFcR-0002UE-0B for 23967@debbugs.gnu.org; Fri, 15 Jul 2016 22:46:20 -0400 Original-Received: by mail-it0-f53.google.com with SMTP id f6so33613246ith.0 for <23967@debbugs.gnu.org>; Fri, 15 Jul 2016 19:46:18 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20120113; h=sender:from:to:cc:subject:references:date:in-reply-to:message-id :user-agent:mime-version; bh=Z5a/FInGr2ilLqgrBKn5xCW3T3geZOSo2hIIHS63/9I=; b=Q2s8oEtIN8RRedDMzvLOfxk17YzxUvizK+3aPGUe/COJjE/Kb+l0k8MXanT2y9/0e0 sKj2VH2PCTENy67TWTEdbVUQGNajlpyH2RoUr9EVeWtAk1HLQnH4EVf4Cmz+IeciXqtl kiwHZ/IwADRVFx9AW0ZoSMwvOmGL84b54zpDiEAydlV62927jJPp1zs76NwrJaf7iRFG 3wosxLyKQeIgLMA5XRWaUQTcWGwr9z1zZjre+dNaY5jPBSuVxhnKcHoVFRH3wY9sf+W9 q9yGpklmdGdzqr9/pwRBh3jiJsjlaRbNYeLFmXSSWLAJg6wtoN7hinuL79FJJMuXF64f 3iCg== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20130820; h=x-gm-message-state:sender:from:to:cc:subject:references:date :in-reply-to:message-id:user-agent:mime-version; bh=Z5a/FInGr2ilLqgrBKn5xCW3T3geZOSo2hIIHS63/9I=; b=Hde12mMA9+Yq+ES4bbDiwo7jzK+THSVaYmGHXDgy7VJvFQNFjCjHFiI1mT4hU5KKQR p2noevnNoqzCvsd+ZL4HJrhz3vdU3KC2F95keNNSwWtToYWzScBrsoLu7V8QauS52R/x l2fm9R/nTU34cN20P/rrA1YqMyqW4PpgUrdKMAGsBTBj/Ys73z2kQI8Roec1XYqcLf4J 9cML/Pm4S1wimZq0NUrE51TTkjK0ApD8vWzo0tUpre1JrlDZalf24paWh9F+u8iM3Sgy O/ZlK8AAo5Ybx2Uhm5XiUl014U3tixqay/Q9iQHD/Q+md79OVc3xgR5WZRZex0oVGzFJ K1SQ== X-Gm-Message-State: ALyK8tL5a5eFTd7nM0RO87iOBUnKqbnGO5eiEsOo0zaP3yVYSIqabnCYGDJESejKsvXvBQ== X-Received: by 10.36.28.149 with SMTP id c143mr24560639itc.55.1468637173394; Fri, 15 Jul 2016 19:46:13 -0700 (PDT) Original-Received: from zony (206-188-64-44.cpe.distributel.net. [206.188.64.44]) by smtp.googlemail.com with ESMTPSA id j5sm412189ith.1.2016.07.15.19.46.12 (version=TLS1_2 cipher=ECDHE-RSA-AES128-GCM-SHA256 bits=128/128); Fri, 15 Jul 2016 19:46:12 -0700 (PDT) In-Reply-To: <83k2gn74dq.fsf@gnu.org> (Eli Zaretskii's message of "Fri, 15 Jul 2016 10:21:53 +0300") User-Agent: Gnus/5.13 (Gnus v5.13) Emacs/25.0.93 (gnu/linux) X-BeenThere: debbugs-submit@debbugs.gnu.org X-Mailman-Version: 2.1.18 Precedence: list X-detected-operating-system: by eggs.gnu.org: GNU/Linux 2.2.x-3.x [generic] X-Received-From: 208.118.235.43 X-BeenThere: bug-gnu-emacs@gnu.org List-Id: "Bug reports for GNU Emacs, the Swiss army knife of text editors" List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: bug-gnu-emacs-bounces+geb-bug-gnu-emacs=m.gmane.org@gnu.org Original-Sender: "bug-gnu-emacs" Xref: news.gmane.org gmane.emacs.bugs:121130 Archived-At: --=-=-= Content-Type: text/plain Eli Zaretskii writes: >> I stared writing a new one, and it's failing with the original >> ucs-normalize.el (or I'm misunderstanding the requirements). > > If the failures are identical to the original ucs-normalize, let's for > now just mark them as known failures, and look into them later. I > don't want to delay this important change that speeds up the bootstrap > due to problems unrelated to the change. >> >> Lines 15131 to 15139 and 16149 to 16289 are failing. I finished writing the tests. It does pass with http://www.unicode.org/Public/5.2.0/ucd/NormalizationTest.txt as was claimed in the ucs-normalize.el file (except that some of the rule 2 tests fail with that version, but that's only because version 5.2.0 has less code points listed in Part 1). Here are the patches, first adds the test (I elided the content of NormalizationTest.txt to save space), second is the optimization (same as before, except I dropped the change from mapc to dolist, because some benchmark-runs showed me that mapc is significantly faster when not compiled). --=-=-= Content-Type: application/octet-stream Content-Disposition: attachment; filename=v1-0001-Add-tests-for-ucs-normalize.el.patch.gz Content-Transfer-Encoding: base64 Content-Description: patch 1, elided content H4sICJibiVcAA3YxLTAwMDEtQWRkLXRlc3RzLWZvci11Y3Mtbm9ybWFsaXplLmVsLnBhdGNoAN1a /3LbxhH+n0+xo0xjMBYo4giAIFW3ViUrcZXYHlmeOhNnJiBwFFGBAA2AktUfD9R/+hB5su5+IEhA oiRImU5nysQnAtj9dm93b2/3wOMsnZOtnb4eDSe2q4ZTV3me6jtqEngqVCrw3H4wmnjuwFf0Q5rQ e70ga0j9/hj/k+r3rc4xw4zpTerP6V2aF/5lfnFNv08W5feX53M/intBOv9D58gv9JiOs2iXLIf+ vIwZwHJJWWPLG/c9Mvt2v995v5z8VQfFmH56d3B2+B1dWmTtqZ/pIAyp0HmR0zTNaBnkZpJmcz+O /qZ7Ou503qdzvSLwM01zP7vQIfk56S8LxuPvRUpTUabT+QaEe6Ff+HtRUugs8YsoTfx4780KE9dn TNQrvhTjiiGO8sUNhoYiJuSzOmwQfVVq0+uYptl5nECif5DlDYdDer7903mkPoxHpBxFzKloGsU6 p2DmJ+c6ZGeM+mpEUZLrTEBy43m3Q0Gm2V00T0NNVr/v2vbjpnA3QmulO50wmk7JNM+jgvy9x1lw 8jj6TsL+ErvU9e1ESai/cLzj0+tpazCY+p44lPZCfbmXLOO4w+54tLSXLznady16bu269PJl5/lX dIvQHPX6/J+Q8+Ny8ciC4WXC/7PbrLFtjR2Hvv3hTCh+/Ve5nj4kUcBz+PXfu/Q6CXqdn3q93s9M IDSv3h5vMWr7MJo8kqGVWfv2yLKmwd1mbS+utGtf7CrRLpbd399vZgsSOZtMcg+uzNj8xqRYf4kC PzYnrHiUnI+pkNud5wJOh+niOovOZwUZh11JicqEG44zrel9Oi2uJB0dp8skhJCVV0rms1mUl/bh vws/Kyid0rdvPtCruR/kFdX6hlBNBTdf4Y7pOl1S4CeU6TDKiyyaLHnNiWuTcI9nx2aPptdA4Zus g86omEmizOa5CJMLwf9WJzrzY3q3nMRRQN9HgeaEIPlzIXfyGSfQSQkkLHfPTkf8PKNLneV8TYNK yApxl9IMKIZfiPIZpQth7LLG1xRzlK95t05/M8uQXQfkWbrgCc0Yj6d4FcUcppqWuZ4u410AMDX9 5fXZd28/nNHBmx/pLwenpwdvzn7cZ+pilvJTfalLrGi+iCOG5mllflJcs/aA+OHV6eF3zHPwp9ff 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 --=-=-= Content-Type: text/x-diff; charset=utf-8 Content-Disposition: attachment; filename=v1-0002-Optimize-ucs-normalize.el-compilation.patch Content-Transfer-Encoding: quoted-printable Content-Description: patch 2 >From 821aa63d1efd763d42cf0ae8249727aa7cb692fc Mon Sep 17 00:00:00 2001 From: Noam Postavsky Date: Fri, 15 Jul 2016 22:10:33 -0400 Subject: [PATCH v1 2/2] Optimize ucs-normalize.el compilation * lisp/international/ucs-normalize.el (ucs-normalize-combining-chars-regexp= ): (quick-check-list-to-regexp): Use regexp-opt-charset instead of regexp-opt. * lisp/international/ucs-normalize.el (quick-check-list): Reuse a single temp buffer for the whole loop. --- lisp/international/ucs-normalize.el | 34 ++++++++++++++++++---------------- 1 file changed, 18 insertions(+), 16 deletions(-) diff --git a/lisp/international/ucs-normalize.el b/lisp/international/ucs-n= ormalize.el index 4b364ee..ac2a0d9 100644 --- a/lisp/international/ucs-normalize.el +++ b/lisp/international/ucs-normalize.el @@ -263,7 +263,7 @@ ucs-normalize-combining-chars (defvar ucs-normalize-combining-chars-regexp nil "Regular expression to match sequence of combining characters.") (setq ucs-normalize-combining-chars-regexp - (eval-when-compile (concat (regexp-opt (mapcar 'char-to-string combining= -chars)) "+"))) + (eval-when-compile (concat (regexp-opt-charset combining-chars) "+= "))) =20 (declare-function decomposition-translation-alist "ucs-normalize" (decomposition-function)) @@ -396,20 +396,22 @@ ucs-normalize-block-compose-chars It includes Singletons, CompositionExclusions, and Non-Starter decomposition." (let (entries decomposition composition) - (mapc - (lambda (start-end) - (cl-do ((i (car start-end) (+ i 1))) ((> i (cdr start-end))) - (setq decomposition - (string-to-list - (with-temp-buffer - (insert i) - (translate-region 1 2 decomposition-translation) - (buffer-string)))) - (setq composition - (ucs-normalize-block-compose-chars decomposition composit= ion-predicate)) - (when (not (equal composition (list i))) - (setq entries (cons i entries))))) - check-range) + (with-temp-buffer + (mapc + (lambda (start-end) + (cl-do ((i (car start-end) (+ i 1))) ((> i (cdr start-end))) + (setq decomposition + (string-to-list + (progn + (erase-buffer) + (insert i) + (translate-region 1 2 decomposition-translation) + (buffer-string)))) + (setq composition + (ucs-normalize-block-compose-chars decomposition compos= ition-predicate)) + (when (not (equal composition (list i))) + (setq entries (cons i entries))))) + check-range)) ;;(remove-duplicates (append entries ucs-normalize-composition-exclusions @@ -431,7 +433,7 @@ ucs-normalize-block-compose-chars (setq hfs-nfc-quick-check-list (quick-check-list 'ucs-normalize-hfs-nf= d-table t )) =20 (defun quick-check-list-to-regexp (quick-check-list) - (regexp-opt (mapcar 'char-to-string (append quick-check-list combining= -chars)))) + (regexp-opt-charset (append quick-check-list combining-chars))) =20 (defun quick-check-decomposition-list-to-regexp (quick-check-list) (concat (quick-check-list-to-regexp quick-check-list) "\\|[=EA=B0=80-= =ED=9E=A3]")) --=20 2.8.0 --=-=-=--