From mboxrd@z Thu Jan 1 00:00:00 1970 Path: news.gmane.org!.POSTED!not-for-mail From: Chris Hecker Newsgroups: gmane.emacs.bugs Subject: bug#33670: 26.1; very large c++-mode yank performance regression 25.3_1-x86_64 -> 26.1-x86_64 Date: Sat, 8 Dec 2018 13:31:42 -0800 Message-ID: References: <20181208204036.61878.qmail@mail.muc.de> NNTP-Posting-Host: blaine.gmane.org Mime-Version: 1.0 Content-Type: multipart/alternative; boundary="000000000000ea98b9057c8975d3" X-Trace: blaine.gmane.org 1544304677 2960 195.159.176.226 (8 Dec 2018 21:31:17 GMT) X-Complaints-To: usenet@blaine.gmane.org NNTP-Posting-Date: Sat, 8 Dec 2018 21:31:17 +0000 (UTC) Cc: 33670@debbugs.gnu.org To: Alan Mackenzie Original-X-From: bug-gnu-emacs-bounces+geb-bug-gnu-emacs=m.gmane.org@gnu.org Sat Dec 08 22:31:13 2018 Return-path: Envelope-to: geb-bug-gnu-emacs@m.gmane.org Original-Received: from lists.gnu.org ([208.118.235.17]) by blaine.gmane.org with esmtp (Exim 4.84_2) (envelope-from ) id 1gVkBn-0000YX-49 for geb-bug-gnu-emacs@m.gmane.org; Sat, 08 Dec 2018 22:31:12 +0100 Original-Received: from localhost ([::1]:52162 helo=lists.gnu.org) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1gVkDt-0007bX-1s for geb-bug-gnu-emacs@m.gmane.org; Sat, 08 Dec 2018 16:33:17 -0500 Original-Received: from eggs.gnu.org ([2001:4830:134:3::10]:58347) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1gVkDj-0007bS-Ly for bug-gnu-emacs@gnu.org; Sat, 08 Dec 2018 16:33:09 -0500 Original-Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1gVkDf-0003N7-6O for bug-gnu-emacs@gnu.org; Sat, 08 Dec 2018 16:33:07 -0500 Original-Received: from debbugs.gnu.org ([208.118.235.43]:34569) by eggs.gnu.org with esmtps (TLS1.0:RSA_AES_128_CBC_SHA1:16) (Exim 4.71) (envelope-from ) id 1gVkDe-0003Lm-Tn for bug-gnu-emacs@gnu.org; Sat, 08 Dec 2018 16:33:03 -0500 Original-Received: from Debian-debbugs by debbugs.gnu.org with local (Exim 4.84_2) (envelope-from ) id 1gVkDe-0005Ye-Gb for bug-gnu-emacs@gnu.org; Sat, 08 Dec 2018 16:33:02 -0500 X-Loop: help-debbugs@gnu.org Resent-From: Chris Hecker Original-Sender: "Debbugs-submit" Resent-CC: bug-gnu-emacs@gnu.org Resent-Date: Sat, 08 Dec 2018 21:33:02 +0000 Resent-Message-ID: Resent-Sender: help-debbugs@gnu.org X-GNU-PR-Message: followup 33670 X-GNU-PR-Package: emacs X-GNU-PR-Keywords: Original-Received: via spool by 33670-submit@debbugs.gnu.org id=B33670.154430472321295 (code B ref 33670); Sat, 08 Dec 2018 21:33:02 +0000 Original-Received: (at 33670) by debbugs.gnu.org; 8 Dec 2018 21:32:03 +0000 Original-Received: from localhost ([127.0.0.1]:38827 helo=debbugs.gnu.org) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1gVkCg-0005XO-VV for submit@debbugs.gnu.org; Sat, 08 Dec 2018 16:32:03 -0500 Original-Received: from mail-ed1-f46.google.com ([209.85.208.46]:40247) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1gVkCe-0005Wu-32 for 33670@debbugs.gnu.org; Sat, 08 Dec 2018 16:32:01 -0500 Original-Received: by mail-ed1-f46.google.com with SMTP id d3so6459532edx.7 for <33670@debbugs.gnu.org>; Sat, 08 Dec 2018 13:32:00 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=d6-com.20150623.gappssmtp.com; s=20150623; h=mime-version:references:in-reply-to:from:date:message-id:subject:to :cc; bh=VAdjYAnJCaRdOh9WLdYqu394XALlieQPTYEnG04wNb0=; b=Ycf+/FMTID1PMtrmi1MxkT01Yi8wOP4u8LKEKFEy56MewtovuJsSAm1Xeyi39gTP4Z EOMzO8lrx8vLemf+Z3ogtRHO1s+vrTqgxUH11kVmG6CYwa8z1Tdikfqo+1YK9NcNwSQL 7mqP9OzYgvGJAmIGllAfUs8n7tS2RN8cg1/FW+PDfFgwBXC91VFA0GPNXTRupduaAxQk Z49GgcRQqRfQDufhSi4ZPreopMVC250/ME3+52NPFmDMVi6+XjQl7GZHuhE6Q4dE0ymZ 2Ybu4BVn2+dCcfh034pZYhm5SRjH+PQXjoPbDocCQVJd05Ff7z2JwM/2iVyq4y5Pd+tp 59iQ== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:mime-version:references:in-reply-to:from:date :message-id:subject:to:cc; bh=VAdjYAnJCaRdOh9WLdYqu394XALlieQPTYEnG04wNb0=; b=QKWcaNUjU7vspKsug9Y4BrsUPbLrryFljpswLfJAX1iuaqhJH0uKt3sX2DSNYHGRG7 oi8Hh8petDi3D/PXN4ItdDwVILd1h1RPbO5Vc5u9cMowGjICDx4+vA6GXOIhUlOX5wqZ ioZICelG/tGETPuabmaZPgjSYwL2SxMk4GODuR0odqY6kboobnhSP+JAUeh0nmrHDmHc ZciuCWP+pAxDNipsVMrJdSLl2RQfOY/DrLCRECVZq5ZuiaCFk/CtcMR0Mk9TuMvWzNCO 2NZRN8Wh0pSJdLyLYIRLHALK0WYWHPWlmPXe1m2h2tmXO0WMAVPGleuGPTDnsCqPZ7Xs HeQQ== X-Gm-Message-State: AA+aEWY9Z256FOSv0YEEkSDtKriqxj3F5ttW/zj2AfP5MagjEg16yRmS /pKBD+ZXcE9p995Nuxk6IZDSaPkS5wnbiN4G+ENdqg== X-Google-Smtp-Source: AFSGD/VWz9Y6D6nO1UEMlKgEbWtrxDXHcrLtCWlh8jmOFzCQq0eU6dqMyMi0Bhi1YvWrTUZrpW9fCOUyFqyo3BJ7ksM= X-Received: by 2002:a17:906:d41:: with SMTP id r1-v6mr5385103ejh.186.1544304714217; Sat, 08 Dec 2018 13:31:54 -0800 (PST) In-Reply-To: <20181208204036.61878.qmail@mail.muc.de> 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:153229 Archived-At: --000000000000ea98b9057c8975d3 Content-Type: text/plain; charset="UTF-8" Content-Transfer-Encoding: quoted-printable It wasn=E2=80=99t a string, it was a single line function call. Very simpl= e code. Like: Foo(); Chris On Sat, Dec 8, 2018 at 12:40 Alan Mackenzie wrote: > Hello, Chris. > > In article you wrote= : > > > Hi, I recently upgraded from 25.3_1 to to 26.1 on Windows 7 x64 and I'v= e > > noticed a very large performance regression on yanks in C++ mode buffer= s > > (it feels slower in many other operations as well, but I actually > > measured yank with the profiler). This happens even starting with with > > emacs -Q. > > > If I start emacs and visit a moderately large cpp file (18k LOC), and g= o > > to the same place in the middle of the file in both versions of emacs, > > then kill and yank the current line, the performance on 26.1 is easily > > 10x worse...the yank is instant in 25.3_1 and takes literally almost a > > second on 26.1 sometimes. I decided to test this with a profiler run, > > so I went to the same line in both, killed the line, and evaled this: > > > (progn (profiler-start 'cpu) (yank) (profiler-report) (profiler-stop)) > > > Here are the results: > > > 25.3_1: > > > - ... 1 100% > > Automatic GC 1 100% > > > > 26.1: > > - command-execute 14 100% > > - call-interactively 14 100% > > - funcall-interactively 14 100% > > - eval-expression 14 100% > > - eval 14 100% > > - progn 14 100% > > - yank 14 100% > > - insert-for-yank 14 100% > > - insert-for-yank-1 14 100% > > - c-after-change 13 92% > > - mapc 13 92% > > - # 13 92% > > - c-after-change-re-mark-raw-strings 6 42% > > - c-in-literal 3 21% > > - c-state-semi-pp-to-literal 3 21% > > c-parse-ps-state-below 3 21% > > - c-restore-<>-properties 4 28% > > c-syntactic-re-search-forward 4 28% > > c-neutralize-syntax-in-CPP 3 21% > > - remove-yank-excluded-properties 1 7% > > - remove-list-of-text-properties 1 7% > > - c-after-change 1 7% > > - c-before-change 1 7% > > - mapc 1 7% > > - # 1 7% > > c-depropertize-CPP 1 7% > > - ... 0 0% > > Automatic GC 0 0% > > What is this line that you kill, then yank? The profiler report > suggests that it has something to do with raw strings, and I wouldn't be > at all surprised if the line contains the opening delimiter or closing > delimiter of quite a big raw string. > > > I'm going to try the older cc-mode with the newer emacs and see if that > > fixes it, but I figured I'd report this bug now in case you haven't > > gotten other reports yet. > > There was no raw string handling at all in Emacs 25.3, so it is not > surprising that CC Mode is much faster, there. When a raw string is > started or terminated, CC Mode needs to check, potentially, the rest of > the buffer for characters which need "text properties" changing on them. > This can be time consuming. > > However, a change to a line in the inside of a raw string shouldn't be > slow, and if it is, that's a bug. > > > Thanks, > > Chris > > > > In GNU Emacs 26.1 (build 1, x86_64-w64-mingw32) > > of 2018-05-30 built on CIRROCUMULUS > > Repository revision: 07f8f9bc5a51f5aa94eb099f3e15fbe0c20ea1ea > > Windowing system distributor 'Microsoft Corp.', version 6.1.7601 > > Recent messages: > > For information about GNU Emacs and the GNU system, type C-h C-a. > > spyparty_ui.cpp has auto save data; consider M-x recover-this-file > > Mark saved where search started > > Mark set > > Quit > > CPU profiler started > > Mark set > > CPU profiler stopped > > "CPU profiler stopped" > > C-; is undefined > > Quit [3 times] > > Configured using: > > 'configure --without-dbus --host=3Dx86_64-w64-mingw32 > > --without-compress-install 'CFLAGS=3D-O2 -static -g3'' > > -- > Alan Mackenzie (Nuremberg, Germany). > > --000000000000ea98b9057c8975d3 Content-Type: text/html; charset="UTF-8" Content-Transfer-Encoding: quoted-printable
It wasn=E2=80=99t a string, it was a single line fun= ction call.=C2=A0 Very simple code.

=
Like:

= =C2=A0 =C2=A0Foo();

Chri= s


On Sat, Dec 8, 2018 at 12:40 Alan Mackenzie <acm@muc.de> wrote:
Hello, Chris.

In article <mailman.5359.1544236991.1284.bug-gnu-emacs@gnu.= org> you wrote:

> Hi, I recently upgraded from 25.3_1 to to 26.1 on Windows 7 x64 and I&= #39;ve
> noticed a very large performance regression on yanks in C++ mode buffe= rs
> (it feels slower in many other operations as well, but I actually
> measured yank with the profiler).=C2=A0 This happens even starting wit= h with
> emacs -Q.

> If I start emacs and visit a moderately large cpp file (18k LOC), and = go
> to the same place in the middle of the file in both versions of emacs,=
> then kill and yank the current line, the performance on 26.1 is easily=
> 10x worse...the yank is instant in 25.3_1 and takes literally almost a=
> second on 26.1 sometimes.=C2=A0 I decided to test this with a profiler= run,
> so I went to the same line in both, killed the line, and evaled this:<= br>
> (progn (profiler-start 'cpu) (yank) (profiler-report) (profiler-st= op))

> Here are the results:

> 25.3_1:

> - ...=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 = =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2= =A0 =C2=A0 =C2=A0 =C2=A0 =C2=A01 100%
>=C2=A0 =C2=A0 Automatic GC=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2= =A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 = =C2=A0 =C2=A01 100%


> 26.1:
> - command-execute=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2= =A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 14 100%<= br> >=C2=A0 - call-interactively=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 = =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 14 100%
>=C2=A0 =C2=A0- funcall-interactively=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 = =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 14 100%
>=C2=A0 =C2=A0 - eval-expression=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2= =A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A014= 100%
>=C2=A0 =C2=A0 =C2=A0- eval=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2= =A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 = =C2=A0 =C2=A0 =C2=A0 =C2=A014 100%
>=C2=A0 =C2=A0 =C2=A0 - progn=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 = =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2= =A0 =C2=A0 =C2=A0 =C2=A014 100%
>=C2=A0 =C2=A0 =C2=A0 =C2=A0- yank=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2= =A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 = =C2=A0 =C2=A0 =C2=A0 =C2=A014 100%
>=C2=A0 =C2=A0 =C2=A0 =C2=A0 - insert-for-yank=C2=A0 =C2=A0 =C2=A0 =C2= =A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A014= 100%
>=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0- insert-for-yank-1=C2=A0 =C2=A0 =C2= =A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 14 100%<= br> >=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 - c-after-change=C2=A0 =C2=A0 =C2=A0= =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 13= =C2=A0 92%
>=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0- mapc=C2=A0 =C2=A0 =C2=A0 =C2= =A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 = =C2=A0 =C2=A0 =C2=A0 =C2=A013=C2=A0 92%
>=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 - #<compiled 0x9dcce1>= =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 13=C2=A0 92%=
>=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0- c-after-change-re-mar= k-raw-strings=C2=A0 =C2=A0 6=C2=A0 42%
>=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 - c-in-literal=C2=A0 = =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2= =A0 =C2=A03=C2=A0 21%
>=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0- c-state-semi-p= p-to-literal=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 3=C2=A0 21%
>=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 c-parse-= ps-state-below=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A03=C2=A0 21% >=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0- c-restore-<>-pr= operties=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A04=C2=A0 28%<= br> >=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 c-syntactic-re-= search-forward=C2=A0 =C2=A0 =C2=A0 =C2=A0 4=C2=A0 28%
>=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0c-neutralize-syn= tax-in-CPP=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 3=C2=A0 21%
>=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 - remove-yank-excluded-properties=C2= =A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 1=C2=A0 =C2=A07%
>=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0- remove-list-of-text-properti= es=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 1=C2=A0 =C2=A07%
>=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 - c-after-change=C2=A0 =C2=A0= =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2= =A01=C2=A0 =C2=A07%
>=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0- c-before-change=C2=A0= =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2= =A01=C2=A0 =C2=A07%
>=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 - mapc=C2=A0 =C2=A0 = =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2= =A0 =C2=A0 =C2=A0 =C2=A0 =C2=A01=C2=A0 =C2=A07%
>=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0- #<compiled = 0xfcb439>=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 1=C2=A0= =C2=A07%
>=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 c-deprop= ertize-CPP=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A01= =C2=A0 =C2=A07%
> - ...=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 = =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2= =A0 =C2=A0 =C2=A0 =C2=A0 =C2=A00=C2=A0 =C2=A00%
>=C2=A0 =C2=A0 Automatic GC=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2= =A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 = =C2=A0 =C2=A00=C2=A0 =C2=A00%

What is this line that you kill, then yank?=C2=A0 The profiler report
suggests that it has something to do with raw strings, and I wouldn't b= e
at all surprised if the line contains the opening delimiter or closing
delimiter of quite a big raw string.

> I'm going to try the older cc-mode with the newer emacs and see if= that
> fixes it, but I figured I'd report this bug now in case you haven&= #39;t
> gotten other reports yet.

There was no raw string handling at all in Emacs 25.3, so it is not
surprising that CC Mode is much faster, there.=C2=A0 When a raw string is started or terminated, CC Mode needs to check, potentially, the rest of
the buffer for characters which need "text properties" changing o= n them.
This can be time consuming.

However, a change to a line in the inside of a raw string shouldn't be<= br> slow, and if it is, that's a bug.

> Thanks,
> Chris


> In GNU Emacs 26.1 (build 1, x86_64-w64-mingw32)
>=C2=A0 of 2018-05-30 built on CIRROCUMULUS
> Repository revision: 07f8f9bc5a51f5aa94eb099f3e15fbe0c20ea1ea
> Windowing system distributor 'Microsoft Corp.', version 6.1.76= 01
> Recent messages:
> For information about GNU Emacs and the GNU system, type C-h C-a.
> spyparty_ui.cpp has auto save data; consider M-x recover-this-file
> Mark saved where search started
> Mark set
> Quit
> CPU profiler started
> Mark set
> CPU profiler stopped
> "CPU profiler stopped"
> C-; is undefined
> Quit [3 times]
> Configured using:
>=C2=A0 'configure --without-dbus --host=3Dx86_64-w64-mingw32
>=C2=A0 --without-compress-install 'CFLAGS=3D-O2 -static -g3'= 9;

--
Alan Mackenzie (Nuremberg, Germany).

--000000000000ea98b9057c8975d3--