GNU bug report logs - #58558
29.0.50; re-search-forward is slow in some buffers

Please note: This is a static page, with minimal formatting, updated once a day.
Click here to see this page with the latest information and nicer formatting.

Package: emacs; Reported by: Ihor Radchenko <yantar92@HIDDEN>; dated Sun, 16 Oct 2022 01:27:02 UTC; Maintainer for emacs is bug-gnu-emacs@HIDDEN.

Message received at 58558 <at> debbugs.gnu.org:


Received: (at 58558) by debbugs.gnu.org; 12 Apr 2023 15:59:52 +0000
From debbugs-submit-bounces <at> debbugs.gnu.org Wed Apr 12 11:59:52 2023
Received: from localhost ([127.0.0.1]:41115 helo=debbugs.gnu.org)
	by debbugs.gnu.org with esmtp (Exim 4.84_2)
	(envelope-from <debbugs-submit-bounces <at> debbugs.gnu.org>)
	id 1pmcsx-000633-NX
	for submit <at> debbugs.gnu.org; Wed, 12 Apr 2023 11:59:52 -0400
Received: from mx3.muc.de ([193.149.48.5]:51174)
 by debbugs.gnu.org with esmtp (Exim 4.84_2)
 (envelope-from <acm@HIDDEN>) id 1pmcsv-00062l-PU
 for 58558 <at> debbugs.gnu.org; Wed, 12 Apr 2023 11:59:50 -0400
Received: (qmail 68249 invoked by uid 3782); 12 Apr 2023 17:59:43 +0200
Received: from acm.muc.de (pd953ab03.dip0.t-ipconnect.de [217.83.171.3])
 (using STARTTLS) by colin.muc.de (tmda-ofmipd) with ESMTP;
 Wed, 12 Apr 2023 17:59:42 +0200
Received: (qmail 22126 invoked by uid 1000); 12 Apr 2023 15:59:42 -0000
Date: Wed, 12 Apr 2023 15:59:42 +0000
To: Eli Zaretskii <eliz@HIDDEN>
Subject: Re: bug#58558: 29.0.50; re-search-forward is slow in some buffers
Message-ID: <ZDbVbsRePMfgqvE+@ACM>
References: <83ttxol6f5.fsf@HIDDEN> <87h6tolybs.fsf@localhost>
 <jwvjzyjhlf1.fsf-monnier+emacs@HIDDEN> <87zg7e8xnt.fsf@localhost>
 <83ttxmab7x.fsf@HIDDEN> <87sfd5b4oy.fsf@localhost>
 <jwvile1p5c0.fsf-monnier+emacs@HIDDEN> <83fs956ulv.fsf@HIDDEN>
 <jwvjzyhnp6j.fsf-monnier+emacs@HIDDEN> <83cz496s7l.fsf@HIDDEN>
MIME-Version: 1.0
Content-Type: text/plain; charset=us-ascii
Content-Disposition: inline
In-Reply-To: <83cz496s7l.fsf@HIDDEN>
X-Submission-Agent: TMDA/1.3.x (Ph3nix)
From: Alan Mackenzie <acm@HIDDEN>
X-Primary-Address: acm@HIDDEN
X-Spam-Score: 0.0 (/)
X-Debbugs-Envelope-To: 58558
Cc: 58558 <at> debbugs.gnu.org, larsi@HIDDEN, yantar92@HIDDEN,
 Stefan Monnier <monnier@HIDDEN>
X-BeenThere: debbugs-submit <at> debbugs.gnu.org
X-Mailman-Version: 2.1.18
Precedence: list
List-Id: <debbugs-submit.debbugs.gnu.org>
List-Unsubscribe: <https://debbugs.gnu.org/cgi-bin/mailman/options/debbugs-submit>, 
 <mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=unsubscribe>
List-Archive: <https://debbugs.gnu.org/cgi-bin/mailman/private/debbugs-submit/>
List-Post: <mailto:debbugs-submit <at> debbugs.gnu.org>
List-Help: <mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=help>
List-Subscribe: <https://debbugs.gnu.org/cgi-bin/mailman/listinfo/debbugs-submit>, 
 <mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=subscribe>
Errors-To: debbugs-submit-bounces <at> debbugs.gnu.org
Sender: "Debbugs-submit" <debbugs-submit-bounces <at> debbugs.gnu.org>
X-Spam-Score: -1.0 (-)

Hello, Eli.

On Wed, Apr 12, 2023 at 18:22:22 +0300, Eli Zaretskii wrote:
> > From: Stefan Monnier <monnier@HIDDEN>
> > Cc: acm@HIDDEN,  yantar92@HIDDEN,  larsi@HIDDEN,  58558 <at> debbugs.gnu.org
> > Date: Wed, 12 Apr 2023 10:38:50 -0400

> > > Also, that code was there in Emacs 28 as well, so how come it suddenly
> > > has this effect now?

> > The effect of the code depends on whether the buffer that's current when
> > `cc-defs.el` is loaded has set `parse-sexp-lookup-properties`
> > buffer-locally or not.

> > I don't have Emacs-28 at hand, but the value of
> > `parse-sexp-lookup-properties` in *scratch* is (buffer-local) t in
> > Emacs-29 and (global) nil in Emacs-27.

> Ah, okay.  So in Emacs 29 we started setting this variable locally in
> some buffers?  Do you happen to know where's the change which caused
> that, and why was it done?

I suspect this commit as the cause:

commit 6ccc4b6bc8a14daca6b3e3250574752c90c1eb9b
Author: Noam Postavsky <npostavs@HIDDEN>
Date:   Fri May 6 18:31:00 2022 +0200

    Handle elisp #-syntax better in Emacs Lisp mode

    * elisp-mode.el (elisp-mode-syntax-propertize): New function.
    (emacs-lisp-mode): Set it as syntax-propertize-function (bug#15998).

Lisp Interaction Mode is derived from Emacs Lisp Mode.  Whenever there
is a non-nil syntax-propertize-function, run-mode-hooks sets
parse-sexp-lookup-properties to t.

This is probably harmless in *scratch*.

-- 
Alan Mackenzie (Nuremberg, Germany).




Information forwarded to bug-gnu-emacs@HIDDEN:
bug#58558; Package emacs. Full text available.

Message received at 58558 <at> debbugs.gnu.org:


Received: (at 58558) by debbugs.gnu.org; 12 Apr 2023 15:22:16 +0000
From debbugs-submit-bounces <at> debbugs.gnu.org Wed Apr 12 11:22:16 2023
Received: from localhost ([127.0.0.1]:40686 helo=debbugs.gnu.org)
	by debbugs.gnu.org with esmtp (Exim 4.84_2)
	(envelope-from <debbugs-submit-bounces <at> debbugs.gnu.org>)
	id 1pmcIZ-0004aw-Kx
	for submit <at> debbugs.gnu.org; Wed, 12 Apr 2023 11:22:15 -0400
Received: from eggs.gnu.org ([209.51.188.92]:48688)
 by debbugs.gnu.org with esmtp (Exim 4.84_2)
 (envelope-from <eliz@HIDDEN>) id 1pmcIX-0004ah-T2
 for 58558 <at> debbugs.gnu.org; Wed, 12 Apr 2023 11:22:14 -0400
Received: from fencepost.gnu.org ([2001:470:142:3::e])
 by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256)
 (Exim 4.90_1) (envelope-from <eliz@HIDDEN>)
 id 1pmcIR-0002vL-CI; Wed, 12 Apr 2023 11:22:07 -0400
DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; d=gnu.org;
 s=fencepost-gnu-org; h=References:Subject:In-Reply-To:To:From:Date:
 mime-version; bh=IrxrJioM0Auy7xzLzqd59J4nYVaBVgyBzK+qJCqqAnA=; b=sZAarl1iyf36
 BAZuOYj9ljcwLKGtiAQpdGxCzDP5CW5pFd5YmbbCmxj7mIe9u7YMIkC5UhbGcHu5tIDuENVVmBa8v
 Lo4LMiCd8LbH+9UKoBCfDN2Py4iGO3+wVFPPXZv1NsBOauAM5UVaoV3VZXHB/v9aSzXAdlgKvpCwH
 ecT599Q23/wHRWcVKmeQEXGxnRVyh2nLMpfS1i4efoWIqYuUQXfsSqcBLlNk36TabUWGxjHTRdbaJ
 4WfJRUgNf6SWcbqnS3i07ODWkeFNKhWJBWD2xCbE8+uZx5MfjXl/nWqLytg46uY/jvkLEMiDR++wj
 K3WLUzh/O6ZOpynQS8JI+A==;
Received: from [87.69.77.57] (helo=home-c4e4a596f7)
 by fencepost.gnu.org with esmtpsa (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256)
 (Exim 4.90_1) (envelope-from <eliz@HIDDEN>)
 id 1pmcHy-0002Bc-HD; Wed, 12 Apr 2023 11:21:55 -0400
Date: Wed, 12 Apr 2023 18:22:22 +0300
Message-Id: <83cz496s7l.fsf@HIDDEN>
From: Eli Zaretskii <eliz@HIDDEN>
To: Stefan Monnier <monnier@HIDDEN>
In-Reply-To: <jwvjzyhnp6j.fsf-monnier+emacs@HIDDEN> (message from Stefan
 Monnier on Wed, 12 Apr 2023 10:38:50 -0400)
Subject: Re: bug#58558: 29.0.50; re-search-forward is slow in some buffers
References: <877d10r21x.fsf@localhost> <87wn6vbfaa.fsf@localhost>
 <838rjbpecw.fsf@HIDDEN> <87fsdjwb4e.fsf@localhost>
 <jwv5yefb556.fsf-monnier+emacs@HIDDEN> <874jtyuqax.fsf@localhost>
 <83zgbqm8q6.fsf@HIDDEN> <87sfhit8ug.fsf@localhost>
 <83tu1ym6jo.fsf@HIDDEN> <87h6xyt77x.fsf@localhost>
 <87h6ttkz6n.fsf@localhost> <838rf5qkpt.fsf@HIDDEN>
 <87lej0zv92.fsf@localhost> <83ttxol6f5.fsf@HIDDEN>
 <87h6tolybs.fsf@localhost> <jwvjzyjhlf1.fsf-monnier+emacs@HIDDEN>
 <87zg7e8xnt.fsf@localhost> <83ttxmab7x.fsf@HIDDEN>
 <87sfd5b4oy.fsf@localhost> <jwvile1p5c0.fsf-monnier+emacs@HIDDEN>
 <83fs956ulv.fsf@HIDDEN> <jwvjzyhnp6j.fsf-monnier+emacs@HIDDEN>
X-Spam-Score: -2.3 (--)
X-Debbugs-Envelope-To: 58558
Cc: 58558 <at> debbugs.gnu.org, acm@HIDDEN, yantar92@HIDDEN, larsi@HIDDEN
X-BeenThere: debbugs-submit <at> debbugs.gnu.org
X-Mailman-Version: 2.1.18
Precedence: list
List-Id: <debbugs-submit.debbugs.gnu.org>
List-Unsubscribe: <https://debbugs.gnu.org/cgi-bin/mailman/options/debbugs-submit>, 
 <mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=unsubscribe>
List-Archive: <https://debbugs.gnu.org/cgi-bin/mailman/private/debbugs-submit/>
List-Post: <mailto:debbugs-submit <at> debbugs.gnu.org>
List-Help: <mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=help>
List-Subscribe: <https://debbugs.gnu.org/cgi-bin/mailman/listinfo/debbugs-submit>, 
 <mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=subscribe>
Errors-To: debbugs-submit-bounces <at> debbugs.gnu.org
Sender: "Debbugs-submit" <debbugs-submit-bounces <at> debbugs.gnu.org>
X-Spam-Score: -3.3 (---)

> From: Stefan Monnier <monnier@HIDDEN>
> Cc: acm@HIDDEN,  yantar92@HIDDEN,  larsi@HIDDEN,  58558 <at> debbugs.gnu.org
> Date: Wed, 12 Apr 2023 10:38:50 -0400
> 
> > Also, that code was there in Emacs 28 as well, so how come it suddenly
> > has this effect now?
> 
> The effect of the code depends on whether the buffer that's current when
> `cc-defs.el` is loaded has set `parse-sexp-lookup-properties`
> buffer-locally or not.
> 
> I don't have Emacs-28 at hand, but the value of
> `parse-sexp-lookup-properties` in *scratch* is (buffer-local) t in
> Emacs-29 and (global) nil in Emacs-27.

Ah, okay.  So in Emacs 29 we started setting this variable locally in
some buffers?  Do you happen to know where's the change which caused
that, and why was it done?




Information forwarded to bug-gnu-emacs@HIDDEN:
bug#58558; Package emacs. Full text available.

Message received at 58558 <at> debbugs.gnu.org:


Received: (at 58558) by debbugs.gnu.org; 12 Apr 2023 15:20:28 +0000
From debbugs-submit-bounces <at> debbugs.gnu.org Wed Apr 12 11:20:28 2023
Received: from localhost ([127.0.0.1]:40644 helo=debbugs.gnu.org)
	by debbugs.gnu.org with esmtp (Exim 4.84_2)
	(envelope-from <debbugs-submit-bounces <at> debbugs.gnu.org>)
	id 1pmcGp-0004VF-PE
	for submit <at> debbugs.gnu.org; Wed, 12 Apr 2023 11:20:28 -0400
Received: from mailscanner.iro.umontreal.ca ([132.204.25.50]:17595)
 by debbugs.gnu.org with esmtp (Exim 4.84_2)
 (envelope-from <monnier@HIDDEN>) id 1pmcGn-0004Ut-OA
 for 58558 <at> debbugs.gnu.org; Wed, 12 Apr 2023 11:20:26 -0400
Received: from pmg2.iro.umontreal.ca (localhost.localdomain [127.0.0.1])
 by pmg2.iro.umontreal.ca (Proxmox) with ESMTP id 317568091E;
 Wed, 12 Apr 2023 11:20:20 -0400 (EDT)
Received: from mail01.iro.umontreal.ca (unknown [172.31.2.1])
 by pmg2.iro.umontreal.ca (Proxmox) with ESMTP id C2AB680630;
 Wed, 12 Apr 2023 11:20:18 -0400 (EDT)
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=iro.umontreal.ca;
 s=mail; t=1681312818;
 bh=/SrlOmYzeD0e9S2osz9p9afnXxyCztoka2cgXsEhzdg=;
 h=From:To:Cc:Subject:In-Reply-To:References:Date:From;
 b=airXF2gD0MTTH0Wk/yF1DLZ4y461UMbJC6hUehDvx1ZRot/IOWvse8nHlTpS79y1l
 FhiZEAlLCp2UseV3ZTQuRRhOt8LjbKNKqumyb7T4Kf661pPuPU6CJBJglW6IBnguUL
 JqbhWzo7B+o7IhUh4bR15qv5WzWQbAFwytv4au3x3Q3n/j6QKYO/F4fwoMxwoFUHDZ
 aETC1IFdI3g1iQabbWVm37n/TeGS6E2zWC0SXY2hUGZjwGyxdAglCObT3SwmD83iIw
 0H6bgJ/9Iqm9damuwRC/0x1v8p8xXggCme1svAqEnbb7x4TZ4loPgkyKVqToqkLxEF
 X6EJ7lKn4Bgyw==
Received: from pastel (unknown [45.72.217.176])
 by mail01.iro.umontreal.ca (Postfix) with ESMTPSA id 565921202FB;
 Wed, 12 Apr 2023 11:20:18 -0400 (EDT)
From: Stefan Monnier <monnier@HIDDEN>
To: Ihor Radchenko <yantar92@HIDDEN>
Subject: Re: bug#58558: 29.0.50; re-search-forward is slow in some buffers
In-Reply-To: <8735559ncj.fsf@localhost> (Ihor Radchenko's message of "Wed, 12
 Apr 2023 14:39:08 +0000")
Message-ID: <jwvedopnofq.fsf-monnier+emacs@HIDDEN>
References: <877d10r21x.fsf@localhost> <87wn6vbfaa.fsf@localhost>
 <838rjbpecw.fsf@HIDDEN> <87fsdjwb4e.fsf@localhost>
 <jwv5yefb556.fsf-monnier+emacs@HIDDEN> <874jtyuqax.fsf@localhost>
 <83zgbqm8q6.fsf@HIDDEN> <87sfhit8ug.fsf@localhost>
 <83tu1ym6jo.fsf@HIDDEN> <87h6xyt77x.fsf@localhost>
 <87h6ttkz6n.fsf@localhost> <838rf5qkpt.fsf@HIDDEN>
 <87lej0zv92.fsf@localhost> <83ttxol6f5.fsf@HIDDEN>
 <87h6tolybs.fsf@localhost> <jwvjzyjhlf1.fsf-monnier+emacs@HIDDEN>
 <87zg7e8xnt.fsf@localhost> <83ttxmab7x.fsf@HIDDEN>
 <87sfd5b4oy.fsf@localhost> <jwvile1p5c0.fsf-monnier+emacs@HIDDEN>
 <8735559ncj.fsf@localhost>
Date: Wed, 12 Apr 2023 11:20:17 -0400
User-Agent: Gnus/5.13 (Gnus v5.13)
MIME-Version: 1.0
Content-Type: text/plain
X-SPAM-INFO: Spam detection results:  0
 ALL_TRUSTED                -1 Passed through trusted hosts only via SMTP
 AWL 0.039 Adjusted score from AWL reputation of From: address
 BAYES_00                 -1.9 Bayes spam probability is 0 to 1%
 DKIM_SIGNED               0.1 Message has a DKIM or DK signature,
 not necessarily valid
 DKIM_VALID -0.1 Message has at least one valid DKIM or DK signature
 DKIM_VALID_AU -0.1 Message has a valid DKIM or DK signature from author's
 domain
 DKIM_VALID_EF -0.1 Message has a valid DKIM or DK signature from envelope-from
 domain
X-SPAM-LEVEL: 
X-Spam-Score: -2.3 (--)
X-Debbugs-Envelope-To: 58558
Cc: 58558 <at> debbugs.gnu.org, Alan Mackenzie <acm@HIDDEN>,
 Eli Zaretskii <eliz@HIDDEN>, larsi@HIDDEN
X-BeenThere: debbugs-submit <at> debbugs.gnu.org
X-Mailman-Version: 2.1.18
Precedence: list
List-Id: <debbugs-submit.debbugs.gnu.org>
List-Unsubscribe: <https://debbugs.gnu.org/cgi-bin/mailman/options/debbugs-submit>, 
 <mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=unsubscribe>
List-Archive: <https://debbugs.gnu.org/cgi-bin/mailman/private/debbugs-submit/>
List-Post: <mailto:debbugs-submit <at> debbugs.gnu.org>
List-Help: <mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=help>
List-Subscribe: <https://debbugs.gnu.org/cgi-bin/mailman/listinfo/debbugs-submit>, 
 <mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=subscribe>
Errors-To: debbugs-submit-bounces <at> debbugs.gnu.org
Sender: "Debbugs-submit" <debbugs-submit-bounces <at> debbugs.gnu.org>
X-Spam-Score: -3.3 (---)

> I confirm that it does fix the problem. But why not `with-temp-buffer'?

I think it's for compatibility with TECO Emacs or something like that :-)

> Also, how come `setq' changes the global variable value despite it is
> let-bound?

Because the `let` and the `setq` were not performed in the same buffer,
so if the var is buffer-local ...

> To improve the performance, the two obvious ways are reducing the number
> of SYNTAX_TABLE_BYTE_TO_CHAR calls in re_match_2_internal and speeding
> up buf_bytepos_to_charpos.

I think the behavior you experience doesn't require "speeding up" but it
requires "fixing a performance bug".  Technically it's the same, but still..

> I'd prefer the latter as it is used ubiquitously across Emacs and
> making point lookup faster will thus benefit other places as well.

Why choose?

For the former, we could probably extend the `b_property` and
`e_property` fields of `gl_state` (which hold charpos) to also store
their bytepos equivalent, which should significantly reduce the number
of conversions between bytepos and charpos.


        Stefan







Information forwarded to bug-gnu-emacs@HIDDEN:
bug#58558; Package emacs. Full text available.

Message received at 58558 <at> debbugs.gnu.org:


Received: (at 58558) by debbugs.gnu.org; 12 Apr 2023 14:40:16 +0000
From debbugs-submit-bounces <at> debbugs.gnu.org Wed Apr 12 10:40:16 2023
Received: from localhost ([127.0.0.1]:40596 helo=debbugs.gnu.org)
	by debbugs.gnu.org with esmtp (Exim 4.84_2)
	(envelope-from <debbugs-submit-bounces <at> debbugs.gnu.org>)
	id 1pmbdw-00037G-CU
	for submit <at> debbugs.gnu.org; Wed, 12 Apr 2023 10:40:16 -0400
Received: from mout02.posteo.de ([185.67.36.66]:34673)
 by debbugs.gnu.org with esmtp (Exim 4.84_2)
 (envelope-from <yantar92@HIDDEN>) id 1pmbdu-000371-L4
 for 58558 <at> debbugs.gnu.org; Wed, 12 Apr 2023 10:40:15 -0400
Received: from submission (posteo.de [185.67.36.169]) 
 by mout02.posteo.de (Postfix) with ESMTPS id 20528240475
 for <58558 <at> debbugs.gnu.org>; Wed, 12 Apr 2023 16:40:09 +0200 (CEST)
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=posteo.net; s=2017;
 t=1681310409; bh=OvCKmZred1cbLkT834pSwl57KMy4kM65ShKVK40R+po=;
 h=From:To:Cc:Subject:Date:From;
 b=eJ90TE6fb3aI2XPP4PzeuZufVPJgYog/Db0UO3kcWdABHfWb+FJfZ8MbHmOZkDJMp
 SPShOq8sRt/eg1D/HG8Bl3nz7kYr+8SUSv0tRCgH5cPoD5F44K79F11pbwWi8pPEAZ
 vItwYG7WaC5tr67SVG0wIVe00fGvilTqaGQOq6QX9LRgRTHGKVZvSOVkiIid0qrxhu
 Z7L9l+BIIpj85IQHiQDXNVZB0Yyekd8CWvz4mZNOi2KuhyNagtqY+kbg/divbILZx1
 HZErkGJOlQNuzVvxL4U4bIVck3UDqfEPOmUbFlXMkObG1I1jyKMI4ueCyQ9r3ukURb
 g3/s9qiAY3cDQ==
Received: from customer (localhost [127.0.0.1])
 by submission (posteo.de) with ESMTPSA id 4PxQNS41ZWz9rxG;
 Wed, 12 Apr 2023 16:40:08 +0200 (CEST)
From: Ihor Radchenko <yantar92@HIDDEN>
To: Eli Zaretskii <eliz@HIDDEN>
Subject: Re: bug#58558: 29.0.50; re-search-forward is slow in some buffers
In-Reply-To: <83fs956ulv.fsf@HIDDEN>
References: <877d10r21x.fsf@localhost> <87wn6vbfaa.fsf@localhost>
 <838rjbpecw.fsf@HIDDEN> <87fsdjwb4e.fsf@localhost>
 <jwv5yefb556.fsf-monnier+emacs@HIDDEN> <874jtyuqax.fsf@localhost>
 <83zgbqm8q6.fsf@HIDDEN> <87sfhit8ug.fsf@localhost>
 <83tu1ym6jo.fsf@HIDDEN> <87h6xyt77x.fsf@localhost>
 <87h6ttkz6n.fsf@localhost> <838rf5qkpt.fsf@HIDDEN>
 <87lej0zv92.fsf@localhost> <83ttxol6f5.fsf@HIDDEN>
 <87h6tolybs.fsf@localhost> <jwvjzyjhlf1.fsf-monnier+emacs@HIDDEN>
 <87zg7e8xnt.fsf@localhost> <83ttxmab7x.fsf@HIDDEN>
 <87sfd5b4oy.fsf@localhost> <jwvile1p5c0.fsf-monnier+emacs@HIDDEN>
 <83fs956ulv.fsf@HIDDEN>
Date: Wed, 12 Apr 2023 14:42:39 +0000
Message-ID: <87y1mx88m8.fsf@localhost>
MIME-Version: 1.0
Content-Type: text/plain
X-Spam-Score: -2.3 (--)
X-Debbugs-Envelope-To: 58558
Cc: 58558 <at> debbugs.gnu.org, acm@HIDDEN, larsi@HIDDEN,
 Stefan Monnier <monnier@HIDDEN>
X-BeenThere: debbugs-submit <at> debbugs.gnu.org
X-Mailman-Version: 2.1.18
Precedence: list
List-Id: <debbugs-submit.debbugs.gnu.org>
List-Unsubscribe: <https://debbugs.gnu.org/cgi-bin/mailman/options/debbugs-submit>, 
 <mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=unsubscribe>
List-Archive: <https://debbugs.gnu.org/cgi-bin/mailman/private/debbugs-submit/>
List-Post: <mailto:debbugs-submit <at> debbugs.gnu.org>
List-Help: <mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=help>
List-Subscribe: <https://debbugs.gnu.org/cgi-bin/mailman/listinfo/debbugs-submit>, 
 <mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=subscribe>
Errors-To: debbugs-submit-bounces <at> debbugs.gnu.org
Sender: "Debbugs-submit" <debbugs-submit-bounces <at> debbugs.gnu.org>
X-Spam-Score: -3.3 (---)

Eli Zaretskii <eliz@HIDDEN> writes:

> Also, that code was there in Emacs 28 as well, so how come it suddenly
> has this effect now?

Random guess: cc-langs.el loads cc-defs via (cc-require 'cc-defs).
`cc-require' is doing something extremely tricky with byte compilation.
May Emacs 29 have some subtle changes in byte code that could have an influence?

-- 
Ihor Radchenko // yantar92,
Org mode contributor,
Learn more about Org mode at <https://orgmode.org/>.
Support Org development at <https://liberapay.com/org-mode>,
or support my work at <https://liberapay.com/yantar92>




Information forwarded to bug-gnu-emacs@HIDDEN:
bug#58558; Package emacs. Full text available.

Message received at 58558 <at> debbugs.gnu.org:


Received: (at 58558) by debbugs.gnu.org; 12 Apr 2023 14:39:16 +0000
From debbugs-submit-bounces <at> debbugs.gnu.org Wed Apr 12 10:39:16 2023
Received: from localhost ([127.0.0.1]:40590 helo=debbugs.gnu.org)
	by debbugs.gnu.org with esmtp (Exim 4.84_2)
	(envelope-from <debbugs-submit-bounces <at> debbugs.gnu.org>)
	id 1pmbcx-000355-Ur
	for submit <at> debbugs.gnu.org; Wed, 12 Apr 2023 10:39:16 -0400
Received: from mout.gmx.net ([212.227.17.22]:53505)
 by debbugs.gnu.org with esmtp (Exim 4.84_2)
 (envelope-from <stephen.berman@HIDDEN>) id 1pmbcv-00034p-BD
 for 58558 <at> debbugs.gnu.org; Wed, 12 Apr 2023 10:39:14 -0400
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=gmx.net; s=s31663417;
 t=1681310335; i=stephen.berman@HIDDEN;
 bh=WB6OB0aJq/Ppi787G5OXRJsmOBxhjb48mceyj+xCd5I=;
 h=X-UI-Sender-Class:From:To:Cc:Subject:In-Reply-To:References:Date;
 b=Q5f7WkQo8IMIjpQfcFrMQDTXYHoe6Ew9pVnetMU/l2eZsr9qy6GmMgilNJBrnDzzZ
 z4Mzn8NFRH4ekPdUOjDwlTkUP2qTVlRnqn7EtMIR6KsmTPTZhLod0dIR36dWPOacat
 TwMFXfH44wfYbBeFpxeS5ZZFi0Ws6IeVRKKaL4bQQNBEFxF0Ni8gimRWUxX1jNo+H2
 uH0G59+x6iwsWGsJTjn3YlokByb2Q63U7d/ktRnwue1RdmMcelv0HfkhxdkSgE/FPT
 5WggIomLswNAcWBARG2B7jxahhAXOmoh5qpioxgEvuhwIm+vpZs+WFmPzWHe3+wVp1
 LjOHagYogJWcQ==
X-UI-Sender-Class: 724b4f7f-cbec-4199-ad4e-598c01a50d3a
Received: from strobelfs ([89.246.36.206]) by mail.gmx.net (mrgmx104
 [212.227.17.168]) with ESMTPSA (Nemesis) id 1M5fIQ-1pjsaj1VVa-007EOt; Wed, 12
 Apr 2023 16:38:55 +0200
From: Stephen Berman <stephen.berman@HIDDEN>
To: Eli Zaretskii <eliz@HIDDEN>
Subject: Re: bug#58558: 29.0.50; re-search-forward is slow in some buffers
In-Reply-To: <83fs956ulv.fsf@HIDDEN> (Eli Zaretskii's message of "Wed, 12 Apr
 2023 17:30:36 +0300")
References: <877d10r21x.fsf@localhost> <87wn6vbfaa.fsf@localhost>
 <838rjbpecw.fsf@HIDDEN> <87fsdjwb4e.fsf@localhost>
 <jwv5yefb556.fsf-monnier+emacs@HIDDEN> <874jtyuqax.fsf@localhost>
 <83zgbqm8q6.fsf@HIDDEN> <87sfhit8ug.fsf@localhost>
 <83tu1ym6jo.fsf@HIDDEN> <87h6xyt77x.fsf@localhost>
 <87h6ttkz6n.fsf@localhost> <838rf5qkpt.fsf@HIDDEN>
 <87lej0zv92.fsf@localhost> <83ttxol6f5.fsf@HIDDEN>
 <87h6tolybs.fsf@localhost> <jwvjzyjhlf1.fsf-monnier+emacs@HIDDEN>
 <87zg7e8xnt.fsf@localhost> <83ttxmab7x.fsf@HIDDEN>
 <87sfd5b4oy.fsf@localhost> <jwvile1p5c0.fsf-monnier+emacs@HIDDEN>
 <83fs956ulv.fsf@HIDDEN>
Date: Wed, 12 Apr 2023 16:38:53 +0200
Message-ID: <87wn2h88si.fsf@HIDDEN>
User-Agent: Gnus/5.13 (Gnus v5.13)
MIME-Version: 1.0
Content-Type: text/plain; charset=utf-8
Content-Transfer-Encoding: quoted-printable
X-Provags-ID: V03:K1:BwpWb7QOTVI2GH2Op1qhZtXiSAHZo6CbJ3b40/QtNesEJwafZGd
 vCCmo62t/+GcatK7Fa0haibFelduJSiEgzOBeEtCSrboAJIKZlh+jPjmfjreVzuEyF9q85f
 e6oe5izdWzpopa2tnuVRx6U+bqVAUMgFLVrsheI4EIlcU3myi2O6dUwvKT54/dNtJBdxk6V
 wZPIyLyKNzszN3H7ls/oQ==
X-Spam-Flag: NO
UI-OutboundReport: notjunk:1;M01:P0:6VqzgZumC48=;W5zxjTJ60OSBFSXnm/4S0O6Prce
 bn79xKgl7W4+Cq4KL+NwpvajSC3yrk86i7jy97F93ApmeebuQJJ26+9mwoYpHXrM5v/2NpAxW
 BXObRyL/rtp041sV0GnL+aVQQzaSCVe6UhUZdbdPJBqMeexwmNgETZzXL2KQCz3HsJ3YiU6pn
 ueVlgEdE+SqvrQfUGUQWm4glRt5odrGYiEJjviswq9Y49LXxXdsSg7vFZpuh1B1LJHtj3BEa/
 LN6QKwhzxYlXHhWiJO1y/GXRe5QgJOpJ6qEXXqdl7OlNAVBBrxD5w4efSY+y28aEUISu7y1aC
 f8nDMjiDRsNAE2qF0ElKTmv60ZaXJbHBWrejzy7o2+P884I5fAkpq4UCtiuPyEtRBa/mZAPSJ
 eAIaHXMxkC3eKtc1MdXv1Oukx4cMD8wv5hb/FLqAaIDYwnJyMyl8YygCn4b4WZ2yVNl3ZeSYL
 vCJ5g5nwRNJ5E8HtpTgo9F4q/LrT25CYRmBqNgG10dUEVmzo7xqaEPrnSB/kxvDdjGoHzhQ6h
 zd54RAR9Cm10xQsIZ4hAUo3gr4c45yqwv8TYT2WK0zkcCRruATWxkjt51h/EqvLhsrkclpW+m
 qIFtbNxeXlg3dt2YfX6mhkUuAfx9V9PyrV0bvnHCmy8xMEFdwuAVs2oZM2gJWBwjNWZkL2F3X
 EWGAvjzGwWAgG4VZTxXrGe8krVnIU2LwrchVEMWUc7Xb34PMp8yJ1O3Vp6mh3pb8R2uzgGOcS
 +3C+PU5+dkfxyjlmV9H+jeiVHHSqqNZpd5vHy/il9YnHTwzX0agukF5KMGfvBU9fl9pzKDx55
 s7IhuPbkrMDJ8OlaS/iGjKrkJCelfdrTX32rF+Mw1JLTeLcU4KV8B86TtkiV4OG9SZUQKyhtK
 9Q7GRXU/Ibu+6yzeypT6hfhWxibHq3Xb84AYj0TEmhjRnv4RH59bHSqXu2QZu8wPt1HhPcWqa
 MDLFA/bmWU+oKnN2EYHNBJba/sc=
X-Spam-Score: -0.7 (/)
X-Debbugs-Envelope-To: 58558
Cc: 58558 <at> debbugs.gnu.org, acm@HIDDEN, yantar92@HIDDEN, larsi@HIDDEN,
 Stefan Monnier <monnier@HIDDEN>
X-BeenThere: debbugs-submit <at> debbugs.gnu.org
X-Mailman-Version: 2.1.18
Precedence: list
List-Id: <debbugs-submit.debbugs.gnu.org>
List-Unsubscribe: <https://debbugs.gnu.org/cgi-bin/mailman/options/debbugs-submit>, 
 <mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=unsubscribe>
List-Archive: <https://debbugs.gnu.org/cgi-bin/mailman/private/debbugs-submit/>
List-Post: <mailto:debbugs-submit <at> debbugs.gnu.org>
List-Help: <mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=help>
List-Subscribe: <https://debbugs.gnu.org/cgi-bin/mailman/listinfo/debbugs-submit>, 
 <mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=subscribe>
Errors-To: debbugs-submit-bounces <at> debbugs.gnu.org
Sender: "Debbugs-submit" <debbugs-submit-bounces <at> debbugs.gnu.org>
X-Spam-Score: -1.7 (-)

On Wed, 12 Apr 2023 17:30:36 +0300 Eli Zaretskii <eliz@HIDDEN> wrote:

>> From: Stefan Monnier <monnier@HIDDEN>
>> Cc:  Ihor Radchenko <yantar92@HIDDEN>, Eli Zaretskii <eliz@HIDDEN>,
>>   larsi@HIDDEN,  58558 <at> debbugs.gnu.org
>> Date: Wed, 12 Apr 2023 10:06:03 -0400
>>=20
>> > 1. emacs -Q
>> > 2. M-: (require 'cc-langs) <RET>
>> > 3. C-x b asd <RET>
>> > 4. M-: parse-sexp-lookup-properties <RET> =3D> t
>> >
>> > On Emacs 28, (4) yields nil.
>>=20
>> I suspect that the patch below might fix the immediate problem.
>> Of course, setting `parse-sexp-lookup-properties` should not have such
>> a major performance impact, so maybe we should keep digging into
>> the problem.
>
> Also, that code was there in Emacs 28 as well, so how come it suddenly
> has this effect now?

Note that, with emacs-28 -Q, `C-h v parse-sexp-lookup-properties' =3D=3D>

  parse-sexp-lookup-properties is a variable defined in =E2=80=98C source c=
ode=E2=80=99.
=20=20
  Its value is nil

while with emacs-29 -Q, `C-h v parse-sexp-lookup-properties' =3D=3D>

  parse-sexp-lookup-properties is a variable defined in =E2=80=98C source c=
ode=E2=80=99.
=20=20
  Its value is t
  Local in buffer *scratch*; global value is nil

Steve Berman




Information forwarded to bug-gnu-emacs@HIDDEN:
bug#58558; Package emacs. Full text available.

Message received at 58558 <at> debbugs.gnu.org:


Received: (at 58558) by debbugs.gnu.org; 12 Apr 2023 14:39:05 +0000
From debbugs-submit-bounces <at> debbugs.gnu.org Wed Apr 12 10:39:04 2023
Received: from localhost ([127.0.0.1]:40587 helo=debbugs.gnu.org)
	by debbugs.gnu.org with esmtp (Exim 4.84_2)
	(envelope-from <debbugs-submit-bounces <at> debbugs.gnu.org>)
	id 1pmbcm-00034f-JI
	for submit <at> debbugs.gnu.org; Wed, 12 Apr 2023 10:39:04 -0400
Received: from mailscanner.iro.umontreal.ca ([132.204.25.50]:13307)
 by debbugs.gnu.org with esmtp (Exim 4.84_2)
 (envelope-from <monnier@HIDDEN>) id 1pmbck-000344-BB
 for 58558 <at> debbugs.gnu.org; Wed, 12 Apr 2023 10:39:02 -0400
Received: from pmg1.iro.umontreal.ca (localhost.localdomain [127.0.0.1])
 by pmg1.iro.umontreal.ca (Proxmox) with ESMTP id 1C6C21000E7;
 Wed, 12 Apr 2023 10:38:57 -0400 (EDT)
Received: from mail01.iro.umontreal.ca (unknown [172.31.2.1])
 by pmg1.iro.umontreal.ca (Proxmox) with ESMTP id 7EF4310000D;
 Wed, 12 Apr 2023 10:38:51 -0400 (EDT)
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=iro.umontreal.ca;
 s=mail; t=1681310331;
 bh=32gGjn90l+1lq+CNv4v5QZxh1IWxUsZ4M+ODicyx/l0=;
 h=From:To:Cc:Subject:In-Reply-To:References:Date:From;
 b=JoU1xbtvntGqIBfkrSIZHfpXQPA4xeQL20jFR6vlivQsAscWc9121W8N6ybaCd7TQ
 bmi4lsNRO24Tfcy1OzmNJ/K62sGrpT7hgkALPTHhrF3quHQYgYQ60XlJ3yqMEBafSh
 OgSSVWcJnplXbULBR5ZWmfP9lLzWHFuvNDozDdJapfj0sHR/uxXcbCvsOG0/J72WW0
 xZe+WMqT7QGcWE6ZZ+YBzmMah0L+VZanCKS73BJfgTN8Prk1h65lf3no2whYvS5W2z
 ZT5c5kqOhPzaqKuFCz11B27GDA3yLmaiEdkc1gMU5Ib9s8X2oYVoMeq4oJdVuchKGg
 5hB+6lxKFCT3w==
Received: from pastel (unknown [45.72.217.176])
 by mail01.iro.umontreal.ca (Postfix) with ESMTPSA id 1B2411202F2;
 Wed, 12 Apr 2023 10:38:51 -0400 (EDT)
From: Stefan Monnier <monnier@HIDDEN>
To: Eli Zaretskii <eliz@HIDDEN>
Subject: Re: bug#58558: 29.0.50; re-search-forward is slow in some buffers
In-Reply-To: <83fs956ulv.fsf@HIDDEN> (Eli Zaretskii's message of "Wed, 12 Apr
 2023 17:30:36 +0300")
Message-ID: <jwvjzyhnp6j.fsf-monnier+emacs@HIDDEN>
References: <877d10r21x.fsf@localhost> <87wn6vbfaa.fsf@localhost>
 <838rjbpecw.fsf@HIDDEN> <87fsdjwb4e.fsf@localhost>
 <jwv5yefb556.fsf-monnier+emacs@HIDDEN> <874jtyuqax.fsf@localhost>
 <83zgbqm8q6.fsf@HIDDEN> <87sfhit8ug.fsf@localhost>
 <83tu1ym6jo.fsf@HIDDEN> <87h6xyt77x.fsf@localhost>
 <87h6ttkz6n.fsf@localhost> <838rf5qkpt.fsf@HIDDEN>
 <87lej0zv92.fsf@localhost> <83ttxol6f5.fsf@HIDDEN>
 <87h6tolybs.fsf@localhost> <jwvjzyjhlf1.fsf-monnier+emacs@HIDDEN>
 <87zg7e8xnt.fsf@localhost> <83ttxmab7x.fsf@HIDDEN>
 <87sfd5b4oy.fsf@localhost> <jwvile1p5c0.fsf-monnier+emacs@HIDDEN>
 <83fs956ulv.fsf@HIDDEN>
Date: Wed, 12 Apr 2023 10:38:50 -0400
User-Agent: Gnus/5.13 (Gnus v5.13)
MIME-Version: 1.0
Content-Type: text/plain
X-SPAM-INFO: Spam detection results:  0
 ALL_TRUSTED                -1 Passed through trusted hosts only via SMTP
 AWL -0.225 Adjusted score from AWL reputation of From: address
 BAYES_00                 -1.9 Bayes spam probability is 0 to 1%
 DKIM_SIGNED               0.1 Message has a DKIM or DK signature,
 not necessarily valid
 DKIM_VALID -0.1 Message has at least one valid DKIM or DK signature
 DKIM_VALID_AU -0.1 Message has a valid DKIM or DK signature from author's
 domain
 DKIM_VALID_EF -0.1 Message has a valid DKIM or DK signature from envelope-from
 domain
X-SPAM-LEVEL: 
X-Spam-Score: -2.3 (--)
X-Debbugs-Envelope-To: 58558
Cc: 58558 <at> debbugs.gnu.org, acm@HIDDEN, yantar92@HIDDEN, larsi@HIDDEN
X-BeenThere: debbugs-submit <at> debbugs.gnu.org
X-Mailman-Version: 2.1.18
Precedence: list
List-Id: <debbugs-submit.debbugs.gnu.org>
List-Unsubscribe: <https://debbugs.gnu.org/cgi-bin/mailman/options/debbugs-submit>, 
 <mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=unsubscribe>
List-Archive: <https://debbugs.gnu.org/cgi-bin/mailman/private/debbugs-submit/>
List-Post: <mailto:debbugs-submit <at> debbugs.gnu.org>
List-Help: <mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=help>
List-Subscribe: <https://debbugs.gnu.org/cgi-bin/mailman/listinfo/debbugs-submit>, 
 <mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=subscribe>
Errors-To: debbugs-submit-bounces <at> debbugs.gnu.org
Sender: "Debbugs-submit" <debbugs-submit-bounces <at> debbugs.gnu.org>
X-Spam-Score: -3.3 (---)

>> > 1. emacs -Q
>> > 2. M-: (require 'cc-langs) <RET>
>> > 3. C-x b asd <RET>
>> > 4. M-: parse-sexp-lookup-properties <RET> => t
>> >
>> > On Emacs 28, (4) yields nil.
>> 
>> I suspect that the patch below might fix the immediate problem.
>> Of course, setting `parse-sexp-lookup-properties` should not have such
>> a major performance impact, so maybe we should keep digging into
>> the problem.
>
> Also, that code was there in Emacs 28 as well, so how come it suddenly
> has this effect now?

The effect of the code depends on whether the buffer that's current when
`cc-defs.el` is loaded has set `parse-sexp-lookup-properties`
buffer-locally or not.

I don't have Emacs-28 at hand, but the value of
`parse-sexp-lookup-properties` in *scratch* is (buffer-local) t in
Emacs-29 and (global) nil in Emacs-27.


        Stefan





Information forwarded to bug-gnu-emacs@HIDDEN:
bug#58558; Package emacs. Full text available.

Message received at 58558 <at> debbugs.gnu.org:


Received: (at 58558) by debbugs.gnu.org; 12 Apr 2023 14:36:58 +0000
From debbugs-submit-bounces <at> debbugs.gnu.org Wed Apr 12 10:36:58 2023
Received: from localhost ([127.0.0.1]:40578 helo=debbugs.gnu.org)
	by debbugs.gnu.org with esmtp (Exim 4.84_2)
	(envelope-from <debbugs-submit-bounces <at> debbugs.gnu.org>)
	id 1pmbaj-00030a-KK
	for submit <at> debbugs.gnu.org; Wed, 12 Apr 2023 10:36:57 -0400
Received: from mout02.posteo.de ([185.67.36.66]:37721)
 by debbugs.gnu.org with esmtp (Exim 4.84_2)
 (envelope-from <yantar92@HIDDEN>) id 1pmbag-00030H-6E
 for 58558 <at> debbugs.gnu.org; Wed, 12 Apr 2023 10:36:56 -0400
Received: from submission (posteo.de [185.67.36.169]) 
 by mout02.posteo.de (Postfix) with ESMTPS id 2BF6F240468
 for <58558 <at> debbugs.gnu.org>; Wed, 12 Apr 2023 16:36:48 +0200 (CEST)
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=posteo.net; s=2017;
 t=1681310208; bh=0DfdMqhqzrpf4NirbE8Sriz8DFmphqXLsfq2cX4n7Nw=;
 h=From:To:Cc:Subject:Date:From;
 b=JnWd7bsis1Ii8+O0k9IUGBSm+vo0VHoGTGwd61PevzdSqisOsqL22K4dxEQTvoAF4
 xwQyQYVRBeetjJ9vGDiD4qeAzJObQoAyTtDQr+SV5Y5s7rFbM5YOcHxd/WxFB2Db8q
 t7PDWJJtTc72F8tZHVvUH9Rjw3E9inuqF3zwPoF3Fjb9V5KEDgL8e90NJBGaffeTvu
 cq6UnDQiTcSYrGgQ1Y/mI93KiP6YEI60dDF2zHQLrBM+RP51bqebs3I9lBXQifsJSx
 Cz6AEBOeZIUNfoQOMUaHvgRD0RWbS5BT/LMy4MgIsHRkx/epialcDcK7Fz7miwt+3H
 D25TwXDgfJcMg==
Received: from customer (localhost [127.0.0.1])
 by submission (posteo.de) with ESMTPSA id 4PxQJb220bz9rxL;
 Wed, 12 Apr 2023 16:36:47 +0200 (CEST)
From: Ihor Radchenko <yantar92@HIDDEN>
To: Stefan Monnier <monnier@HIDDEN>
Subject: Re: bug#58558: 29.0.50; re-search-forward is slow in some buffers
In-Reply-To: <jwvile1p5c0.fsf-monnier+emacs@HIDDEN>
References: <877d10r21x.fsf@localhost> <83h6xzphxm.fsf@HIDDEN>
 <87wn6vbfaa.fsf@localhost> <838rjbpecw.fsf@HIDDEN>
 <87fsdjwb4e.fsf@localhost> <jwv5yefb556.fsf-monnier+emacs@HIDDEN>
 <874jtyuqax.fsf@localhost> <83zgbqm8q6.fsf@HIDDEN>
 <87sfhit8ug.fsf@localhost> <83tu1ym6jo.fsf@HIDDEN>
 <87h6xyt77x.fsf@localhost> <87h6ttkz6n.fsf@localhost>
 <838rf5qkpt.fsf@HIDDEN> <87lej0zv92.fsf@localhost>
 <83ttxol6f5.fsf@HIDDEN> <87h6tolybs.fsf@localhost>
 <jwvjzyjhlf1.fsf-monnier+emacs@HIDDEN> <87zg7e8xnt.fsf@localhost>
 <83ttxmab7x.fsf@HIDDEN> <87sfd5b4oy.fsf@localhost>
 <jwvile1p5c0.fsf-monnier+emacs@HIDDEN>
Date: Wed, 12 Apr 2023 14:39:08 +0000
Message-ID: <8735559ncj.fsf@localhost>
MIME-Version: 1.0
Content-Type: text/plain
X-Spam-Score: -2.3 (--)
X-Debbugs-Envelope-To: 58558
Cc: 58558 <at> debbugs.gnu.org, Alan Mackenzie <acm@HIDDEN>,
 Eli Zaretskii <eliz@HIDDEN>, larsi@HIDDEN
X-BeenThere: debbugs-submit <at> debbugs.gnu.org
X-Mailman-Version: 2.1.18
Precedence: list
List-Id: <debbugs-submit.debbugs.gnu.org>
List-Unsubscribe: <https://debbugs.gnu.org/cgi-bin/mailman/options/debbugs-submit>, 
 <mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=unsubscribe>
List-Archive: <https://debbugs.gnu.org/cgi-bin/mailman/private/debbugs-submit/>
List-Post: <mailto:debbugs-submit <at> debbugs.gnu.org>
List-Help: <mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=help>
List-Subscribe: <https://debbugs.gnu.org/cgi-bin/mailman/listinfo/debbugs-submit>, 
 <mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=subscribe>
Errors-To: debbugs-submit-bounces <at> debbugs.gnu.org
Sender: "Debbugs-submit" <debbugs-submit-bounces <at> debbugs.gnu.org>
X-Spam-Score: -3.3 (---)

Stefan Monnier <monnier@HIDDEN> writes:

> I suspect that the patch below might fix the immediate problem.

I confirm that it does fix the problem. But why not `with-temp-buffer'?

Also, how come `setq' changes the global variable value despite it is
let-bound?

> Of course, setting `parse-sexp-lookup-properties` should not have such
> a major performance impact, so maybe we should keep digging into
> the problem.

Agree. I was considering `parse-sexp-lookup-properties' in Org, but this
issue will be a blocker.

To improve the performance, the two obvious ways are reducing the number
of SYNTAX_TABLE_BYTE_TO_CHAR calls in re_match_2_internal and speeding
up buf_bytepos_to_charpos. I'd prefer the latter as it is used
ubiquitously across Emacs and making point lookup faster will thus
benefit other places as well.

-- 
Ihor Radchenko // yantar92,
Org mode contributor,
Learn more about Org mode at <https://orgmode.org/>.
Support Org development at <https://liberapay.com/org-mode>,
or support my work at <https://liberapay.com/yantar92>




Information forwarded to bug-gnu-emacs@HIDDEN:
bug#58558; Package emacs. Full text available.

Message received at 58558 <at> debbugs.gnu.org:


Received: (at 58558) by debbugs.gnu.org; 12 Apr 2023 14:30:04 +0000
From debbugs-submit-bounces <at> debbugs.gnu.org Wed Apr 12 10:30:04 2023
Received: from localhost ([127.0.0.1]:40573 helo=debbugs.gnu.org)
	by debbugs.gnu.org with esmtp (Exim 4.84_2)
	(envelope-from <debbugs-submit-bounces <at> debbugs.gnu.org>)
	id 1pmbU3-0002ox-Jj
	for submit <at> debbugs.gnu.org; Wed, 12 Apr 2023 10:30:04 -0400
Received: from eggs.gnu.org ([209.51.188.92]:51462)
 by debbugs.gnu.org with esmtp (Exim 4.84_2)
 (envelope-from <eliz@HIDDEN>) id 1pmbU0-0002o0-1p
 for 58558 <at> debbugs.gnu.org; Wed, 12 Apr 2023 10:30:01 -0400
Received: from fencepost.gnu.org ([2001:470:142:3::e])
 by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256)
 (Exim 4.90_1) (envelope-from <eliz@HIDDEN>)
 id 1pmbTt-0000pG-3J; Wed, 12 Apr 2023 10:29:53 -0400
DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; d=gnu.org;
 s=fencepost-gnu-org; h=References:Subject:In-Reply-To:To:From:Date:
 mime-version; bh=yZwfpwlfGsHIqhcrGo2Nk7oR+VocKYIPN1DfYZJB58E=; b=AVKWnYGitTW8
 gSD5MiH+3IxrS6gSOyBHQEcjeoonmT6n5CDn9wHMl39i+k/jpS7jpmKQ5kj6z6RC1spQUfvpWG4Xy
 Eow2gVg6vxiuSrGsiprkbAs5eEjELuMamNoVs4hzSERRN+pQ8MskqgIVgvm0hjV5hGpYathWmNEOS
 f+/uogS5/bRxqKA4EdkjWFNgIcy7NiK7U6ShJNEFpu/88hwNE+npspURsRm5tWJZG6L6N6FC6EoEy
 L9wwRzlBjqnL48YOq0R8medIC0kiZ+mlAMKeHuh5aSrClGENvg0cLbBs2/XEFK3sR0c0DkA0z7GLS
 w0aBf67ZggTBhyy08NY4TA==;
Received: from [87.69.77.57] (helo=home-c4e4a596f7)
 by fencepost.gnu.org with esmtpsa (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256)
 (Exim 4.90_1) (envelope-from <eliz@HIDDEN>)
 id 1pmbTs-0002NQ-In; Wed, 12 Apr 2023 10:29:52 -0400
Date: Wed, 12 Apr 2023 17:30:36 +0300
Message-Id: <83fs956ulv.fsf@HIDDEN>
From: Eli Zaretskii <eliz@HIDDEN>
To: Stefan Monnier <monnier@HIDDEN>
In-Reply-To: <jwvile1p5c0.fsf-monnier+emacs@HIDDEN> (message from Stefan
 Monnier on Wed, 12 Apr 2023 10:06:03 -0400)
Subject: Re: bug#58558: 29.0.50; re-search-forward is slow in some buffers
References: <877d10r21x.fsf@localhost> <87tu1zd2c6.fsf@localhost>
 <83h6xzphxm.fsf@HIDDEN> <87wn6vbfaa.fsf@localhost>
 <838rjbpecw.fsf@HIDDEN> <87fsdjwb4e.fsf@localhost>
 <jwv5yefb556.fsf-monnier+emacs@HIDDEN> <874jtyuqax.fsf@localhost>
 <83zgbqm8q6.fsf@HIDDEN> <87sfhit8ug.fsf@localhost>
 <83tu1ym6jo.fsf@HIDDEN> <87h6xyt77x.fsf@localhost>
 <87h6ttkz6n.fsf@localhost> <838rf5qkpt.fsf@HIDDEN>
 <87lej0zv92.fsf@localhost> <83ttxol6f5.fsf@HIDDEN>
 <87h6tolybs.fsf@localhost> <jwvjzyjhlf1.fsf-monnier+emacs@HIDDEN>
 <87zg7e8xnt.fsf@localhost> <83ttxmab7x.fsf@HIDDEN>
 <87sfd5b4oy.fsf@localhost> <jwvile1p5c0.fsf-monnier+emacs@HIDDEN>
X-Spam-Score: -2.3 (--)
X-Debbugs-Envelope-To: 58558
Cc: 58558 <at> debbugs.gnu.org, acm@HIDDEN, yantar92@HIDDEN, larsi@HIDDEN
X-BeenThere: debbugs-submit <at> debbugs.gnu.org
X-Mailman-Version: 2.1.18
Precedence: list
List-Id: <debbugs-submit.debbugs.gnu.org>
List-Unsubscribe: <https://debbugs.gnu.org/cgi-bin/mailman/options/debbugs-submit>, 
 <mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=unsubscribe>
List-Archive: <https://debbugs.gnu.org/cgi-bin/mailman/private/debbugs-submit/>
List-Post: <mailto:debbugs-submit <at> debbugs.gnu.org>
List-Help: <mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=help>
List-Subscribe: <https://debbugs.gnu.org/cgi-bin/mailman/listinfo/debbugs-submit>, 
 <mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=subscribe>
Errors-To: debbugs-submit-bounces <at> debbugs.gnu.org
Sender: "Debbugs-submit" <debbugs-submit-bounces <at> debbugs.gnu.org>
X-Spam-Score: -3.3 (---)

> From: Stefan Monnier <monnier@HIDDEN>
> Cc:  Ihor Radchenko <yantar92@HIDDEN>, Eli Zaretskii <eliz@HIDDEN>,
>   larsi@HIDDEN,  58558 <at> debbugs.gnu.org
> Date: Wed, 12 Apr 2023 10:06:03 -0400
> 
> > 1. emacs -Q
> > 2. M-: (require 'cc-langs) <RET>
> > 3. C-x b asd <RET>
> > 4. M-: parse-sexp-lookup-properties <RET> => t
> >
> > On Emacs 28, (4) yields nil.
> 
> I suspect that the patch below might fix the immediate problem.
> Of course, setting `parse-sexp-lookup-properties` should not have such
> a major performance impact, so maybe we should keep digging into
> the problem.

Also, that code was there in Emacs 28 as well, so how come it suddenly
has this effect now?




Information forwarded to bug-gnu-emacs@HIDDEN:
bug#58558; Package emacs. Full text available.

Message received at 58558 <at> debbugs.gnu.org:


Received: (at 58558) by debbugs.gnu.org; 12 Apr 2023 14:06:15 +0000
From debbugs-submit-bounces <at> debbugs.gnu.org Wed Apr 12 10:06:15 2023
Received: from localhost ([127.0.0.1]:40534 helo=debbugs.gnu.org)
	by debbugs.gnu.org with esmtp (Exim 4.84_2)
	(envelope-from <debbugs-submit-bounces <at> debbugs.gnu.org>)
	id 1pmb71-0002Cd-Ad
	for submit <at> debbugs.gnu.org; Wed, 12 Apr 2023 10:06:15 -0400
Received: from mailscanner.iro.umontreal.ca ([132.204.25.50]:57150)
 by debbugs.gnu.org with esmtp (Exim 4.84_2)
 (envelope-from <monnier@HIDDEN>) id 1pmb6y-0002CO-2v
 for 58558 <at> debbugs.gnu.org; Wed, 12 Apr 2023 10:06:14 -0400
Received: from pmg1.iro.umontreal.ca (localhost.localdomain [127.0.0.1])
 by pmg1.iro.umontreal.ca (Proxmox) with ESMTP id 71C0310011B;
 Wed, 12 Apr 2023 10:06:06 -0400 (EDT)
Received: from mail01.iro.umontreal.ca (unknown [172.31.2.1])
 by pmg1.iro.umontreal.ca (Proxmox) with ESMTP id 6739A1000E7;
 Wed, 12 Apr 2023 10:06:04 -0400 (EDT)
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=iro.umontreal.ca;
 s=mail; t=1681308364;
 bh=8/D09NeGD/Q8U9anXDbzeJDRxxYMY6r9oI0d9ZBPR+k=;
 h=From:To:Cc:Subject:In-Reply-To:References:Date:From;
 b=lYen3mCvv7yVa1QbYadHgro8l3MagXhk4J3X7NaM/k+oQGj6j63nyuZiYpBQOYZBI
 uSyZok5GGMB1bVyNVWFkKn91JVSmg/lyWu25GcJYHGrpz0BXpmcgsY58U2qBi3rfvL
 cC4h1nJ4dn4RP9M9BlpjmlMjFgmHZiywUa3sVX2OpVZehmBEi1S6KuhhPPviWJ0OMr
 nHeFH9Puzzs831xzhlP6BVCynuLJtHfV7/TbkCWLvCYgIk/01cBgN5Ef1OlrtyC9gM
 Si+FQz8cJ71VTbimLwD4YRaVX8HSu6NwwPzhbFVHvyPNz6B3fOo0cRZ2kOdl0ah5OT
 zHA8if4aAFvSg==
Received: from pastel (unknown [45.72.217.176])
 by mail01.iro.umontreal.ca (Postfix) with ESMTPSA id E5A471202F2;
 Wed, 12 Apr 2023 10:06:03 -0400 (EDT)
From: Stefan Monnier <monnier@HIDDEN>
To: Alan Mackenzie <acm@HIDDEN>
Subject: Re: bug#58558: 29.0.50; re-search-forward is slow in some buffers
In-Reply-To: <87sfd5b4oy.fsf@localhost> (Ihor Radchenko's message of "Wed, 12
 Apr 2023 13:39:09 +0000")
Message-ID: <jwvile1p5c0.fsf-monnier+emacs@HIDDEN>
References: <877d10r21x.fsf@localhost> <87tu1zd2c6.fsf@localhost>
 <83h6xzphxm.fsf@HIDDEN> <87wn6vbfaa.fsf@localhost>
 <838rjbpecw.fsf@HIDDEN> <87fsdjwb4e.fsf@localhost>
 <jwv5yefb556.fsf-monnier+emacs@HIDDEN> <874jtyuqax.fsf@localhost>
 <83zgbqm8q6.fsf@HIDDEN> <87sfhit8ug.fsf@localhost>
 <83tu1ym6jo.fsf@HIDDEN> <87h6xyt77x.fsf@localhost>
 <87h6ttkz6n.fsf@localhost> <838rf5qkpt.fsf@HIDDEN>
 <87lej0zv92.fsf@localhost> <83ttxol6f5.fsf@HIDDEN>
 <87h6tolybs.fsf@localhost> <jwvjzyjhlf1.fsf-monnier+emacs@HIDDEN>
 <87zg7e8xnt.fsf@localhost> <83ttxmab7x.fsf@HIDDEN>
 <87sfd5b4oy.fsf@localhost>
Date: Wed, 12 Apr 2023 10:06:03 -0400
User-Agent: Gnus/5.13 (Gnus v5.13)
MIME-Version: 1.0
Content-Type: text/plain
X-SPAM-INFO: Spam detection results:  0
 ALL_TRUSTED                -1 Passed through trusted hosts only via SMTP
 AWL -0.227 Adjusted score from AWL reputation of From: address
 BAYES_00                 -1.9 Bayes spam probability is 0 to 1%
 DKIM_SIGNED               0.1 Message has a DKIM or DK signature,
 not necessarily valid
 DKIM_VALID -0.1 Message has at least one valid DKIM or DK signature
 DKIM_VALID_AU -0.1 Message has a valid DKIM or DK signature from author's
 domain
 DKIM_VALID_EF -0.1 Message has a valid DKIM or DK signature from envelope-from
 domain
X-SPAM-LEVEL: 
X-Spam-Score: -2.3 (--)
X-Debbugs-Envelope-To: 58558
Cc: 58558 <at> debbugs.gnu.org, larsi@HIDDEN, Ihor Radchenko <yantar92@HIDDEN>,
 Eli Zaretskii <eliz@HIDDEN>
X-BeenThere: debbugs-submit <at> debbugs.gnu.org
X-Mailman-Version: 2.1.18
Precedence: list
List-Id: <debbugs-submit.debbugs.gnu.org>
List-Unsubscribe: <https://debbugs.gnu.org/cgi-bin/mailman/options/debbugs-submit>, 
 <mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=unsubscribe>
List-Archive: <https://debbugs.gnu.org/cgi-bin/mailman/private/debbugs-submit/>
List-Post: <mailto:debbugs-submit <at> debbugs.gnu.org>
List-Help: <mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=help>
List-Subscribe: <https://debbugs.gnu.org/cgi-bin/mailman/listinfo/debbugs-submit>, 
 <mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=subscribe>
Errors-To: debbugs-submit-bounces <at> debbugs.gnu.org
Sender: "Debbugs-submit" <debbugs-submit-bounces <at> debbugs.gnu.org>
X-Spam-Score: -3.3 (---)

> 1. emacs -Q
> 2. M-: (require 'cc-langs) <RET>
> 3. C-x b asd <RET>
> 4. M-: parse-sexp-lookup-properties <RET> => t
>
> On Emacs 28, (4) yields nil.

I suspect that the patch below might fix the immediate problem.
Of course, setting `parse-sexp-lookup-properties` should not have such
a major performance impact, so maybe we should keep digging into
the problem.


        Stefan


diff --git a/lisp/progmodes/cc-defs.el b/lisp/progmodes/cc-defs.el
index aa6f33e9cab..92ab0c02de1 100644
--- a/lisp/progmodes/cc-defs.el
+++ b/lisp/progmodes/cc-defs.el
@@ -2153,20 +2153,13 @@ c-emacs-features
     ;; Record whether the `category' text property works.
     (if c-use-category (setq list (cons 'category-properties list)))
 
-    (let ((buf (generate-new-buffer " test"))
-	  parse-sexp-lookup-properties
-	  parse-sexp-ignore-comments
-	  lookup-syntax-properties)	; XEmacs
-      (with-current-buffer buf
+    (with-current-buffer (generate-new-buffer " test")
+      ;; Do the let-binding in the right buffer, in case they're buffer-local.
+      (let ((parse-sexp-lookup-properties t)
+	    (parse-sexp-ignore-comments t)
+	    (lookup-syntax-properties t))	; XEmacs
 	(set-syntax-table (make-syntax-table))
 
-	;; For some reason we have to set some of these after the
-	;; buffer has been made current.  (Specifically,
-	;; `parse-sexp-ignore-comments' in Emacs 21.)
-	(setq parse-sexp-lookup-properties t
-	      parse-sexp-ignore-comments t
-	      lookup-syntax-properties t)
-
 	;; Find out if the `syntax-table' text property works.
 	(modify-syntax-entry ?< ".")
 	(modify-syntax-entry ?> ".")
@@ -2231,8 +2224,8 @@ c-emacs-features
 	    (if (bobp)
 		(setq list (cons 'col-0-paren list)))))
 
-	(set-buffer-modified-p nil))
-      (kill-buffer buf))
+	(set-buffer-modified-p nil)
+	(kill-buffer (current-buffer))))
 
     ;; Check how many elements `parse-partial-sexp' returns.
     (let ((ppss-size (or (c-safe (length





Information forwarded to bug-gnu-emacs@HIDDEN:
bug#58558; Package emacs. Full text available.

Message received at 58558 <at> debbugs.gnu.org:


Received: (at 58558) by debbugs.gnu.org; 12 Apr 2023 13:36:53 +0000
From debbugs-submit-bounces <at> debbugs.gnu.org Wed Apr 12 09:36:52 2023
Received: from localhost ([127.0.0.1]:39379 helo=debbugs.gnu.org)
	by debbugs.gnu.org with esmtp (Exim 4.84_2)
	(envelope-from <debbugs-submit-bounces <at> debbugs.gnu.org>)
	id 1pmaea-0000tg-Ea
	for submit <at> debbugs.gnu.org; Wed, 12 Apr 2023 09:36:52 -0400
Received: from mout02.posteo.de ([185.67.36.66]:49949)
 by debbugs.gnu.org with esmtp (Exim 4.84_2)
 (envelope-from <yantar92@HIDDEN>) id 1pmaeY-0000tM-5z
 for 58558 <at> debbugs.gnu.org; Wed, 12 Apr 2023 09:36:51 -0400
Received: from submission (posteo.de [185.67.36.169]) 
 by mout02.posteo.de (Postfix) with ESMTPS id F066124041E
 for <58558 <at> debbugs.gnu.org>; Wed, 12 Apr 2023 15:36:43 +0200 (CEST)
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=posteo.net; s=2017;
 t=1681306604; bh=wTnmq5O6WIrK7fS/e0aTmrO4bgEEsjqHtYIai7Sh+Nk=;
 h=From:To:Cc:Subject:Date:From;
 b=LJYOQ7GQD6vTIpQdXf/C5dN5NuboFXxthJeWunOtX/jpMM+FmLHq0RuUXjpfuQ0M4
 2/qBlROeSuowig5pjW+Q2cdlqIIbAKZsnS8/z1XrjkYZQom2lHQoHwsplLkP84DLCt
 lzGxR1/5I5taeK7JkulcuBo/3mL1aWNTNoKJbqT5P7Drw4ZKTE1ktwWmCd5ngXiDce
 m/06cYuKbdG1bAPediixyhHSywQb+YhxxHvoBrvNHOFBQFdZeTH1U+dvP4AX7EOuxM
 FR7miY5Bm9zet5jqrviqXGesCuZdL29F/UK0J5xRZQqvoUsrEMNymGsK+Knezp5sjI
 kxxKwfvc4xnCA==
Received: from customer (localhost [127.0.0.1])
 by submission (posteo.de) with ESMTPSA id 4PxNzH29CQz9rxG;
 Wed, 12 Apr 2023 15:36:43 +0200 (CEST)
From: Ihor Radchenko <yantar92@HIDDEN>
To: Eli Zaretskii <eliz@HIDDEN>
Subject: Re: bug#58558: 29.0.50; re-search-forward is slow in some buffers
In-Reply-To: <83ttxmab7x.fsf@HIDDEN>
References: <877d10r21x.fsf@localhost> <87wn8x9eqb.fsf@HIDDEN>
 <87tu1zd2c6.fsf@localhost> <83h6xzphxm.fsf@HIDDEN>
 <87wn6vbfaa.fsf@localhost> <838rjbpecw.fsf@HIDDEN>
 <87fsdjwb4e.fsf@localhost> <jwv5yefb556.fsf-monnier+emacs@HIDDEN>
 <874jtyuqax.fsf@localhost> <83zgbqm8q6.fsf@HIDDEN>
 <87sfhit8ug.fsf@localhost> <83tu1ym6jo.fsf@HIDDEN>
 <87h6xyt77x.fsf@localhost> <87h6ttkz6n.fsf@localhost>
 <838rf5qkpt.fsf@HIDDEN> <87lej0zv92.fsf@localhost>
 <83ttxol6f5.fsf@HIDDEN> <87h6tolybs.fsf@localhost>
 <jwvjzyjhlf1.fsf-monnier+emacs@HIDDEN> <87zg7e8xnt.fsf@localhost>
 <83ttxmab7x.fsf@HIDDEN>
Date: Wed, 12 Apr 2023 13:39:09 +0000
Message-ID: <87sfd5b4oy.fsf@localhost>
MIME-Version: 1.0
Content-Type: text/plain
X-Spam-Score: -2.3 (--)
X-Debbugs-Envelope-To: 58558
Cc: 58558 <at> debbugs.gnu.org, larsi@HIDDEN, monnier@HIDDEN
X-BeenThere: debbugs-submit <at> debbugs.gnu.org
X-Mailman-Version: 2.1.18
Precedence: list
List-Id: <debbugs-submit.debbugs.gnu.org>
List-Unsubscribe: <https://debbugs.gnu.org/cgi-bin/mailman/options/debbugs-submit>, 
 <mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=unsubscribe>
List-Archive: <https://debbugs.gnu.org/cgi-bin/mailman/private/debbugs-submit/>
List-Post: <mailto:debbugs-submit <at> debbugs.gnu.org>
List-Help: <mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=help>
List-Subscribe: <https://debbugs.gnu.org/cgi-bin/mailman/listinfo/debbugs-submit>, 
 <mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=subscribe>
Errors-To: debbugs-submit-bounces <at> debbugs.gnu.org
Sender: "Debbugs-submit" <debbugs-submit-bounces <at> debbugs.gnu.org>
X-Spam-Score: -3.3 (---)

Eli Zaretskii <eliz@HIDDEN> writes:

>> Well. I just tried, but my Emacs-C foo is not good enough.
>> The attached patch fails to compile.
>
> That's because you've put DEFVAR_INT outside of any function.  They
> should be inside one of the syms_of_* functions instead.
> regex-emacs.c doesn't have such a function, but search.c does.  So
> just move those DEFVAR_INT lines to syms_of_search, and I think it
> will work.

Thanks!

I now managed to define these variables + also a counter inside
buf_bytepos_to_charpos.

The results are interesting.

The call count for each SYNTAX_TABLE_BYTE_TO_CHAR inside
re_match_2_internal (there are 6 places where it is called):
- master   :: 28 5011460 20 96  285  539911
- Emacs 28 :: 68 5015326 26 397 1404 558585

Master has less calls...

This was weird, so I also added a counter inside buf_bytepos_to_charpos:
- master   :: 6,304,522
- Emacs 28 ::   593,430

Now, it is clear that it is something in SYNTAX_TABLE_BYTE_TO_CHAR that
triggers buf_bytepos_to_charpos more on master compared to Emacs 28.

I looked into the code:

INLINE ptrdiff_t
SYNTAX_TABLE_BYTE_TO_CHAR (ptrdiff_t bytepos)
{
  return (! parse_sexp_lookup_properties
	  ? 0
  ...
}

parse_sexp_lookup_properties looks suspicious, so I checked the value of
parse-sexp-lookup-properties in Org files on master vs. Emacs 28.

On master, the value is t, even though Org mode does not set this
variable. On Emacs 28, the value is nil.

I looked further and narrowed things down to helpful package in my
config, where the culprit is (require 'cc-langs).

It looks like for some reason cc-langs changes the default value of
parse-sexp-lookup-properties globally!

Recipe:

1. emacs -Q
2. M-: (require 'cc-langs) <RET>
3. C-x b asd <RET>
4. M-: parse-sexp-lookup-properties <RET> => t

On Emacs 28, (4) yields nil.

-- 
Ihor Radchenko // yantar92,
Org mode contributor,
Learn more about Org mode at <https://orgmode.org/>.
Support Org development at <https://liberapay.com/org-mode>,
or support my work at <https://liberapay.com/yantar92>




Information forwarded to bug-gnu-emacs@HIDDEN:
bug#58558; Package emacs. Full text available.

Message received at 58558 <at> debbugs.gnu.org:


Received: (at 58558) by debbugs.gnu.org; 11 Apr 2023 11:50:41 +0000
From debbugs-submit-bounces <at> debbugs.gnu.org Tue Apr 11 07:50:41 2023
Received: from localhost ([127.0.0.1]:36805 helo=debbugs.gnu.org)
	by debbugs.gnu.org with esmtp (Exim 4.84_2)
	(envelope-from <debbugs-submit-bounces <at> debbugs.gnu.org>)
	id 1pmCWH-0002Hv-Af
	for submit <at> debbugs.gnu.org; Tue, 11 Apr 2023 07:50:41 -0400
Received: from eggs.gnu.org ([209.51.188.92]:38086)
 by debbugs.gnu.org with esmtp (Exim 4.84_2)
 (envelope-from <eliz@HIDDEN>) id 1pmCWG-0002HC-5X
 for 58558 <at> debbugs.gnu.org; Tue, 11 Apr 2023 07:50:40 -0400
Received: from fencepost.gnu.org ([2001:470:142:3::e])
 by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256)
 (Exim 4.90_1) (envelope-from <eliz@HIDDEN>)
 id 1pmCWA-0008Rt-Af; Tue, 11 Apr 2023 07:50:34 -0400
DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; d=gnu.org;
 s=fencepost-gnu-org; h=References:Subject:In-Reply-To:To:From:Date:
 mime-version; bh=pazg52AwBb0R5RfYkUsYM/76xsgLW9lk+6/w2gy21bo=; b=YKKIyqPoshjA
 2n7D0xdu28+gEaSxicMtOQOIhHN7Rk5QBJGYq5+Pu5mmwH71rOnPzenHkyJVkJ4YiekTwGz+bPrjl
 Gf1OFxB6EUoYoYLed0rtB/CNGOLVY9GYsbZnvTP22yDTsFhYaZwNh0f1jTxHZ02PArzYkejZltpmo
 kc5ectwFzOkWi/AsL37d9qxzP7wlKs1qi9NLIuSw7rU5eeIe94gtFXniQVP+L4Lryn4Lwb+58TIMZ
 pZXu8cX0iOuByYKDd+lhqq/3by1W3OVdEoTEE3yMdGSBFdpXYLdUsK1sVmS/uap6ZHbCQskHu2oTz
 k3P/83oMB/vnkkfd3JsX9w==;
Received: from [87.69.77.57] (helo=home-c4e4a596f7)
 by fencepost.gnu.org with esmtpsa (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256)
 (Exim 4.90_1) (envelope-from <eliz@HIDDEN>)
 id 1pmCW9-0006I7-G8; Tue, 11 Apr 2023 07:50:34 -0400
Date: Tue, 11 Apr 2023 14:51:14 +0300
Message-Id: <83ttxmab7x.fsf@HIDDEN>
From: Eli Zaretskii <eliz@HIDDEN>
To: Ihor Radchenko <yantar92@HIDDEN>
In-Reply-To: <87zg7e8xnt.fsf@localhost> (message from Ihor Radchenko on Tue,
 11 Apr 2023 11:29:26 +0000)
Subject: Re: bug#58558: 29.0.50; re-search-forward is slow in some buffers
References: <877d10r21x.fsf@localhost> <87mt9tbbbp.fsf@HIDDEN>
 <8335bl18lo.fsf@HIDDEN> <87wn8x9eqb.fsf@HIDDEN>
 <87tu1zd2c6.fsf@localhost> <83h6xzphxm.fsf@HIDDEN>
 <87wn6vbfaa.fsf@localhost> <838rjbpecw.fsf@HIDDEN>
 <87fsdjwb4e.fsf@localhost> <jwv5yefb556.fsf-monnier+emacs@HIDDEN>
 <874jtyuqax.fsf@localhost> <83zgbqm8q6.fsf@HIDDEN>
 <87sfhit8ug.fsf@localhost> <83tu1ym6jo.fsf@HIDDEN>
 <87h6xyt77x.fsf@localhost> <87h6ttkz6n.fsf@localhost>
 <838rf5qkpt.fsf@HIDDEN> <87lej0zv92.fsf@localhost>
 <83ttxol6f5.fsf@HIDDEN> <87h6tolybs.fsf@localhost>
 <jwvjzyjhlf1.fsf-monnier+emacs@HIDDEN> <87zg7e8xnt.fsf@localhost>
X-Spam-Score: -2.3 (--)
X-Debbugs-Envelope-To: 58558
Cc: 58558 <at> debbugs.gnu.org, larsi@HIDDEN, monnier@HIDDEN
X-BeenThere: debbugs-submit <at> debbugs.gnu.org
X-Mailman-Version: 2.1.18
Precedence: list
List-Id: <debbugs-submit.debbugs.gnu.org>
List-Unsubscribe: <https://debbugs.gnu.org/cgi-bin/mailman/options/debbugs-submit>, 
 <mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=unsubscribe>
List-Archive: <https://debbugs.gnu.org/cgi-bin/mailman/private/debbugs-submit/>
List-Post: <mailto:debbugs-submit <at> debbugs.gnu.org>
List-Help: <mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=help>
List-Subscribe: <https://debbugs.gnu.org/cgi-bin/mailman/listinfo/debbugs-submit>, 
 <mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=subscribe>
Errors-To: debbugs-submit-bounces <at> debbugs.gnu.org
Sender: "Debbugs-submit" <debbugs-submit-bounces <at> debbugs.gnu.org>
X-Spam-Score: -3.3 (---)

> From: Ihor Radchenko <yantar92@HIDDEN>
> Cc: Eli Zaretskii <eliz@HIDDEN>, larsi@HIDDEN, 58558 <at> debbugs.gnu.org
> Date: Tue, 11 Apr 2023 11:29:26 +0000
> 
> Well. I just tried, but my Emacs-C foo is not good enough.
> The attached patch fails to compile.

That's because you've put DEFVAR_INT outside of any function.  They
should be inside one of the syms_of_* functions instead.
regex-emacs.c doesn't have such a function, but search.c does.  So
just move those DEFVAR_INT lines to syms_of_search, and I think it
will work.




Information forwarded to bug-gnu-emacs@HIDDEN:
bug#58558; Package emacs. Full text available.

Message received at 58558 <at> debbugs.gnu.org:


Received: (at 58558) by debbugs.gnu.org; 11 Apr 2023 11:27:10 +0000
From debbugs-submit-bounces <at> debbugs.gnu.org Tue Apr 11 07:27:10 2023
Received: from localhost ([127.0.0.1]:36762 helo=debbugs.gnu.org)
	by debbugs.gnu.org with esmtp (Exim 4.84_2)
	(envelope-from <debbugs-submit-bounces <at> debbugs.gnu.org>)
	id 1pmC9W-0007cr-3M
	for submit <at> debbugs.gnu.org; Tue, 11 Apr 2023 07:27:10 -0400
Received: from mout01.posteo.de ([185.67.36.65]:57621)
 by debbugs.gnu.org with esmtp (Exim 4.84_2)
 (envelope-from <yantar92@HIDDEN>) id 1pmC9R-0007cJ-7W
 for 58558 <at> debbugs.gnu.org; Tue, 11 Apr 2023 07:27:08 -0400
Received: from submission (posteo.de [185.67.36.169]) 
 by mout01.posteo.de (Postfix) with ESMTPS id 0D80D240377
 for <58558 <at> debbugs.gnu.org>; Tue, 11 Apr 2023 13:26:59 +0200 (CEST)
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=posteo.net; s=2017;
 t=1681212419; bh=pPaN7Y5SwwnOH8BN81eWuKamaplwyfKA1thWuuJeh5I=;
 h=From:To:Cc:Subject:Date:From;
 b=EP9DeAQJx1gqg1KjlLHOrnnlWxuJ1AGB5JGTQcXaeMH3DbcvGR8m3UxITOXmEfvtm
 ZBR7PeIQXHcGeyE0ELKs6x+m0mJisXC8NqQ3E10nrQJissseLLrOxCXVTTuGZkISHy
 TGhxZiMwgE1AmxDHVpOsGBiNjDibIUFSXc+umMWS439vRD2T7DV6OldmRvjQ7W9Xgp
 CAewgh8tMnF0MZRutzmVmFHGYRXueeVU/vtsEyBRaxXwPv6B3QoKj5KJIjuQ//UIUi
 Uhs25uI058EVWPvEyOyOxzGISnlKELvGWWH1rhVqRHHNfo/kpF49gIH3q64pm8Thlr
 tMU5ORTwHQkKA==
Received: from customer (localhost [127.0.0.1])
 by submission (posteo.de) with ESMTPSA id 4Pwk822BPcz6tmv;
 Tue, 11 Apr 2023 13:26:57 +0200 (CEST)
From: Ihor Radchenko <yantar92@HIDDEN>
To: Stefan Monnier <monnier@HIDDEN>
Subject: Re: bug#58558: 29.0.50; re-search-forward is slow in some buffers
In-Reply-To: <jwvjzyjhlf1.fsf-monnier+emacs@HIDDEN>
References: <877d10r21x.fsf@localhost> <87mt9tbbbp.fsf@HIDDEN>
 <8335bl18lo.fsf@HIDDEN> <87wn8x9eqb.fsf@HIDDEN>
 <87tu1zd2c6.fsf@localhost> <83h6xzphxm.fsf@HIDDEN>
 <87wn6vbfaa.fsf@localhost> <838rjbpecw.fsf@HIDDEN>
 <87fsdjwb4e.fsf@localhost> <jwv5yefb556.fsf-monnier+emacs@HIDDEN>
 <874jtyuqax.fsf@localhost> <83zgbqm8q6.fsf@HIDDEN>
 <87sfhit8ug.fsf@localhost> <83tu1ym6jo.fsf@HIDDEN>
 <87h6xyt77x.fsf@localhost> <87h6ttkz6n.fsf@localhost>
 <838rf5qkpt.fsf@HIDDEN> <87lej0zv92.fsf@localhost>
 <83ttxol6f5.fsf@HIDDEN> <87h6tolybs.fsf@localhost>
 <jwvjzyjhlf1.fsf-monnier+emacs@HIDDEN>
Date: Tue, 11 Apr 2023 11:29:26 +0000
Message-ID: <87zg7e8xnt.fsf@localhost>
MIME-Version: 1.0
Content-Type: multipart/mixed; boundary="=-=-="
X-Spam-Score: -2.3 (--)
X-Debbugs-Envelope-To: 58558
Cc: 58558 <at> debbugs.gnu.org, Eli Zaretskii <eliz@HIDDEN>, larsi@HIDDEN
X-BeenThere: debbugs-submit <at> debbugs.gnu.org
X-Mailman-Version: 2.1.18
Precedence: list
List-Id: <debbugs-submit.debbugs.gnu.org>
List-Unsubscribe: <https://debbugs.gnu.org/cgi-bin/mailman/options/debbugs-submit>, 
 <mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=unsubscribe>
List-Archive: <https://debbugs.gnu.org/cgi-bin/mailman/private/debbugs-submit/>
List-Post: <mailto:debbugs-submit <at> debbugs.gnu.org>
List-Help: <mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=help>
List-Subscribe: <https://debbugs.gnu.org/cgi-bin/mailman/listinfo/debbugs-submit>, 
 <mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=subscribe>
Errors-To: debbugs-submit-bounces <at> debbugs.gnu.org
Sender: "Debbugs-submit" <debbugs-submit-bounces <at> debbugs.gnu.org>
X-Spam-Score: -3.3 (---)

--=-=-=
Content-Type: text/plain

Stefan Monnier <monnier@HIDDEN> writes:

> BTW, when debugging such performance problem, I often resort to
> a few `DEFVAR_INT` defining ad-hoc counter variables, then sprinkle
> corresponding increments of those variables from various places
> (typically function entry point, loops, ...).

Well. I just tried, but my Emacs-C foo is not good enough.
The attached patch fails to compile.


--=-=-=
Content-Type: text/x-patch
Content-Disposition: inline; filename=0001-add-debug-vars.patch

From ac15ad3262ddf0a0bf459dc603cb79f7f9c737f7 Mon Sep 17 00:00:00 2001
Message-Id: <ac15ad3262ddf0a0bf459dc603cb79f7f9c737f7.1681212491.git.yantar92@HIDDEN>
From: Ihor Radchenko <yantar92@HIDDEN>
Date: Tue, 11 Apr 2023 13:27:56 +0200
Subject: [PATCH] add debug vars

---
 src/regex-emacs.c | 25 +++++++++++++++++++++++++
 1 file changed, 25 insertions(+)

diff --git a/src/regex-emacs.c b/src/regex-emacs.c
index 2571812cb39..6bcc64d5c0a 100644
--- a/src/regex-emacs.c
+++ b/src/regex-emacs.c
@@ -3889,6 +3889,25 @@ unwind_re_match (void *ptr)
   b->text->inhibit_shrinking = 0;
 }
 
+DEFVAR_INT("re-match-2-internal-bytepos-calls-1", re_match_2_internal_bytepos_calls_1,
+	   doc: /* Call count 1.  Internal use only. */);
+DEFVAR_INT("re-match-2-internal-bytepos-calls-2", re_match_2_internal_bytepos_calls_2,
+	   doc: /* Call count 1.  Internal use only. */);
+DEFVAR_INT("re-match-2-internal-bytepos-calls-3", re_match_2_internal_bytepos_calls_3,
+	   doc: /* Call count 1.  Internal use only. */);
+DEFVAR_INT("re-match-2-internal-bytepos-calls-4", re_match_2_internal_bytepos_calls_4,
+	   doc: /* Call count 1.  Internal use only. */);
+DEFVAR_INT("re-match-2-internal-bytepos-calls-5", re_match_2_internal_bytepos_calls_5,
+	   doc: /* Call count 1.  Internal use only. */);
+DEFVAR_INT("re-match-2-internal-bytepos-calls-6", re_match_2_internal_bytepos_calls_6,
+	   doc: /* Call count 1.  Internal use only. */);
+re_match_2_internal_bytepos_calls_1 = 0;
+re_match_2_internal_bytepos_calls_2 = 0;
+re_match_2_internal_bytepos_calls_3 = 0;
+re_match_2_internal_bytepos_calls_4 = 0;
+re_match_2_internal_bytepos_calls_5 = 0;
+re_match_2_internal_bytepos_calls_6 = 0;
+
 /* This is a separate function so that we can force an alloca cleanup
    afterwards.  */
 static ptrdiff_t
@@ -4808,6 +4827,7 @@ re_match_2_internal (struct re_pattern_buffer *bufp,
 		int dummy;
                 ptrdiff_t offset = PTR_TO_OFFSET (d);
                 ptrdiff_t charpos = SYNTAX_TABLE_BYTE_TO_CHAR (offset) - 1;
+		re_match_2_internal_bytepos_calls_1++;
 		UPDATE_SYNTAX_TABLE (charpos);
 		GET_CHAR_BEFORE_2 (c1, d, string1, end1, string2, end2);
 		nchars++;
@@ -4848,6 +4868,7 @@ re_match_2_internal (struct re_pattern_buffer *bufp,
 	      int dummy;
 	      ptrdiff_t offset = PTR_TO_OFFSET (d);
 	      ptrdiff_t charpos = SYNTAX_TABLE_BYTE_TO_CHAR (offset);
+	      re_match_2_internal_bytepos_calls_2++;
 	      UPDATE_SYNTAX_TABLE (charpos);
 	      PREFETCH ();
 	      GET_CHAR_AFTER (c2, d, dummy);
@@ -4891,6 +4912,7 @@ re_match_2_internal (struct re_pattern_buffer *bufp,
 	      int dummy;
               ptrdiff_t offset = PTR_TO_OFFSET (d);
               ptrdiff_t charpos = SYNTAX_TABLE_BYTE_TO_CHAR (offset) - 1;
+	      re_match_2_internal_bytepos_calls_3++;
 	      UPDATE_SYNTAX_TABLE (charpos);
 	      GET_CHAR_BEFORE_2 (c1, d, string1, end1, string2, end2);
 	      nchars++;
@@ -4933,6 +4955,7 @@ re_match_2_internal (struct re_pattern_buffer *bufp,
 	      int s1, s2;
 	      ptrdiff_t offset = PTR_TO_OFFSET (d);
 	      ptrdiff_t charpos = SYNTAX_TABLE_BYTE_TO_CHAR (offset);
+	      re_match_2_internal_bytepos_calls_4++;
 	      UPDATE_SYNTAX_TABLE (charpos);
 	      PREFETCH ();
 	      c2 = RE_STRING_CHAR (d, target_multibyte);
@@ -4974,6 +4997,7 @@ re_match_2_internal (struct re_pattern_buffer *bufp,
 	      int s1, s2;
               ptrdiff_t offset = PTR_TO_OFFSET (d);
               ptrdiff_t charpos = SYNTAX_TABLE_BYTE_TO_CHAR (offset) - 1;
+	      re_match_2_internal_bytepos_calls_5++;
 	      UPDATE_SYNTAX_TABLE (charpos);
 	      GET_CHAR_BEFORE_2 (c1, d, string1, end1, string2, end2);
 	      nchars++;
@@ -5010,6 +5034,7 @@ re_match_2_internal (struct re_pattern_buffer *bufp,
 	    {
 	      ptrdiff_t offset = PTR_TO_OFFSET (d);
 	      ptrdiff_t pos1 = SYNTAX_TABLE_BYTE_TO_CHAR (offset);
+	      re_match_2_internal_bytepos_calls_6++;
 	      UPDATE_SYNTAX_TABLE (pos1);
 	    }
 	    {
-- 
2.40.0


--=-=-=
Content-Type: text/plain


-- 
Ihor Radchenko // yantar92,
Org mode contributor,
Learn more about Org mode at <https://orgmode.org/>.
Support Org development at <https://liberapay.com/org-mode>,
or support my work at <https://liberapay.com/yantar92>

--=-=-=--




Information forwarded to bug-gnu-emacs@HIDDEN:
bug#58558; Package emacs. Full text available.

Message received at 58558 <at> debbugs.gnu.org:


Received: (at 58558) by debbugs.gnu.org; 10 Apr 2023 16:04:04 +0000
From debbugs-submit-bounces <at> debbugs.gnu.org Mon Apr 10 12:04:04 2023
Received: from localhost ([127.0.0.1]:35788 helo=debbugs.gnu.org)
	by debbugs.gnu.org with esmtp (Exim 4.84_2)
	(envelope-from <debbugs-submit-bounces <at> debbugs.gnu.org>)
	id 1pltzw-0000U1-Gt
	for submit <at> debbugs.gnu.org; Mon, 10 Apr 2023 12:04:04 -0400
Received: from eggs.gnu.org ([209.51.188.92]:43612)
 by debbugs.gnu.org with esmtp (Exim 4.84_2)
 (envelope-from <eliz@HIDDEN>) id 1pltzu-0000TU-6Y
 for 58558 <at> debbugs.gnu.org; Mon, 10 Apr 2023 12:04:02 -0400
Received: from fencepost.gnu.org ([2001:470:142:3::e])
 by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256)
 (Exim 4.90_1) (envelope-from <eliz@HIDDEN>)
 id 1pltzn-0006gL-QW; Mon, 10 Apr 2023 12:03:55 -0400
DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; d=gnu.org;
 s=fencepost-gnu-org; h=References:Subject:In-Reply-To:To:From:Date:
 mime-version; bh=JF++mpxHw6KBaUyjLcafDxsc8nkzoDGs6vNJPkrQi4Y=; b=EAN7dNiyrPDK
 kDy5lLKtNiSZ1CdaMBy6XkWTeDi/kCei+QSHYPCpQ8wTpBIqvE5eoujdxEPhJoG+4S8+3IsxEQ1Nh
 oOUoJKhfd1vD48Dh/PyOR+oyTfNLeZL2z78RcRA1f+Bv/ftlWPKvYlZW9uaovewzf3Bv30z7IywjQ
 px+BHzIyzdKS8Ts1ggLZyRTeq29vLZQq90DxaeSw591WnQk7eRuAYKY+JfU7QkoAlS8a5GLDB6ny5
 2lAYuMKLI94+Xql0XjVn6zaOSe0KSXrXv4VUW87uWqoiBYsGUmkbjYJCxQr34QmMTnq4Zr1Kdk38H
 lWYqXZCkbxdfVyatDtpOsw==;
Received: from [87.69.77.57] (helo=home-c4e4a596f7)
 by fencepost.gnu.org with esmtpsa (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256)
 (Exim 4.90_1) (envelope-from <eliz@HIDDEN>)
 id 1pltzn-000292-4s; Mon, 10 Apr 2023 12:03:55 -0400
Date: Mon, 10 Apr 2023 19:04:35 +0300
Message-Id: <83leizbu5o.fsf@HIDDEN>
From: Eli Zaretskii <eliz@HIDDEN>
To: Ihor Radchenko <yantar92@HIDDEN>
In-Reply-To: <87bkjvn5wy.fsf@localhost> (message from Ihor Radchenko on Mon,
 10 Apr 2023 14:55:09 +0000)
Subject: Re: bug#58558: 29.0.50; re-search-forward is slow in some buffers
References: <877d10r21x.fsf@localhost> <87mt9tbbbp.fsf@HIDDEN>
 <8335bl18lo.fsf@HIDDEN> <87wn8x9eqb.fsf@HIDDEN>
 <87tu1zd2c6.fsf@localhost> <83h6xzphxm.fsf@HIDDEN>
 <87wn6vbfaa.fsf@localhost> <838rjbpecw.fsf@HIDDEN>
 <87fsdjwb4e.fsf@localhost> <jwv5yefb556.fsf-monnier+emacs@HIDDEN>
 <874jtyuqax.fsf@localhost> <83zgbqm8q6.fsf@HIDDEN>
 <87sfhit8ug.fsf@localhost> <83tu1ym6jo.fsf@HIDDEN>
 <87h6xyt77x.fsf@localhost> <87h6ttkz6n.fsf@localhost>
 <838rf5qkpt.fsf@HIDDEN> <87lej0zv92.fsf@localhost>
 <83ttxol6f5.fsf@HIDDEN> <87h6tolybs.fsf@localhost>
 <83mt3fc0t8.fsf@HIDDEN> <87bkjvn5wy.fsf@localhost>
X-Spam-Score: -2.3 (--)
X-Debbugs-Envelope-To: 58558
Cc: 58558 <at> debbugs.gnu.org, larsi@HIDDEN, monnier@HIDDEN
X-BeenThere: debbugs-submit <at> debbugs.gnu.org
X-Mailman-Version: 2.1.18
Precedence: list
List-Id: <debbugs-submit.debbugs.gnu.org>
List-Unsubscribe: <https://debbugs.gnu.org/cgi-bin/mailman/options/debbugs-submit>, 
 <mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=unsubscribe>
List-Archive: <https://debbugs.gnu.org/cgi-bin/mailman/private/debbugs-submit/>
List-Post: <mailto:debbugs-submit <at> debbugs.gnu.org>
List-Help: <mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=help>
List-Subscribe: <https://debbugs.gnu.org/cgi-bin/mailman/listinfo/debbugs-submit>, 
 <mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=subscribe>
Errors-To: debbugs-submit-bounces <at> debbugs.gnu.org
Sender: "Debbugs-submit" <debbugs-submit-bounces <at> debbugs.gnu.org>
X-Spam-Score: -3.3 (---)

> From: Ihor Radchenko <yantar92@HIDDEN>
> Cc: monnier@HIDDEN, larsi@HIDDEN, 58558 <at> debbugs.gnu.org
> Date: Mon, 10 Apr 2023 14:55:09 +0000
> 
> > I believe perf is capable of showing the number of calls as well?  Can
> > you compare the number of calls between the two versions?
> 
> I can only see
> https://www.brendangregg.com/blog/2014-07-03/perf-counting.html, but it
> appears to be only for built-in events. Do you know how to count calls
> to specific function using perf? I am not familiar at all with perf.

I thought that was part of the profile?

But if not, then maybe Stefan's "poor-man's counters" will be an
easier device for answering that particular question: just increment
it before every call to SYNTAX_TABLE_BYTE_TO_CHAR that you find inside
re_match_2_internal, and then compare the counts with Emacs 28.




Information forwarded to bug-gnu-emacs@HIDDEN:
bug#58558; Package emacs. Full text available.

Message received at 58558 <at> debbugs.gnu.org:


Received: (at 58558) by debbugs.gnu.org; 10 Apr 2023 14:53:02 +0000
From debbugs-submit-bounces <at> debbugs.gnu.org Mon Apr 10 10:53:01 2023
Received: from localhost ([127.0.0.1]:35647 helo=debbugs.gnu.org)
	by debbugs.gnu.org with esmtp (Exim 4.84_2)
	(envelope-from <debbugs-submit-bounces <at> debbugs.gnu.org>)
	id 1plstB-0006fU-IF
	for submit <at> debbugs.gnu.org; Mon, 10 Apr 2023 10:53:01 -0400
Received: from mout02.posteo.de ([185.67.36.66]:43455)
 by debbugs.gnu.org with esmtp (Exim 4.84_2)
 (envelope-from <yantar92@HIDDEN>) id 1plst9-0006fF-KF
 for 58558 <at> debbugs.gnu.org; Mon, 10 Apr 2023 10:53:00 -0400
Received: from submission (posteo.de [185.67.36.169]) 
 by mout02.posteo.de (Postfix) with ESMTPS id ADAF4240228
 for <58558 <at> debbugs.gnu.org>; Mon, 10 Apr 2023 16:52:53 +0200 (CEST)
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=posteo.net; s=2017;
 t=1681138373; bh=XY3EeROp3vIMBgNGYTmcFyXbS3EmM9kh9Zo1krvbfek=;
 h=From:To:Cc:Subject:Date:From;
 b=DhQS9EigXWozW6g3E6b+VITMFUCqZJkBawciS+2kdB35N9EmH0CwtfDiUqVhx5rt5
 31qr5nXPhrg/GEdmcY6x6jE0Llf2gABLEvfYhye96/KJxe7iiLaI/gxJiAfd9XgFK7
 VYgnF5laeSgMZhj5TbuLB+yZtQ/gvGtZUIbg1jl7y9oGPJmfZq7EEL10cKlanV7yrE
 IzsS1kuXcMDchypPztZPLot7nd26vI/szwamGJVtgHyfg94wNIYUf2OsWLoDbISkx/
 ip0xzbVqHPpvFBh/9ohgIM2IxgKsmAEtdFgTNynet85+C+NvwdBixS7t0TppLr8bya
 CYO+bNvMOxwNg==
Received: from customer (localhost [127.0.0.1])
 by submission (posteo.de) with ESMTPSA id 4PwBm45dJJz6tw7;
 Mon, 10 Apr 2023 16:52:52 +0200 (CEST)
From: Ihor Radchenko <yantar92@HIDDEN>
To: Eli Zaretskii <eliz@HIDDEN>
Subject: Re: bug#58558: 29.0.50; re-search-forward is slow in some buffers
In-Reply-To: <83mt3fc0t8.fsf@HIDDEN>
References: <877d10r21x.fsf@localhost> <87mt9tbbbp.fsf@HIDDEN>
 <8335bl18lo.fsf@HIDDEN> <87wn8x9eqb.fsf@HIDDEN>
 <87tu1zd2c6.fsf@localhost> <83h6xzphxm.fsf@HIDDEN>
 <87wn6vbfaa.fsf@localhost> <838rjbpecw.fsf@HIDDEN>
 <87fsdjwb4e.fsf@localhost> <jwv5yefb556.fsf-monnier+emacs@HIDDEN>
 <874jtyuqax.fsf@localhost> <83zgbqm8q6.fsf@HIDDEN>
 <87sfhit8ug.fsf@localhost> <83tu1ym6jo.fsf@HIDDEN>
 <87h6xyt77x.fsf@localhost> <87h6ttkz6n.fsf@localhost>
 <838rf5qkpt.fsf@HIDDEN> <87lej0zv92.fsf@localhost>
 <83ttxol6f5.fsf@HIDDEN> <87h6tolybs.fsf@localhost>
 <83mt3fc0t8.fsf@HIDDEN>
Date: Mon, 10 Apr 2023 14:55:09 +0000
Message-ID: <87bkjvn5wy.fsf@localhost>
MIME-Version: 1.0
Content-Type: text/plain
X-Spam-Score: -2.3 (--)
X-Debbugs-Envelope-To: 58558
Cc: 58558 <at> debbugs.gnu.org, larsi@HIDDEN, monnier@HIDDEN
X-BeenThere: debbugs-submit <at> debbugs.gnu.org
X-Mailman-Version: 2.1.18
Precedence: list
List-Id: <debbugs-submit.debbugs.gnu.org>
List-Unsubscribe: <https://debbugs.gnu.org/cgi-bin/mailman/options/debbugs-submit>, 
 <mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=unsubscribe>
List-Archive: <https://debbugs.gnu.org/cgi-bin/mailman/private/debbugs-submit/>
List-Post: <mailto:debbugs-submit <at> debbugs.gnu.org>
List-Help: <mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=help>
List-Subscribe: <https://debbugs.gnu.org/cgi-bin/mailman/listinfo/debbugs-submit>, 
 <mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=subscribe>
Errors-To: debbugs-submit-bounces <at> debbugs.gnu.org
Sender: "Debbugs-submit" <debbugs-submit-bounces <at> debbugs.gnu.org>
X-Spam-Score: -3.3 (---)

Eli Zaretskii <eliz@HIDDEN> writes:

>> > How does this compare with a "fast" session doing the same?
>> 
>> "fast" (emacs 28) session does not have this call tree contributing
>> significantly.
>
> Hmm... I though when you just start a new Emacs session of Emacs 30 it
> also is fast, and becomes progressively slower with time?  Or am I
> confused?

My original bug report is about agenda generation being slow because of
re-search-forward slowdown. Later, I tried to simplify the recipe and
found that direct calls to re-search-forward become slower over time
(but still with my setup).

Originally, agenda generation is slower on master compared to Emacs 28
even right after startup.

In my last message and perf data, I have been looking into agenda generation.

> I believe perf is capable of showing the number of calls as well?  Can
> you compare the number of calls between the two versions?

I can only see
https://www.brendangregg.com/blog/2014-07-03/perf-counting.html, but it
appears to be only for built-in events. Do you know how to count calls
to specific function using perf? I am not familiar at all with perf.

-- 
Ihor Radchenko // yantar92,
Org mode contributor,
Learn more about Org mode at <https://orgmode.org/>.
Support Org development at <https://liberapay.com/org-mode>,
or support my work at <https://liberapay.com/yantar92>




Information forwarded to bug-gnu-emacs@HIDDEN:
bug#58558; Package emacs. Full text available.

Message received at 58558 <at> debbugs.gnu.org:


Received: (at 58558) by debbugs.gnu.org; 10 Apr 2023 14:27:42 +0000
From debbugs-submit-bounces <at> debbugs.gnu.org Mon Apr 10 10:27:42 2023
Received: from localhost ([127.0.0.1]:35594 helo=debbugs.gnu.org)
	by debbugs.gnu.org with esmtp (Exim 4.84_2)
	(envelope-from <debbugs-submit-bounces <at> debbugs.gnu.org>)
	id 1plsUg-0003QB-Gl
	for submit <at> debbugs.gnu.org; Mon, 10 Apr 2023 10:27:42 -0400
Received: from mailscanner.iro.umontreal.ca ([132.204.25.50]:8973)
 by debbugs.gnu.org with esmtp (Exim 4.84_2)
 (envelope-from <monnier@HIDDEN>) id 1plsUf-0003Pw-5o
 for 58558 <at> debbugs.gnu.org; Mon, 10 Apr 2023 10:27:41 -0400
Received: from pmg1.iro.umontreal.ca (localhost.localdomain [127.0.0.1])
 by pmg1.iro.umontreal.ca (Proxmox) with ESMTP id 775481000C4;
 Mon, 10 Apr 2023 10:27:35 -0400 (EDT)
Received: from mail01.iro.umontreal.ca (unknown [172.31.2.1])
 by pmg1.iro.umontreal.ca (Proxmox) with ESMTP id 2CEAE1000BE;
 Mon, 10 Apr 2023 10:27:34 -0400 (EDT)
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=iro.umontreal.ca;
 s=mail; t=1681136854;
 bh=Lx8k4/zGWtFVsvueEpSKTQzoZpBAY9gsWRVF2DGiHrg=;
 h=From:To:Cc:Subject:In-Reply-To:References:Date:From;
 b=AuF33aASMLKkvic7svCajQpZBuyf9FpsVF3uCQ8u+IkPYTT9gDLftw3Z6FbNWAhHD
 S/4W6/mLLCyfDy82lxbfkSqXs/cwy5rAtmfQWVsTtEWrsuTp6+DLnmBlIjcE250/o0
 3bUBfRDlziTlBelidHYeMhgyoHLAbpD/gKoVdAFhHe608QV7e1NvmapNzCBxxeIRKp
 rbg8DqQHnnHjFFMGP2d6aeQogkDlFvD7OlOSegE765YyMWzLtS50KCjHykn1zgRDZH
 vZk7RQkY+hhVw19h/3eqxleKQZDhuvJQutJi0GgMyG5PEz+JclO9hrnA3J5j7GgHAQ
 /IwpHVlXK1g0Q==
Received: from pastel (unknown [45.72.217.176])
 by mail01.iro.umontreal.ca (Postfix) with ESMTPSA id ED795123208;
 Mon, 10 Apr 2023 10:27:33 -0400 (EDT)
From: Stefan Monnier <monnier@HIDDEN>
To: Ihor Radchenko <yantar92@HIDDEN>
Subject: Re: bug#58558: 29.0.50; re-search-forward is slow in some buffers
In-Reply-To: <87h6tolybs.fsf@localhost> (Ihor Radchenko's message of "Mon, 10
 Apr 2023 12:24:23 +0000")
Message-ID: <jwvjzyjhlf1.fsf-monnier+emacs@HIDDEN>
References: <877d10r21x.fsf@localhost> <878rlfjmjh.fsf@localhost>
 <87mt9tbbbp.fsf@HIDDEN> <8335bl18lo.fsf@HIDDEN>
 <87wn8x9eqb.fsf@HIDDEN> <87tu1zd2c6.fsf@localhost>
 <83h6xzphxm.fsf@HIDDEN> <87wn6vbfaa.fsf@localhost>
 <838rjbpecw.fsf@HIDDEN> <87fsdjwb4e.fsf@localhost>
 <jwv5yefb556.fsf-monnier+emacs@HIDDEN> <874jtyuqax.fsf@localhost>
 <83zgbqm8q6.fsf@HIDDEN> <87sfhit8ug.fsf@localhost>
 <83tu1ym6jo.fsf@HIDDEN> <87h6xyt77x.fsf@localhost>
 <87h6ttkz6n.fsf@localhost> <838rf5qkpt.fsf@HIDDEN>
 <87lej0zv92.fsf@localhost> <83ttxol6f5.fsf@HIDDEN>
 <87h6tolybs.fsf@localhost>
Date: Mon, 10 Apr 2023 10:27:32 -0400
User-Agent: Gnus/5.13 (Gnus v5.13)
MIME-Version: 1.0
Content-Type: text/plain
X-SPAM-INFO: Spam detection results:  0
 ALL_TRUSTED                -1 Passed through trusted hosts only via SMTP
 AWL -0.231 Adjusted score from AWL reputation of From: address
 BAYES_00                 -1.9 Bayes spam probability is 0 to 1%
 DKIM_SIGNED               0.1 Message has a DKIM or DK signature,
 not necessarily valid
 DKIM_VALID -0.1 Message has at least one valid DKIM or DK signature
 DKIM_VALID_AU -0.1 Message has a valid DKIM or DK signature from author's
 domain
 DKIM_VALID_EF -0.1 Message has a valid DKIM or DK signature from envelope-from
 domain
X-SPAM-LEVEL: 
X-Spam-Score: -2.3 (--)
X-Debbugs-Envelope-To: 58558
Cc: 58558 <at> debbugs.gnu.org, Eli Zaretskii <eliz@HIDDEN>, larsi@HIDDEN
X-BeenThere: debbugs-submit <at> debbugs.gnu.org
X-Mailman-Version: 2.1.18
Precedence: list
List-Id: <debbugs-submit.debbugs.gnu.org>
List-Unsubscribe: <https://debbugs.gnu.org/cgi-bin/mailman/options/debbugs-submit>, 
 <mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=unsubscribe>
List-Archive: <https://debbugs.gnu.org/cgi-bin/mailman/private/debbugs-submit/>
List-Post: <mailto:debbugs-submit <at> debbugs.gnu.org>
List-Help: <mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=help>
List-Subscribe: <https://debbugs.gnu.org/cgi-bin/mailman/listinfo/debbugs-submit>, 
 <mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=subscribe>
Errors-To: debbugs-submit-bounces <at> debbugs.gnu.org
Sender: "Debbugs-submit" <debbugs-submit-bounces <at> debbugs.gnu.org>
X-Spam-Score: -3.3 (---)

>>> 43.82%--Fre_search_forward
>>>  --43.81%--search_command
>>>   --43.78%--search_buffer
>>>    --43.78%--search_buffer_re
>>>     --43.33%--re_search_2
>>>      --36.39%--re_match_2_internal
>>>       --21.90%--SYNTAX_TABLE_BYTE_TO_CHAR
>>>        --21.57%--BYTE_TO_CHAR
>>>         --21.49%--buf_bytepos_to_charpos
>>> 
>>> Not sure if it is telling much.
>> How does this compare with a "fast" session doing the same?
> "fast" (emacs 28) session does not have this call tree contributing
> significantly.

And I thought, we already established around Dec 13 that most of the
time is spent in `buf_bytepos_to_charpos` (in other profiles).

> Unless there is some other place in buf_bytepos_to_charpos that may be
> slow, the only possible explanation is that it simply gets called more
> times.

That would be quite surprising.

BTW, when debugging such performance problem, I often resort to
a few `DEFVAR_INT` defining ad-hoc counter variables, then sprinkle
corresponding increments of those variables from various places
(typically function entry point, loops, ...).

That gives me a kind of "poor man's profiler", but with the advantage
that I can look at their value conveniently from within the affected
Emacs session.


        Stefan





Information forwarded to bug-gnu-emacs@HIDDEN:
bug#58558; Package emacs. Full text available.

Message received at 58558 <at> debbugs.gnu.org:


Received: (at 58558) by debbugs.gnu.org; 10 Apr 2023 13:40:19 +0000
From debbugs-submit-bounces <at> debbugs.gnu.org Mon Apr 10 09:40:19 2023
Received: from localhost ([127.0.0.1]:34600 helo=debbugs.gnu.org)
	by debbugs.gnu.org with esmtp (Exim 4.84_2)
	(envelope-from <debbugs-submit-bounces <at> debbugs.gnu.org>)
	id 1plrkp-0001o3-2C
	for submit <at> debbugs.gnu.org; Mon, 10 Apr 2023 09:40:19 -0400
Received: from eggs.gnu.org ([209.51.188.92]:44930)
 by debbugs.gnu.org with esmtp (Exim 4.84_2)
 (envelope-from <eliz@HIDDEN>) id 1plrkn-0001nq-Cq
 for 58558 <at> debbugs.gnu.org; Mon, 10 Apr 2023 09:40:17 -0400
Received: from fencepost.gnu.org ([2001:470:142:3::e])
 by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256)
 (Exim 4.90_1) (envelope-from <eliz@HIDDEN>)
 id 1plrkh-0001Of-Gw; Mon, 10 Apr 2023 09:40:11 -0400
DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; d=gnu.org;
 s=fencepost-gnu-org; h=References:Subject:In-Reply-To:To:From:Date:
 mime-version; bh=VPSHIL3Dq8U5HHudAQH6/8fMKL5aglOjprROu7lJ2e0=; b=SfSOuCBJ4qs2
 khDFKvB9Rj2ZcQrWo9bDa9WvezN4A4akZaLFRVj1KAX+QWyCjgeMIPBPxmJHlDZ/vJsLU4kUeWScG
 hBKIWMG4c/dZh9hebDjvSU/3KiFAPXTKxIDQzeypP7m0JapD3zwShpakpteJgP7WCrjdeOUghcLWo
 3of3pMgt86iiNrP9F8Fft4cIJW6beTQgSOmrnFGRulVtgK6MbdXWY9cpe78POSHJP9BmpnYUoQWty
 AW9uboPyJTfmnU+G2IgbA8qsPr4/eh9NSmnkCS1X7IBZowxv1I87waYmQnYjp+Q2EIO11dJPyBUcn
 2kOAFNcIGd4mF12WtTPGjw==;
Received: from [87.69.77.57] (helo=home-c4e4a596f7)
 by fencepost.gnu.org with esmtpsa (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256)
 (Exim 4.90_1) (envelope-from <eliz@HIDDEN>)
 id 1plrkh-0004fq-13; Mon, 10 Apr 2023 09:40:11 -0400
Date: Mon, 10 Apr 2023 16:40:51 +0300
Message-Id: <83mt3fc0t8.fsf@HIDDEN>
From: Eli Zaretskii <eliz@HIDDEN>
To: Ihor Radchenko <yantar92@HIDDEN>
In-Reply-To: <87h6tolybs.fsf@localhost> (message from Ihor Radchenko on Mon,
 10 Apr 2023 12:24:23 +0000)
Subject: Re: bug#58558: 29.0.50; re-search-forward is slow in some buffers
References: <877d10r21x.fsf@localhost>
 <jwvbkqbhnu8.fsf-monnier+emacs@HIDDEN> <878rlfjmjh.fsf@localhost>
 <87mt9tbbbp.fsf@HIDDEN> <8335bl18lo.fsf@HIDDEN>
 <87wn8x9eqb.fsf@HIDDEN> <87tu1zd2c6.fsf@localhost>
 <83h6xzphxm.fsf@HIDDEN> <87wn6vbfaa.fsf@localhost>
 <838rjbpecw.fsf@HIDDEN> <87fsdjwb4e.fsf@localhost>
 <jwv5yefb556.fsf-monnier+emacs@HIDDEN> <874jtyuqax.fsf@localhost>
 <83zgbqm8q6.fsf@HIDDEN> <87sfhit8ug.fsf@localhost>
 <83tu1ym6jo.fsf@HIDDEN> <87h6xyt77x.fsf@localhost>
 <87h6ttkz6n.fsf@localhost> <838rf5qkpt.fsf@HIDDEN>
 <87lej0zv92.fsf@localhost> <83ttxol6f5.fsf@HIDDEN> <87h6tolybs.fsf@localhost>
X-Spam-Score: -2.3 (--)
X-Debbugs-Envelope-To: 58558
Cc: 58558 <at> debbugs.gnu.org, larsi@HIDDEN, monnier@HIDDEN
X-BeenThere: debbugs-submit <at> debbugs.gnu.org
X-Mailman-Version: 2.1.18
Precedence: list
List-Id: <debbugs-submit.debbugs.gnu.org>
List-Unsubscribe: <https://debbugs.gnu.org/cgi-bin/mailman/options/debbugs-submit>, 
 <mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=unsubscribe>
List-Archive: <https://debbugs.gnu.org/cgi-bin/mailman/private/debbugs-submit/>
List-Post: <mailto:debbugs-submit <at> debbugs.gnu.org>
List-Help: <mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=help>
List-Subscribe: <https://debbugs.gnu.org/cgi-bin/mailman/listinfo/debbugs-submit>, 
 <mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=subscribe>
Errors-To: debbugs-submit-bounces <at> debbugs.gnu.org
Sender: "Debbugs-submit" <debbugs-submit-bounces <at> debbugs.gnu.org>
X-Spam-Score: -3.3 (---)

> From: Ihor Radchenko <yantar92@HIDDEN>
> Cc: monnier@HIDDEN, larsi@HIDDEN, 58558 <at> debbugs.gnu.org
> Date: Mon, 10 Apr 2023 12:24:23 +0000
> 
> >> 43.82%--Fre_search_forward
> >>  --43.81%--search_command
> >>   --43.78%--search_buffer
> >>    --43.78%--search_buffer_re
> >>     --43.33%--re_search_2
> >>      --36.39%--re_match_2_internal
> >>       --21.90%--SYNTAX_TABLE_BYTE_TO_CHAR
> >>        --21.57%--BYTE_TO_CHAR
> >>         --21.49%--buf_bytepos_to_charpos
> >> 
> >> Not sure if it is telling much.
> >
> > How does this compare with a "fast" session doing the same?
> 
> "fast" (emacs 28) session does not have this call tree contributing
> significantly.

Hmm... I though when you just start a new Emacs session of Emacs 30 it
also is fast, and becomes progressively slower with time?  Or am I
confused?

> re_match_2_internal calls SYNTAX_TABLE_BYTE_TO_CHAR in a loop. So, if
> something strange is happening with the loop, we may be calling
> buf_bytepos_to_charpos more.

I believe perf is capable of showing the number of calls as well?  Can
you compare the number of calls between the two versions?




Information forwarded to bug-gnu-emacs@HIDDEN:
bug#58558; Package emacs. Full text available.

Message received at 58558 <at> debbugs.gnu.org:


Received: (at 58558) by debbugs.gnu.org; 10 Apr 2023 12:22:16 +0000
From debbugs-submit-bounces <at> debbugs.gnu.org Mon Apr 10 08:22:16 2023
Received: from localhost ([127.0.0.1]:34499 helo=debbugs.gnu.org)
	by debbugs.gnu.org with esmtp (Exim 4.84_2)
	(envelope-from <debbugs-submit-bounces <at> debbugs.gnu.org>)
	id 1plqXI-00082y-9g
	for submit <at> debbugs.gnu.org; Mon, 10 Apr 2023 08:22:16 -0400
Received: from mout02.posteo.de ([185.67.36.66]:51163)
 by debbugs.gnu.org with esmtp (Exim 4.84_2)
 (envelope-from <yantar92@HIDDEN>) id 1plqXG-00082k-60
 for 58558 <at> debbugs.gnu.org; Mon, 10 Apr 2023 08:22:14 -0400
Received: from submission (posteo.de [185.67.36.169]) 
 by mout02.posteo.de (Postfix) with ESMTPS id 453F1240205
 for <58558 <at> debbugs.gnu.org>; Mon, 10 Apr 2023 14:22:08 +0200 (CEST)
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=posteo.net; s=2017;
 t=1681129328; bh=fU6YzE2wTgVlSFewvTAc6gbiYjnV3gSM2LqGyzGurkE=;
 h=From:To:Cc:Subject:Date:From;
 b=VSoGP5sezs0d+PS90QNDcwONfWnZ+AV8wFycNLO9Av4tk0gjIXzVuUx/sF6zoSMP+
 CVV22LceNH+UVeJj+OZKXI2NfrYkypnFoGqhkXSq+FIvm1kzEAHDVrg+iv5+Hu2Tys
 Kp2usLwvGMPbazwo4R4JR83sya/Tw6yPsolBZhEWJAYvMS494J4stirXCr1ddcRTEj
 KtsZPGIUvtcvSBxBbOI9yRVy0BplMPZ0jdT9ow4VShojzTvmsmmNBOiVyoIrZnR8oa
 zAtgG2SNjqCV9hHm2akNjyKnRpkw6K4fHwV8d9Y6DeK3ZxJwjrrBzq4t940d1NEwsW
 dMftmKdTXhfsw==
Received: from customer (localhost [127.0.0.1])
 by submission (posteo.de) with ESMTPSA id 4Pw7Q66RDVz6trm;
 Mon, 10 Apr 2023 14:22:06 +0200 (CEST)
From: Ihor Radchenko <yantar92@HIDDEN>
To: Eli Zaretskii <eliz@HIDDEN>
Subject: Re: bug#58558: 29.0.50; re-search-forward is slow in some buffers
In-Reply-To: <83ttxol6f5.fsf@HIDDEN>
References: <877d10r21x.fsf@localhost>
 <jwvbkqbhnu8.fsf-monnier+emacs@HIDDEN> <878rlfjmjh.fsf@localhost>
 <87mt9tbbbp.fsf@HIDDEN> <8335bl18lo.fsf@HIDDEN>
 <87wn8x9eqb.fsf@HIDDEN> <87tu1zd2c6.fsf@localhost>
 <83h6xzphxm.fsf@HIDDEN> <87wn6vbfaa.fsf@localhost>
 <838rjbpecw.fsf@HIDDEN> <87fsdjwb4e.fsf@localhost>
 <jwv5yefb556.fsf-monnier+emacs@HIDDEN> <874jtyuqax.fsf@localhost>
 <83zgbqm8q6.fsf@HIDDEN> <87sfhit8ug.fsf@localhost>
 <83tu1ym6jo.fsf@HIDDEN> <87h6xyt77x.fsf@localhost>
 <87h6ttkz6n.fsf@localhost> <838rf5qkpt.fsf@HIDDEN>
 <87lej0zv92.fsf@localhost> <83ttxol6f5.fsf@HIDDEN>
Date: Mon, 10 Apr 2023 12:24:23 +0000
Message-ID: <87h6tolybs.fsf@localhost>
MIME-Version: 1.0
Content-Type: multipart/mixed; boundary="=-=-="
X-Debbugs-Envelope-To: 58558
Cc: 58558 <at> debbugs.gnu.org, larsi@HIDDEN, monnier@HIDDEN
X-BeenThere: debbugs-submit <at> debbugs.gnu.org
X-Mailman-Version: 2.1.18
Precedence: list
List-Id: <debbugs-submit.debbugs.gnu.org>
List-Unsubscribe: <https://debbugs.gnu.org/cgi-bin/mailman/options/debbugs-submit>, 
 <mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=unsubscribe>
List-Archive: <https://debbugs.gnu.org/cgi-bin/mailman/private/debbugs-submit/>
List-Post: <mailto:debbugs-submit <at> debbugs.gnu.org>
List-Help: <mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=help>
List-Subscribe: <https://debbugs.gnu.org/cgi-bin/mailman/listinfo/debbugs-submit>, 
 <mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=subscribe>
Errors-To: debbugs-submit-bounces <at> debbugs.gnu.org
Sender: "Debbugs-submit" <debbugs-submit-bounces <at> debbugs.gnu.org>

--=-=-=
Content-Type: text/plain

Eli Zaretskii <eliz@HIDDEN> writes:

>> 43.82%--Fre_search_forward
>>  --43.81%--search_command
>>   --43.78%--search_buffer
>>    --43.78%--search_buffer_re
>>     --43.33%--re_search_2
>>      --36.39%--re_match_2_internal
>>       --21.90%--SYNTAX_TABLE_BYTE_TO_CHAR
>>        --21.57%--BYTE_TO_CHAR
>>         --21.49%--buf_bytepos_to_charpos
>> 
>> Not sure if it is telling much.
>
> How does this compare with a "fast" session doing the same?

"fast" (emacs 28) session does not have this call tree contributing
significantly.

> And why are you once again focusing on buf_bytepos_to_charpos, when
> you previously (presumably) established that it cannot be the problem,
> since the number of markers doesn't change significantly?

We only established that the number of markers cannot be the problem.
However, buf_bytepos_to_charpos still dominates CPU samples (see the
attached) in Emacs master, but not in Emacs 28.

Unless there is some other place in buf_bytepos_to_charpos that may be
slow, the only possible explanation is that it simply gets called more
times.

Then, we are interested in the callers of buf_bytepos_to_charpos. That's
exactly what I provided in the previous message.

>> I also looked into git history and I can only identify significant
>> changes in re_match_2_internal after Emacs 28 release.
>
> It sounds like most of the time is not in re_match_2_internal itself.
> But I think comparison with a "fast" session could help with ideas.

re_match_2_internal calls SYNTAX_TABLE_BYTE_TO_CHAR in a loop. So, if
something strange is happening with the loop, we may be calling
buf_bytepos_to_charpos more.


--=-=-=
Content-Type: image/png
Content-Disposition: attachment; filename=emacs-28-report.png
Content-Transfer-Encoding: base64

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
wECVSjVo0KDz58+L1ev27dtEpNfra2trhQVhDEREf/zxh7Bw/fp1juNsbW3FrrJ06NCB4ziVSiVM
4TEMU1dXZ2dnd/ny5Rap182bNxmGsbW13bVrl06nUygURHTjxg2TWwcAAOCBuzMtFRwcnJCQ0L17
d5VKlZKS0rVrV5VK5eHhYWpxVVVVer3ewcFBeOng4MDzvGFs0ZhcLk9ISNi5c+ebb77p7+9/5MgR
86phRjw6nS4xMTEgIOCll146d+6c9LfDxHTp0mX06NHC8s2bN+Pi4mpqarp162Zevezt7YWF9u3b
a7Xaa9euieWsrq7meX7SpEne3t7e3t4vv/yyh4eHMDZtkXr99ttvf/75p1KpTExM/Oabb1xcXK5c
uXLx4kUzigIAAHjA7gxuEhIScnNzP/7449DQUI1GExUVFRoaWlxcbGpxtbW1Go1m0qRJLMtyHBcY
GLhz507DDcI3btxwdnZmGEYul7dv356IbG1tLS0tCwoKiKh37949e/ZsMPeh0+msrKzMrp5EPFFR
UcOGDROiKi0tFeaDxOIUI5PJoqKiRo4cyXEcx3GjR49mGOb48ePN1qtJI0aMEO4mDggIyM3NrX/3
boN24Hk+IyNj8uTJMpmMZVk/P79Zs2YJb0nUi4hUKlV8fHyzkfA8r1arp0+f3q5dOzs7u2nTpm3a
tAl3EwMAwCPhry8tu7m5nThxgoi8vLzy8/PNLjE8PJxlWY1Gs2fPHq1WGxERYXgrOTnZ1dW1pKQk
Kytr3LhxRFRZWalSqRITEzdt2uTj4xMdHT1q1CjhLcHRo0etra0PHz6cl5fn5eUlvWkPD4+yeoTb
XMTiSU1NDQoK0mg0u3fv9vX1/eyzzyTiFFNeXj558uSJEycWFBTk5+f7+/sHBQVVVlY2W68m7d+/
f926dT///HOPHj0iIyPrv9W4HSIiInie12g0OTk5AQEBhl/BkagXEdnb2wtzTM1avHhxZWVldnZ2
ZmZmeXn5smXLjFkLAAAA4A61Wj1q1KjWjgIAAOCR15I/Nwf3yHBnMQAAAJgNgxsAAAAAAAAAAAAA
AAAAAAAAAAAAAAAQODk5LVy4kIjkcrl5v2wLAAAA0Lr+59tSLi4upaWlRKRUKsvKylopJAAAAADz
NRzcCM93VCqVLfsASwAAAIAH486vxnl4eEyZMsXd3f3kyZNardbFxeXMmTM7duxITU1t3fgAAAAA
zJecnCwsJCUltW4kAAAAAOb5a1pKoVBcvnyZiDiO02q1rRcSAAAAgPnuTEsFBwcPGTLExsbm3Llz
tra2jo6OFRUV8fHxxcXFrRsfAAAAgJlmzpzp7u5ORIGBgQMGDGjtcAAAAADM8de0lJub24kTJ4jI
y8srPz+/9UICAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAgMeVk5PTwoULiUgul69a
tUo6s4uLS0pKSn5+flFR0caNG11dXVs2GE9Pz5ycnMOHD6vV6pYt2RgjRow4ffp0u3btDCnt27df
sWJFQUFBYWHhmjVrHB0dhfSSkpJXX31VWB43blxBQcFTTz1l3kbbtGmzbNmyoqKikydPFhYWml1O
SwkICJg+fbpJqyQkJKxZs+Z+BNO6/eH+1QsAAFocW/+Fi4tLaWkpESmVyrKyMuk14+PjCwoKXnzx
xRdeeOHo0aOrV69mWVZ6FZMUFhb27ds3Ojq6Bcs0hr29/bvvvjtnzpwG6UuWLNHpdN7e3i+//LJO
p5s/f36DDH369AkPD588efL58+fN2/SAAQP69+/v6+vbo0cPT09Ps8tpKT169DB1latXr169evV+
BNNa/UFw/+oFAAAtruHg5tSpU0SkVCqFBTEymeypp546ePCgTqfjeT42NvaDDz4Q3urcuXNycnJ2
dvbBgwejoqI4jiOi4cOHJyQkrFu3Ljs7+4033ti8ebNarbawsCCi9PT06dOnJyUlbd68efPmzV26
dJGOWKFQxMTE7N27V6PRLF261NbWVki3s7NbvXr1vn37MjMzk5KSnnzyyfprpaambtiwodnmsLS0
VKvVLi4uM2bMaPDWwYMHly5deuvWrVu3bu3atatr1671333qqadWrVr16aefHjlyRHoT9vb2y5Yt
27t37969e1euXNmxY0ci6tSpU15e3hdffKFQKNLS0vLy8rKzs81oh9dff72oqMjS0lLI06ZNm8OH
D48YMUIsPxGlp6cHBQV9/fXXaWlpGRkZSqVSSFepVBMmTAgODs7Ly8vLy/P29m629Yjo2rVrDQYB
7dq1W7RoUVZWVk5Ozrp165ycnIho5MiRWVlZDHPn0WYMw+zfv/+NN94Qy29qO5Dp/UGtVvv7+wvL
vr6+u3btkq4XAAA8tO4Mbjw8PIQPs3//+98qlWrKlCkTJkwYM2aM2GparXbv3r0xMTFvvfXW008/
ffPmzWPHjul0OiKaN2/e+fPnvb29hw8fPnjwYF9fXyKqq6t76aWXwsLCioqKxo8fHxAQYG9v//zz
zxORTqfz8fF57733AgICDh48uGDBAumIo6KiLC0thwwZMnToUJlMFh4eLqSHhoZeunTp1VdfHThw
oEajGTRoUP21Ll++bMyHU21trbe39yeffHLhwoUGb3377be//fYbwzDPPvvsu+++m5aWZnjLxsYm
ISEhJSUlIyOj2U0sXryYYRgfHx8fH5+amppFixYR0cWLF/v06bNo0aJffvmlT58+ffr0aXYw0WQ7
7Nq1S6/X+/j4CHmGDh1aW1u7e/dusfxEpNPpRowYMX369DfffDMvL88wqgsNDd23b19CQoIQT7OD
LUHjKxxRUVFWVlaDBw/u37//uXPn4uLiiGj79u3W1tb9+vUT8vTt21cul+/cuVMsv6ntQC3UHyTq
BQAAj4bk5GRhISkpqdnMMpns7bffXr9+/cmTJ3ft2jVw4EAhvU2bNlZWVsLy2rVrw8LCiMjHx0f4
4A8PD4+IiCCirVu3Dh48mIjUavXUqVOF/K6urmVlZfWnt/z9/evfYyGTycrKyp577jnhpbu7+/Hj
x4ULAKGhoenp6f379zds/V44OTk1uOdGcOzYsdOnTy9fvtxwdaSkpOTQoUPHjh1bu3Zts8VaWlpW
VFS4ubkJL3v27FleXi6TyYSXY8eO3bJlizHhSbTDJ598Yth9GzZsmDlzpnR+tVodGBgopPv5+W3f
vt2wlbi4OFPvuZHJZIbqEJGFhUV5ebnhfiwLCwsbGxthOSwszDBw+eqrrz766CPp/IL71x+kr9w0
qBcAADzM/jpfKxSKy5cvExHHcVqtttk1tVptSkpKSkqKXC4PDAxUqVSDBg06f/68p6dnSEiInZ0d
z/POzs6G6a3bt28TkV6vr62tFRYMsxJ//PGHsHD9+nWO42xtbcX+S+7QoQPHcSqViud5ImIYpq6u
zs7O7vLly19//XVdXd2MGTOUSuWhQ4ciIyMbX325dz179uzcuXNYWNj69evHjh2r1+uJ6NChQ199
9ZVarf7Xv/717bffSqzu4ODAMEx1dbXwsrq6mmXZDh06VFZWmhSGRDt8//33e/bseeKJJ6ysrDw9
PT/88EPp/ER07do1oVie5+/xI7xBz+nUqRPLsob9W1dXV1dXJyx/9913+/btc3BwqKmpGTRo0NCh
Q6Xzm9oOLdsfjDkiAADgIXHnkyw4OHjIkCE2NjYqlcrW1tbR0VGlUsXHxxcXFze5WpcuXTw9PTdt
2kREN2/ejIuL+/e//92tW7c//vgjISEhMjLyhx9+IKKEhARjgrC3txcW2rdvr9VqDZ+1jVVXV/M8
P2nSJOHG5/p0Ol1iYmJiYqKNjU1YWNiqVatGjhxpzNaNIZfLg4KCkpOTr169euHChaVLl+bk5HTq
1EkYlGzbtu3s2bPh4eExMTEFBQXCw9WbVFVVpdfrHRwchBUdHBx4njeMdYwn0Q5nz57Nz88fNWqU
jY1NZmbm77//Lp3/vqqqqtLpdB07dhTqa21t7eTkVF5eTkQXL1786aefAgICbty4cejQIWHkIZG/
SS3YH3ieF+4PIyLDjTsAAPAoujMBlJCQkJub+/HHH4eGhmo0mqioqNDQULGRDRHJZLKoqKiRI0dy
HMdx3OjRoxmGOX78uK2traWlZUFBARH17t27Z8+ebdu2bTaIESNGCB8nAQEBubm5wuUQgU6nqz+t
wPN8RkbG5MmTZTIZy7J+fn6zZs0S3oqKiho2bBgR3bhxo7S09NatW/U3IYzVjG+XBm7evOnr6ztj
xgxLS0uZTDZx4sSLFy9WVVXVz5ORkbF58+YVK1bI5XKxcmprazUazaRJk1iW5TguMDBw586dwlUH
k0i0AxFt3Lhx8ODBw4cPX79+vTH5xdy4ccPZ2ZlhGLlc3r59e1ODJCLhjp+QkBCO41iWDQsLW7Jk
ieHdb7/9dsyYMQEBAYY4pfPT/ewPv/32W/fu3YnIwsJCuAUbAAAeUX/d3eLm5iZccvDy8srPz5de
rby8fPLkyRMnTiwoKMjPz/f39w8KCqqsrKysrFSpVImJiZs2bfLx8YmOjh41atS4ceOkS9u/f/+6
det+/vnnHj16REZG1n/r6NGj1tbWhw8fzsvL8/LyIqKIiAie5zUaTU5OTkBAgOEOjNTU1KCgII1G
s3v3bl9f388++6x+Ofb29gqFwpgWycvLKyoq2rZtGxFlZmYWFRUJn5EhISGdO3fOycnJy8vr3bt3
cHCwcAN1fQsXLrx9+7ZwU5GY8PBwlmU1Gs2ePXu0Wq10Zgli7UBEu3fv7ty5s06nO3DggDH5xSQn
J7u6upaUlGRlZTW7E8XMmTOnrq5u7969Bw4c6NKly/vvv29468iRI1euXFEoFPXvVpbIT/ezP6xe
vbpv376bN29evXp1ZmZmy/6uAQAA/L2o1epRo0a1dhTQOlauXBkUFNTaUQAAwNaQNYEAACAASURB
VGPlofj31HBnMfyt9OvXz9PTMzU1tbUDAQCAxwq+3QqtIz093cbGZsaMGdevX2/tWAAAAAAAAAAA
AAAAAAAAAAAAAAAAQODk5LRw4UIiksvlq1atks5cUlJSXl5eVo/hcUstJSAgwNRnG91XZsQjk8m2
bt36zjvv3KeQ7qugoKAtW7a0yDOVRowY0eBZXQqFYvny5QUFBQUFBXFxcZ06dRLS27dvv2LFioKC
gsLCwjVr1jg6OhpWmTBhwoEDB4qKijZs2GB4WriDg8OqVat+/vnnn3/+OTY2tkOHDkJ6TEzML7/8
UnSX4feEcnJyDIlHjhwpKSmRjlMsXWy7YukAAPDA/M9XwV1cXISfsVcqlWVlZc2uHBoa2r0e4aFR
LahHjx4tW+A9MiOeDz744OrVq4Ynkt4/9+Pr9ImJiX/++ee0adPupRB7e/t33313zpw5DdIXLFgg
l8tfeeUV4fnn8+fPF9KXLFmi0+m8vb1ffvllnU5nSB84cOCUKVPeeecdLy+vX3755YMPPjDkv3r1
6iuvvDJgwIC6ujphdE5E7dq1W7ZsWe+7DOX07dvXkPjDDz8YnlQqFqdYuth2xdIBAKB1vP/++8Kv
vo4bN+61116TzlxSUvLqq682SHz99deLiooMl3DatGlz+PBh4cfsFQpFTEzM3r17NRrN0qVLDY/v
SU9PDwoK+vrrr9PS0jIyMpRKpZCuUqlOnjxZUlKSl5eXl5cnfARKaNeu3aJFi7KysnJyctatW2f4
z97e3n7ZsmV79+7du3fvypUrO3bsKKSLPQW6peIhog4dOpSUlBiecS3o3LlzcnJydnb2wYMHo6Ki
DM8zSk9Pnz59elJS0ubNmzdv3tylSxfp9BEjRmzZssXd3X3btm3FxcVpaWkS9ZXL5Xv27Bk9erSQ
JzAwMD093Zgrbe7u7iUlJY2fvZCamrphw4ZmV7e0tMzOzl6yZEmfPn0aXPmYOHFi165dDXXJzMwU
lv/1r3/94x//EJbfeOONPXv2CMtJSUlvvfVW400cOHDA0FdHjhz5008/Ccs//PCD9I9D9ujRIycn
RwhJLE6J+MW2K5YOAAAPmoeHh0qlEoYFKpVq//7933zzzZgxYyRWaXJwY2FhUVhYaHg0j5+f36FD
h4R5jdjY2NjYWJlMxnHc8uXLFy9eLORRq9Vbt24Vnsc0b968+k/8iYuLM34aaMWKFcuWLROeMRQR
EWH4Gf41a9YsX76cZVmWZWNiYtauXWvYbpODm5aKh4jefvvt7du3N0hUqVTR0dFEpFAocnNz/fz8
DNvdvn27tbU1EYWFhaWkpEinK5XK48ePr1+/Xhh+GQZJYvXt3r17fn7+M88806NHj/z8/KefftrI
WuzcuXP8+PGNa2HSs7qcnJyanO4RxMbGNniGFMMwzz777NatW9977z0h5fDhw+++++7mzZt//vnn
+Pj4J554QkiPiIiIjY21tLS0tLSMj4//5JNPhPRdu3YlJCQIj2VYsWKFYdrLYP369Y2nC8XibJwu
tl2xdAAAaB2G2ZOkpKRmM5eUlJSWlp686/PPPxfSP/nkE8PqGzZsmDlzJhHJZLKysrLnnntOSHd3
dz9+/Lgwk6JWqwMDA4V0Pz+/+qMB4wcTFhYW5eXlhmskFhYWNjY2RGRpaVlRUeHm5iak9+zZs7y8
XBhsSQxu7j0ewVdffdX40VFt2rQxPPpx7dq1YWFhhu1OnTpVWHZ1dS0rKxMebySW7ujoePr06QYX
2CTqS0T+/v4//vjj7t27hwwZYnwtIiMjY2JijM/fJInBzYcffpiVlWV4Mrzg2LFjp0+fXr58ueHy
UkVFxcaNGzt16tSmTZuYmBjhsfNEZGtrq1arS0pKSkpKtmzZYrgiuHDhwqlTp8rl8nbt2sXHxzf4
HWQPD4+ioiJhyGhMnI3TxbYrlg4AAA/MX/fcKBSKy5cvExHHcVqt1piVp0yZ0uOu2bNnC4nff/99
v379nnjiCWdnZ09Pz40bNxJRhw4dOI5TqVTZ2dnZ2dmrV6+uq6uzs7MTVrl27ZqwwPO8ebevdurU
iWXZP/74Q3hZV1d348YNInJwcGAYprq6Wkivrq5mWbbZezzvPR6Bg4NDgyeHE5Gnp+eaNWvS0tK2
bNnSu3fv+vfKGOK/fv06x3GGz8Um04XHdh47dqzBFiXqm5aWZm9vr9frDXM9xqiqqjLM5bUsCwuL
mJiYV155ZcyYMULfM+jZs6e3tzfP8+vXrxea6OrVqykpKRcvXqypqVmxYoWnp6eNjQ3DMElJSQcO
HPDw8PDw8MjNzf3mm2+EEubMmRMXF3fz5s1r164tWbKkd+/e9SfX3nrrra1btzZ4VLjxxLYrEQ8A
ADwwdwY3wcHBCQkJ3bt3V6lUKSkpXbt2ValUHh4eZpR49uzZ/Pz8UaNGjRkzJjMz8/fffyei6upq
nucnTZrk7e0t3Cvq4eHR4PPsXlRVVel0OsNnsLW1dbdu3YR0vV7v4OAgpDs4OPA8L3z28zxvmMq5
T/9e6/X6BilyuTwhIWHnzp1vvvmmv7//kSNH6r9ruHrRvn17rVZrGGOJpRNRTU1N/RIk6ktE06dP
Ly0tvXTpkmGux+yK3Ls2bdqsXbvWxsZm7NixFy9eFBLlcvm0adOE53VfuHBh6dKlvXv3FmaUzpw5
Y3iON8uyer2e5/mOHTv26tVrw4YNPM/zPJ+amurh4WFnZ9emTRsfH582bdoI+S0sLOpvmuO4gQMH
7tu3z+zgxbYrlm72hgAAwAx3BjcJCQm5ubkff/xxaGioRqOJiooKDQ0tLi42r9CNGzcOHjx4+PDh
69evF1J4ns/IyJg8ebJwT4yfn9+sWbOaLefGjRvOzs4Mw8jl8sb3tNZXW1u7e/fukJAQjuNYlg0L
CxPu4aitrdVoNJMmTWJZluO4wMDAnTt38jxPRL/99lv37t2JyMLCwnCTUEvFI6iqqjKMMwS2traW
lpYFBQVE1Lt37549e7Zt29bw7ogRI4RhVkBAQG5urmFIIZbeZDuI1bd///6jRo2aPXt2WFjYv/71
rz59+tRfUeIeGgcHB8PwyJj8Rpo3bx4RTZ06tf7lk5s3b/r6+s6YMcPS0lImk02cOPHixYvC1a/v
vvsuODj4ySeftLCwmDZt2sGDB2/dulVdXV1ZWenr6yusPnz48AsXLly5cqWuru6zzz4LCwuTyWS2
trYfffRRTk7OpUuXhGzPPvusnZ1dg5GlScS2K5Zu9oYAAMAMf01Lubm5nThxgoi8vLzy8/ONWVml
UtX/nZsBAwYI6bt37+7cubNOpztw4IAhc0REBM/zwg2eAQEBhht+JSQnJ7u6upaUlGRlZY0bN046
85w5c+rq6vbu3XvgwIEuXbq8//77Qnp4eDjLshqNZs+ePVqt1nATzOrVq/v27bt58+bVq1dnZmYK
N7K0YDxEVFBQ4OnpWT+lsrJSpVIlJiZu2rTJx8cnOjp61KhRhqL279+/bt26n3/+uUePHpGRkYa1
xNKb1GR9O3XqFBMT8+GHH165cqWysjI8PPyrr76qP9lkb29vuC7SwAsvvFBYWNggUSJ/A3l5eUVF
Rdu2bSOizMzMoqKiYcOGyeXysWPHenp65ufnG351RriJOyQkpHPnzjk5OXl5eb179w4ODhYm4NLS
0rZt25aWlpabm2tjY/Pxxx8TkV6vDw4O7tevX1ZWVmZmZt++fUNCQohIp9MFBwe7urrm5+dnZWXd
uHGj/s1STz755JUrV27fvt1snGLpYtsVSwcAAHhMtG/fvqSkxMhfx1Gr1U1+dVks/cFwc3MrKSlp
cLcvAADAw6z5yxVgtkuXLiUmJgrXGIwh9kN89+MH+oz08ccfr1u3rgXvjgIAALjfMLi5v1auXKlQ
KB7Rxy9MmjTJxsam2QdxAAAAAAAAAAAAAAAAAAAAAAAAAADA48LJyWnhwoVEJJfLcRspAAAAPIr+
59tSLi4upaWlRKRUKsvKylopJAAAAADzNRzcnDp1ioiUSqWwAAAAAPBoufPrcB4eHlOmTHF3dz95
8qRWq3VxcTlz5syOHTtSU1NbNz4AAAAA8yUnJwsLSUlJrRsJAAAAgHn+mpZSKBTCr+xzHKfValsv
JAAAAADz3ZmWCg4OHjJkiI2Nzblz52xtbR0dHSsqKuLj44uLi1s3PgAAAAAzzZw5093dnYgCAwMH
DBjQ2uEAAAAAmOOvaSk3N7cTJ04QkZeXV35+fuuFBAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAACPKycnp4ULFxKRXC5ftWqVdGYrK6uoqKjCwsKSkpJvv/3W2dlZSFer1f7+/mJrhYSE
aDSa+imenp45OTmHDx9Wq9Via40dO3bLli3GV+RR5OLikpKSkp+fX1RUtHHjRldXV+n8Eu3Wpk2b
ZcuWFRUVnTx5srCw8KmnnjIjHrH9+zB4FPuD2P6VPl5aljHtplAovvrqq6NHjx47dmzZsmW2trZC
erNxZmZmBgYG3kt4AQEB06dPv5cSwGymnn/EmNqfjTn/A5iBrf/CxcWltLSUiJRKZVlZmfSa8+fP
79Onz/jx4/v06XP69OlvvvnGwsKi2e2p1eoPPvigfkphYWHfvn2jo6NND56IiGEY81Z82MTHxxcU
FLz44osvvPDC0aNHV69ezbKsRH6JdhswYED//v19fX179Ojh6el5/vx5M+Ixb/+CGFP3r5FavP/H
xMQ4OTkNGTJkyJAhzs7OX3zxhZErTp06dfv27fey6R49etzL6nAv7lP/bNY9nv8BxMjqv3BxccnL
yyMipVJ56tQpidXkcrmfn19YWFh5eTkRRUdH//rrrxYWFnV1dUT0xBNPbNiw4Z///GdlZeXMmTMr
KiqIaOTIkZ988omlpWV1dbWPj0+zkXXp0mXp0qUODg7//e9/jxw5YkgfMWLEpEmTIiMjo6Ojn376
6bNnz7755ptEpFAo5s6d26tXL51OV1xcvGDBguvXrxNRenp6Wlraiy++6ODgYGFhMXPmTGEA91CR
yWRPPfXUwYMHdTodEcXGxu7YsUN4S6xeTerUqVN6erqVlZWVlVVaWhoR1dTUeHt7mxqPxP61t7ef
O3fu888/T0QnTpyYP39+dXX18OHDR40axTBMt27dYmJi3nnnHQsLi4CAAB8fnybT6+rqOnfuvHjx
YmdnZ47j9u3bFxkZyfM8ie8vsf7wSJDYvyRyvIi1j6n936R2c3R0HDhw4MSJE//73/8SUUxMTHJy
cseOHaurq4nIyclp06ZNzs7O//nPf2bNmnX27Fkhnnnz5gkBfP7550lJSUJRYvG0a9fuk08+6du3
r6Wl5cmTJyMiIv7v//6PiFQqlbe3t1arnTBhAhF99NFH2dnZLbsXQIxY/xw5cuT06dMHDhyo1+uJ
iGGYrKysL7/8UqvVih3XJNJPmjxvtGKV4e/Cw8NDpVLl5OSsW7dOpVLt37//m2++GTNmjFj+nj17
nj592snJqfFbarU6IyPD0dGRYZgvv/wyLi6u/rvDhg1rMC0l8Pf3b3BZcv369REREURka2u7Y8cO
w+V0pVJ5/Pjx9evXK5VKIuI4TkiPjY2NjY2VyWQcxy1fvnzx4sWGeLZu3SqXy4lo3rx58fHxRrfK
A6VSqTIzM996662nn366frpYvQSN241aYtZGYv+uWbNm+fLlLMuyLBsTE7N27Voi8vHxOX78eLt2
7ZYvX75x40Yiys7O9vT0FEsX6iv8u6ZQKHJzc/38/ITyxfaXWH94VIjtX7HjRax9TO3/JrXbK6+8
cvr0aaHxhU2fPn26b9++Qpx79uwR4lyyZElycnKDdVNSUupPS4nFs2LFimXLlslkMpZlIyIi6vfe
uLg4TEu1lib7p4WFRV5eXv/+/YWX/fr1KygosLCwkDiuxfpJk+cNgybPYwD34s6Fx+Li4tDQ0IqK
iqCgoNDQ0F9//fXdd99NTU0VW83a2pqIxC4hpKWlVVZW6vX6AwcOPPPMM2aExXFcnz59hBPx9evX
MzIyDG9duXLFysoqOTlZ+Ide+HdWJpMNHTp07dq1Wq2W5/nExMQ33njDcMU+PT395s2bRHT06FHz
bkB5AKZOnZqYmDh06NDdu3fv2rVr4MCB1Fy97h+x/WtpaTl48OCEhASdTqfT6ZKTkwcOHCiTyYjo
7Nmz165dq6qqEq75VVdX29nZSaR/8MEHUVFRRHT16tWSkpKuXbsattJ4f0n0h0dFk/tX0OTxItY+
JvV/U9utbdu2PM8LjU93O4BhrJORkSHEuXHjxhdffFFi2kIsHgsLi+HDhyckJGi1Wp1Ot2jRookT
J5rTmtDSmuyfdXV133///fjx44U8o0ePTk1NFS7PiB3X1FQ/kThvANwnf3UvhUJx+fJlIuI4TqvV
Sq8mnPUUCsXVq1cbv3vp0iVhoa6uzrwerFAoWJY1FF5/K8KF02PHjtXP36FDB47jVCqVcK5nGKau
rs7Ozk6o0bVr14RsPM8/tEeUVqtNSUlJSUmRy+WBgYEqlWrQoEG1tbUS9bp/xPavg4MDwzCG68nV
1dUsy3bo0IGIbt++TUR6vb62tlZYEAZhYumenp4hISF2dnY8zzs7O9efBm28vyT6w6Oiyf0r3A7V
5PEi1j4m9X+GYUxqtxs3bnAc17Zt2z///JOIhLuJq6qqhHcrKyuFhUuXLnEcZ2NjY9hTDYjFI5fL
WZb9448/DPUVPimh1Yn1z++++27fvn0ODg41NTWDBg0aOnSokF/suKam+omtrW2T5w1DToAWd+d/
r+Dg4ISEhO7du6tUqpSUlK5du6pUKg8PD7HVTp8+ffPmzf/3//6fIWXhwoXdunVrqbCuXr2q0+kM
/wp06tSpQYaampr6L6urq3menzRpkre3t7e398svv+zh4XG/RwAtqEuXLqNHjxaWb968GRcXV1NT
061bt9aql9j+raqq0uv1Dg4OQqKDgwPP82bMncvl8oSEhJ07d7755pv+/v7N3gvSbH94yIntX7H8
zbaPkf3f1HY7efKkXq83HPg9e/asra0V7pkgIoVCISzY29vX1dVJ3PslFk9VVZVOp+vYsaOQzdra
ugVPGmA2if558eLFn376KSAgwM/P79ChQxcuXGi2tMb9pKXOGwDGuzO4SUhIyM3N/fjjj0NDQzUa
TVRUVGhoaHFxsdhqNTU133333YwZM1xdXa2trWfMmPHKK68Y0+/F6HQ6Kysrw0ue54uKisaNG8cw
jKOj47Bhw6RX53k+IyNj8uTJwly+n5/frFmzzA7mwZPJZFFRUSNHjuQ4juO40aNHMwxz/PjxZuvV
oN1aitj+ra2t1Wg0kyZNYlmW47jAwMCdO3cK/52bxNbW1tLSsqCggIh69+7ds2fPtm3bSuQ3tT88
bMT2r1h+M9qnyX5iartVVVXt2bNn1qxZTz755BNPPDFjxowff/zRcL3H19fXxsaGiEaPHn3gwAHh
JlOT4qmtrd29e3dISAjHcSzLhoWFLVmyxLDWjRs3nJ2dGYaRy+Xt27eXDhVakHT//Pbbb8eMGRMQ
ELB+/XpjSmvcT5o9b9yn8xj8nf01a+7m5nbixAki8vLyys/Pb3bNpUuX7tixIykpqaCgoFevXm+/
/bZhqr4xGxubvLy8vLy8RYsWPfPMM8Lyq6++ashw9OhRa2vrw4cP5+XleXl5EdHcuXNdXV3z8/Pj
4uI2bdrU7HRSREQEz/MajSYnJycgIODRuj2tvLx88uTJEydOLCgoyM/P9/f3DwoKEq7ZStercbu1
FLH9Gx4ezrKsRqPZs2ePVqsVblY1VWVlpUqlSkxM3LRpk4+PT3R09KhRo8aNGyexiqn94aEisX+b
ZEb7iPUTU9tt9uzZZ86c2b179+7du3/99Vfhh6+ISNjpiYmJ2dnZ3bt3nz9/vnQ5YvHMmTOnrq5u
7969Bw4c6NKly/vvv29YJTk52dXVtaSkJCsrS7qy0LKk++eRI0euXLmiUCiM+f6aWD+RPm/cv/MY
AACA+VJTUw13nsJjZuXKlUFBQa0dBQAAwP1nbW0t3EDTu3fv48ePu7i4tHZE0PL69euXm5tr+K1q
AACAx5lSqTx48OAvv/ySlZUl8bNY8OhKT0/PzMzs06dPawcCAAAAAAAAAAAAAAAAAAAAAAAAD4yT
k5PwsxZyuXzVqlWtHQ4AAACAyf7n0XcuLi7C0/iUSmVZWVkrhQQAAABgvoaDG+H5fEqlsv6DDAEA
AAAeFXee4+rh4TFlyhR3d/eTJ09qtVoXF5czZ87s2LEjNTW1deMDAAAAMF9ycrKwkJSU1LqRAAAA
AJjnr2kphUJx+fJlIuI4TqvVtl5IAAAAAOa7My0VHBw8ZMgQGxubc+fO2draOjo6VlRUxMfHFxcX
t258AAAAAGaaOXOmu7s7EQUGBg4YMMDItVQqVXx8/KObbqqHLX7Ut3XTTfWwxY/0xzvdVA9b/EhH
utnpMsOSm5vbihUriMjLy+uHH35ovH6T7O3tm5zDelTSTfWwxY/6tm66qR62+JH+eKeb6mGLH+lI
v5d0AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAeIg5OTktXLiQiORy+apVq1o7HAAAAACT
sfVfuLi4lJaWEpFSqSwrK2ulkAAAAADM13Bwc+rUKSJSKpXCAgAAAMCj5c6DMz08PKZMmeLu7n7y
5EmtVuvi4nLmzJkdO3akpqa2bnwAAAAA5ktOThYWkpKSWjcSAAAAAPP8NS2lUCguX75MRBzH4RlU
AAAA8Ii6My0VHBw8ZMgQGxubc+fO2draOjo6VlRUxMfHFxcXt258AAAAAGaaOXOmu7s7EQUGBg4Y
MKC1wwEAAAAwx1/TUm5ubidOnCAiLy+v/Pz81gsJAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAMAM7YgWcqxGxmlk3Bcc2/Fu+g4Zt/fuX6aMy5ZxzRblzzIZMm6fjFNx7D/u/MYyyYmi
OHafjNsn4xZwrDUREQ1nmFUcG8+x/2QYImKJVBzrwjCiRbc0H4YplHG2Tb01nWULZVyH5kroQPQ5
x26Xcdtl3CKObX83vT3RIo7dLeP2ybhwlrUkooegvgDwiBo2bFhZWVl2dnZ2drbwg64SevXqJeQs
Kyvz8fF5MBG2IrVa7e/vb3x+hUKxfPnygoKCgoKCuLi4Tp063b/YoEls81layCcca030hpZ/XcsT
0WzuzqaHa/lBd/9+1Om36/TS5fRnmECWfY/nB2v5U3oKYe6U8yHLKoh8tfzrWr4j0QcsS0RTOHY2
r0vV6ScwDBFNYJkiPZ3SN7OJFmFHNJ5lPuSabuHnGaafcWOOeRx7TU9vaPk3tLyW6NO7Bc7jWJbo
dS0foOWfYyiktesLAI+6//znP97e3t7e3iUlJdI5jxw5IuS8cOGCGRtiHrL/uFo8ngULFsjl8lde
ecXb25uI5s+f37LlQ7Me3ODmsF4fq9PdIrpN9JNO340adqbuDDOMZeJ1OulyxrLMtzrdf/SkI1qu
083X6YiIJXqNZeJ0+ptEfxKpdPphLMMQtSP6k+gyUQeGnBl6lWESmyu/RVgSpci4bsSE801szoro
U5aJNi6SZxkmR6/XEemI8nT6fxJDRDKilxhmnU5fS3SJKEmnH8Yy1KL1VSgUMTExe/fu1Wg0S5cu
tbW1JaLhw4cnJCSsW7cuOzv7jTfe2Lx5s1qttrCwIKLOnTsnJydnZ2cfPHgwKiqK4+5cgWvXrt2i
RYuysrJycnLWrVvn5OQkpNvZ2a1evXrfvn2ZmZlJSUlPPvmkeXE+KtCe8Hc2YsSILVu2uLu7b9u2
rbi4+McffxTSmzwuJIj1c7FyxI4jsXjEji8ieuKJJzZs2JCXl7dt27Znn31WOs78/PzPP//85s2b
t27d2rFjh4uLi4kNBvfqwQ1uNuv0/7l7BWEgyxxudDkhjGW+0emuN1eOG8PIiJI4druMW8qxwsW+
JxiyJjpzt8wzer0NkQNRpZ6cGOrK0P/pKZxlF+n0D+Zx57VEr2v5BTrdf6mJqyYfsGyaXv8f4y6o
7NfpX2MZSyJLogEss1+vJyI9kb7ezrtB9ASRZYvWNyoqytLScsiQIUOHDpXJZOHh4URUV1f30ksv
hYWFFRUVjR8/PiAgwN7e/vnnnyeiefPmnT9/3tvbe/jw4YMHD/b19TWUY2VlNXjw4P79+587dy4u
Lk5IDw0NvXTp0quvvjpw4ECNRjNo0CBzI300oD3h76yiosLFxWX27NkfffSRh4eHYYqnyeNCglg/
FytH7DiSiKfJ44uIhg8fHhYW9uKLL5aXl4eFhUnH+d133/3666/C8pAhQ/Ly8kxoLHhEvcey2zjO
7n8Tn2OYvTLOyojVC2TcWo7tSGRJNJ9jEziWiJ5lmAIZR0TrOHYtx1oSFco4Z4Y8GWY1xy7l2Fks
G8i2woXQfzDU4J4bL4ZZzbEMkR2RMffc2BClcGy2jPtZxn3DsTZ305dz7BccKyfqSBTLsYUyzoZa
rL4ymaysrOy5554TXrq7ux8/fpxhGB8fn4yMDCIKDw+PiIggoq1btw4ePJiI2rRpY2V1ZweuXbtW
OPgtLCzKy8tdXV2FdAsLCxubOzUIDQ1NT0/v37+/Ya3HGNoTHn7Dhg3TaDSmrpWZmWnMPTeOjo6n
T59+7bXX6ieKHRcS5TTZzyXKafI4EotH4vhSq9UhISHC8siRI7dv395slQUffvhhVlaWvb29kfmh
pcge5MYsiOZw7D+JJvH8lf99awzLZOj0t40o5DpRqk5fTUREa3U6Nce1JbpJeobIhmivXq8nEgYT
N/VUSPpCXt+VYT5lmc91tIxjZURpOv2+VroNpS3RTJaZwTd3Y9FdDFEsx+bp6V2eJ6J/s+wqjn2X
1xFRFK+bzbFbZVylXq/W619gmJtEhfqWqW+HDh04jlOpVDzPExHDMHV1yatgEwAAIABJREFUdXZ2
dkR0+/ZtItLr9bW1tcKCcBLx9PQMCQmxs7Pjed7Z2fnUqVNE1KlTJ5Zl//jjD6HYurq6uro6Yfnr
r7+uq6ubMWOGUqk8dOhQZGSkeZP3jwS0J/zN6XQ6Ijp27Fj9RLHj4vLly2LlNNnPJcpp8jgSi0fi
+CKiS5cuGdJlsuY/Oi0sLBYvXty9e/cxY8ZI1Ajukwc3uLEk+pJja4iCeV2DQQxL1J9hZht3d8hZ
vb4dQ8JsD0ukJ+KJ/qunm0TPMswGnZ6IXmSYa0RVRETEEYWzzEKdLphlM3T6fL1+k4zbp+VbtnZG
6s0wDgyTIOPo7qRSioxbyOtyRAYf7Yl6MsxnwiFLpNbrAllOQXSV6BLRp/ydJnuTZU7p9cJyi9S3
urqa5/lJkyaVlpYak18ulyckJERGRv7www9ElJCQIKRXVVXpdLqOHTtWVlYSkbW1tZOTU3l5ORHp
dLrExMTExEQbG5uwsLBVq1aNHDnSpCAfIWhPACKqqamp/9LU44JE+rlYOWLHkVg8EseXqdq0abNm
zZqampqxY8feunXLjBLgHj24e24+Ylki+rjRyIaIujJMO6JjTX3AL+PYpf/7haPNOv1bDOtIZEEU
zLL5ev1tIh3RTp1+MsvYEimIQlgmTXenuEksk6nXn9WTBdFNottEzX/X/L7J1usHa/nXtfzrWn6i
lieit7V8/ZFNg/peIqoieu3uBNNghvmd6CoRES3l2JksyxI9zdAkhv3+7sWgFqkvz/MZGRmTJ0+W
yWQsy/r5+c2aNUsiv62traWlZUFBARH17t27Z8+ebdu2JaLa2trdu3eHhIRwHMeybFhY2JIlS4RV
oqKihg0bRkQ3btwoLS19vI9/tCc80lQqVXx8fIsXa+pxQSL9XKwcseNIjMTxZap58+YR0dSpU3Ek
tpYHNLiRE73JMs8zjKber9pY333XkegaUU1TKyqIFP+bslOv36XXp8i4nTKuLVHk3a8jfaXTVRGl
y7g0GXdaT2t0OiLqzjC9GWajTk9EG3X6d1kmhmO/fiBfmNoj4/bKuPUcR0RqGbdXxg0y4tuGDeqr
J5rO6/owjJrj0jjuBYYJu1vf5TqdkqGfZNwajvtBr9ul11OL1jciIoLneY1Gk5OTExAQoFarJTJX
VlaqVKrExMRNmzb5+PhER0ePGjVq3LhxRDRnzpy6urq9e/ceOHCgS5cu77//vrBKampqUFCQRqPZ
vXu3r6/vZ599ZkaQjxC0Jzy67O3tFQpF8/lMZ9JxQeL9vMlyJI4jMWLHl0nkcvnYsWM9PT3z8/OL
7pLL5WYUBQAAAOa7rzcUAzxgD/SGYgAAAGmLFy9uMv3TTz99wJFIe1TiBAAA+JsSHr+Qk5OTk5PT
s2dP6cy9evUScv5NHr8AAAAAAAAAAAAAAAAAAAAAAADwmGvFH7R7JH366ad9+/Y9ePBgawcCAAAA
TXtwv1AMAAAA8ABgcAMAAACPFQxuAAAA4LGCwQ0AAAA8VjC4AQAAgMcKBjcAAADwWMHgBgAAAB4r
GNwAAADAYwWDGwAAAHisYHADAAAAjxUMbgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAemHZECzlWI+M0
Mu4Lju14N11OFMWx+2TcPhm3gGOtmyunPdEijt0t4/bJuHCWtaz3lj/LZMi4fTJOxbH/YIiIhjPM
Ko6N59h/MgwRsUQqjnVhmJav3kNPrVb7+/sbn1+hUCxfvrygoKCgoCAuLq5Tp073LzYAAGgR+LbU
g/YJx1oTvaHlX9fyRDSbu7MLPmRZBZGvln9dy3ck+oBtZtfM41iW6HUtH6Dln2Mo5G7+/gwTyLLv
8fxgLX9KTyEMS0RTOHY2r0vV6ScwDBFNYJkiPZ3S6++9OsxDNkJq8XgWLFggl8tfeeUVb29vIpo/
f37Llg8AAPDIC2CZZ+5+/r7GMGkcR0Qs0c8yTnn3g/l5hsmScRKf0jKiPBnX7W5+H4bZLuOE5ZUc
O5ptuOp+GUdEHgzzFcc6M5TIsTJz4x8xYsSWLVvc3d23bdtWXFyclpYmpCsUipiYmL1792o0mqVL
l9ra2kqXY2dnt3r16n379mVmZiYlJT355JPS5XTu3Dk5OTk7O/vgwYNRUVEcx0nH065du0WLFmVl
ZeXk5Kxbt87JyUlIV6vVU6dO3bBhQ15e3rZt25599lnpOCdOnNi1a1fDtjIzM01rLwAAgL+VxRw7
j2WJ6B8MFco4w9RSO6JCGScx/8ERHao3GHqJYQyr75Nx41kmiWO3y7ilHCsUkspxTgyNYplZLLuW
Y5+9h8sbSqXy+PHj69evVyqVRGQYZMTGxsbGxspkMo7jli9fvnjxYulyZs+evXDhQmF5woQJb731
lnQ5KpUqOjqaiBQKRW5urp+fn3Q8K1asWLZsmUwmY1k2IiJCrVYL6Wq1OiMjw9HRkWGYL7/8Mi4u
zvi6x8bGLlmyxPj8AAAAfy/vsew2jrMjIqJnGaZAxhHROo5dy7GWRIUyzllyBLKcY7/gWDlRR6JY
ji2UcTZERFQg49ZybEciS6L5HJvAsUTkyTCrOXYpx85i2cBG13VM4ujoePr06ddee61+okwmKysr
e+6554SX7u7ux48fl54hCg0NTU9P79+/v5WVlTHltGnTxpBz7dq1YWFhEvFYWFiUl5e7uroaXtrY
CM1DarU6JCREWB45cuT27duNrPiHH36YlZVlb29vZH4AAGgtZs9OwF9++P/s3X1cVVW+P/DPWmsf
Ho7AARXMK17RfMi62fSSYjLzTqWTD9wwoTRvd5pUbKYclenBAU0tEksNy9IkkX6p+YgjRyJFBI1R
EkXLcXol2tzbw9SEoCIqIoe99++PrQwq5yCIkPR5v/hjn3XWXuu719n77K97r31ct866u1FcXDx2
7NgGy23ADCVvBsbpejkAoBKmAPyAXNM0AetOTKXHKTGJujFNyT9rqsQ0naZ5txCVAIDTwHrDLAMA
vGcYTqXaAUWmWaSbPYSIl+J1A8lKakCGYeaZZmPjNwwDwF//+te6wXTo0EEplZKSous6ACGEy+UK
DAw8efKku/iXLVvmcrmmTp3ap0+fPXv2zJ49+/vvv/fQTnh4eGxsbGBgoK7rYWFhhw8f9hBPSEiI
lPL48ePWS5fL5XK5at89ceJEbbmmNXwI2Gy2uXPn9u7d+7HHHvOwRURERG1HYGBgcHBwcHBwYGBg
g+VewNtKLlDSp05NCeRr6hcXL3X8Uog8j3NuateyjJTi/12cmJym5KiL12a6CuzTlNWRAlKVDBN4
VckHhfAHtl6cptOo+IODg//+979fdgFDKXXkyBHrxlBj+fn5vfTSS5s2bfLQjt1u//LLL0ePHm29
TE1N/eMf/+ghHi8vr6NHj952223WS19f3169elnLdZ+WioyM3Lp1q+fwvL2933///aVLl/r6NvgE
GxER/STwaalmUF5eXlpaWlpaWl5e3mD5C1ICeFE3qurUNIAthjlRCn/AAcRKkWFc8ixTspLz1SUf
1nwl/yilBP5dYJyQa40L1dMN8wkhOwE2YIKUe03T6micFDtM82sTNqASqAJUk+Kvl67rWVlZEydO
tOa4REVFPf/8855XSUxMHDZsGIAzZ84UFxefO3fOQzv+/v5eXl779u0D0L9//379+rVr185D49XV
1dnZ2bGxsUopKWVcXFyT58rMnDkTwLPPPmtFSEREP328LdWi7MBIKc4BOVptaoHIGv0c8KZh/EnJ
TE2ZQI5hLjWMuis6AP3SphYaxstSbtdUFfChYWy9mAttMc1Q01ypKQl8bpqzdQNAbyH6C/GMbgBY
Y5i/l2IMxLJLu7hGs2bNmjFjRk5Ojq+v79GjR1955RXP9devXz9r1qw//vGPhmGUlJRMnz7dQzsl
JSUpKSlpaWmlpaX79++fM2fO7Nmzjx49unbtWnftz5gxY/r06bm5uV5eXl988cWkSZOasFF2u330
6NHnzp3bu3dvbeF9991XWVnZhNaIiIiIiIiIGu2n9Qts1Ma4eyA8Pj6+hSPx7EaJk4iIiIiIiIiI
iIiIiIiIiIiIiIiIiIiIiDxSDVchukJ8fPyAAQN2797d2oEQERFdjr9QTERERG0KkxsiIiJqU5jc
EBERUZvC5IaIiIjaFCY3RERE1KYwuSEiIqI2hckNERERtSlMboiIiKhNYXJDREREbQqTGyIiImpT
mNwQERERERERERERERERERERERERERERUaPEx8e/+OKL19JCeyBJyWxN5WkqQUqvhuoHAK8qmaOp
HE3NU7Ljpe8OEaJIU/4XXw4X4h0l31XyZiEASCBFyVuEuJaAW15MTMyUKVOusrLT6YyOjr76xh0O
x8KFC/ft27dv377FixeHhIRczVqxsbE5OTlX2UWj4m8u4eHhBQUFBw4ccDqdLdw1Ef108Gkpah0z
lZTAf9XoMTX6fwjEygZ2xT8p6Qs8XKP/V40OYJq6UD8QeFyK59Qlq/9eyWm6sd4wxwoBYKwU+00c
Ns1rD1u0YIbUt2/f69f4K6+8Yrfb//M//3PQoEEAXn755atZy+l0Tp48+Sq7uJb4mzzORUVFAwYM
mDNnTpO7JqI2gMkNtQINuEeI5YZZDZwA3jfMYbKBk9kB01xkGOeAKmC7YfaCAOAFrNRUL4gE3ahb
OQA4C5wEOgiECTwgRJphuGm4ASNGjNi4cePtt9++efPmzz//fNOmTVa5w+FYsGBBbm5uTk7O/Pnz
/f39PTQyfPjw1NTU5cuX5+fnP/zww+np6U6n02azAejSpcuKFSvy8/N3796dmJiolLJWSUlJGTt2
7IQJEwoLCwsLC60UBEBAQEBSUtLOnTsLCgqWL18eGhpa28tNN920evXqwsLCzZs39+zZ0/N27d27
9/XXX6+srDx37tzHH398yy23eK7/yCOPFBYWZmdnL1q0qG55Zmbm+PHjly1blpGRkZWV1adPH8/x
uxs3d+Psrn1340ZERNRE13hbSgF7NNXn4r/O7xGiSFMN3pmqNVfJmZde6fk3gbq3pdYrFSowSorn
pXxPyZ7XcLmlT58+X3zxxapVq6zTau1JdNGiRYsWLdI0TSm1cOHCuXPnemhkyJAhX3zxRUBAwMKF
C9esWQMgPz8/PDwcQEpKinWZweFwfPrpp1FRUbVrLV68+MrbOm+99VZycrKmaVLKWbNm1d58cTqd
WVlZnTp1EkK88cYbixcvvvptXLRo0WuvvXY1NYcNG3bZbSmn0/nnP//ZbrcDmDlz5rvvvus5fnfj
5m6c3bXvYdwAREdH87YU0c+Z1toB0M+RDnxqmuOlmK2bduBxeeEyTPVVrPuMlLdB/MbQPdSZZxgJ
Up4FSkx8appfXcMNqfLych8fnxUrVhQXFwPQdR2ApmlDhw4dNWpUTU0NgLS0tLVr1yYkJJjuO/r6
668rKipKS0vLy8sBlJWVBQYGApg8ebJ1C+bUqVOHDh3q0aOHh2BsNtvw4cOjoqKsfpOSkry9vWvf
zcjIKCkpAbBr167x48df5QY+99xz/fr1e+SRR66y/pUyMzMrKysBHDx48O677/ZQ08O41TvOHtpv
1LgR0c8NkxtqNuvWrbPuhhQXF48dO9ZzeaJuTFPyz5oqMU2nad4tRGVD7duAGUreDIzT9XKPNYtM
s0g3ewgRL8XrBpKV1IAMw8wzzcbGaRgGgL/+9a912+/QoYNSKiUlxToHCyFcLldgYODJkyfdhVRV
VQXANM3q6mprwTo3h4eHx8bGBgYG6roeFhZ2+PBhD9sVEhIipTx+/Lj10uVyuVyu2ndPnDhRW65p
DR/aNptt7ty5vXv3fuyxxzxE3qCKigprQdd1z/16GLd6x9lD+40aNyL6uWFyQ83m6aeftuaR1D3j
uis/AcTrFybCjJTisGl6nhTjBbyh5Hlggm5UXUUwCkiQ4lXDmCBllmHuNc0Nmsqr0Rsbp+X8+fN1
X5aVlem6Pm7cOOsyQ5PZ7fbU1NTZs2evW7cOQGpqquf6paWlhmF07NjRukLj6+sbGhp69OjRJnTt
7e29dOnS8+fPjx49+ty5c01ooQkaHLfLxtmdxo4bEf3ccEIxNZvy8vLS0tLaOy+ey+cr+UcpJfDv
AuOEXGtcckMnWcn5lz4A9YKUAF68uswGwDgpdpjm1yZsQCVQBdTOOG1UnPXSdT0rK2vixInW3Jeo
qKjnn3/+6uK6hL+/v5eX1759+wD079+/X79+7dq1q333zJkzYWFhQgi73d6+fXsA1dXV2dnZsbGx
SikpZVxc3FXOlbnSzJkzATz77LPXL7O5Mv6WGTcAhmH4+Pg0y1YQ0Y2IyQ21joWG0Udgu6aWKrXO
NLZeOlvFATjqvLQDI6W4Q4gcTeVe/PMFAGzTVK6mVikFwKmpXE09KERvIfoLscYwAawxzN9KsUDJ
ZU19YKpes2bN0nU9JyenoKAgJiamadNXS0pKUlJS0tLSNmzYMGTIkDlz5owaNWrMmDHWuytWrLj1
1lsPHTq0c+fO2sIZM2a4XK7c3Nxdu3Z179590qRJTejXbrePHj06PDx87969+y+yJu3Wy8/Pz3ro
KSkpqVu3btbyAw884LmXeuNvgXEDcPDgQV9f3wMHDhQWFt51111N6IKIiH52rv1H/IiIiK4Tzrkh
ajbuHgiPj49v4UgsjY3npxY/ERFRy+GVGyIiIiIiIiIiIiIiIiIiIiIiIiKiNoL/lS41RXx8/IAB
A3bv3t3agRAREV2OP+JHREREbQqTGyIiImpTmNwQERFRm8LkhoiIiNoUJjdERETUpjC5ISIiojaF
yQ0RERG1KUxuiIiIqE1hckNERERtCpMbIiIialOY3BARERERERERERERERERERERERERERFRC5MB
CExEp23otA1Br0N2bKC+sCMwEZ1y0SkXgS9D+F4oD5yNm/6CTtsv/AW8AAC+w9H+bXRYAu1mqzN0
WArbLddxc65GTEzMlClTWjmIFtQC2xsbG5uTk3M1/Tqdzujo6EY17u3tnZycvH///i+//LKoqKhr
164AwsPDCwoKDhw44HQ6ryXyn6Cf1P7Zrl275OTkAwcOHDhwYMGCBXa7vbUjohsMn5ai1hEwDcIX
x6Jw7GEAcExrqP4fIQNw7L9w7GHIYARMvlAuAnD6XZQMvvBXMR8A/H+Hk3/C2fVo9zgAtBuL6gNw
Hb5+W3NV+vbt28oRAEKIFmu/BbbX6XROnjz5ssLm6vdXv/rVwIEDIyMj+/btGx4e/t133wEoKioa
MGDAnDlzmqWLn5RrGbdm369mzJgRGBh43333DRo0qFOnTtOmNfQFQUT0U2CPgdbtwrLvEIRs8lhb
4qZ82PpceOV1B27aAQgA6LAMvpGXV79pJwB4/QLtF0ILQ4flgNbEOAMDA5csWZKXl7djx47333+/
c+fOAB555JGdO3fWfqELIT755JOHH34YQGZm5vjx45ctW5aRkZGVldWnz4WgU1JSvvzyy0OHDhUW
FhYWFg4aNMgq79Kly4oVK/Lz83fv3p2YmKiUAmC327dt2/boo49adZ566qnMzEwvLy8PcWZmZk6Z
MuX9999PT09PT0/v3r27VT5ixIiNGzfefvvtmzdv/vzzzzMyMqzyoKCg5OTk3Nzc3Nzct99+u2PH
jp7bcTgcCxYsyM3NzcnJmT9/vr+/v+f2691eD+NWr/T09FGjRtUteeSRR9avX28tFBYWfvbZZ5dd
uXE3zk6n89lnn129enVhYeHmzZt79uzpYTBDQkIKCwsPHjxYXFxstZOfn1+3QnR09GVXbur9HAF0
69Zt3bp1u3fvXrNmzZNPPrl161arvN79yoOAgICkpKSdO3cWFBQsX748NDTUKvfwOda7H7rr1924
Xe/9ql5KqUOHDt16663Wy/79+3/++efXOy8nImpmQXPheMlTBfVv6LwP4uLJXQag8z6oEAAIXof2
CxGcjpAsBM65cHsreD1UKOyPIOA5dHgPmqcTWQOmTZv26quvWstjx4594oknANhstsLCwoEDB1rl
99577759+2w2GwCn0/nnP//Zuoo+c+bMd999t7apxYsXX3nZPyUlxboM4HA4Pv3006ioKKu8d+/e
e/fu7datW9++fffu3fvv//7vnuN0Op0fffSRr68vgLi4uJUrV1rlffr0+eKLL1atWmWd3mpPukuX
Ll24cKGUUkq5YMGC9957z3M7ixYtWrRokaZpSqmFCxfOnTvXc/v1bq+HcatXUlLSCy+8AMDf399K
p1588cXExMTaCsOGDbvytlS94+x0OrOysjp16iSEeOONNxYvXuxpNAEAo0eP3rhxY71vXZncuPsc
09LSkpKSAHTq1Gn79u0fffSRVV7vfuXBW2+9lZycrGmalHLWrFm1vXv4HOvdDz30627crut+Va+u
Xbv+/e9/9/b2tl46HI6///3vN910k+chIqqLt6Wolfk/A9utOP22pzrCDpgwq9EhFR1SYFZdLASq
P0f1IZT9BmVjILwQ9BoAnJoHRzy8BwDA+QLUfNX08MrLy++4446BAwf6+PisXr161apVAFwu19q1
ax9//HGrzqOPPrp+/XqXy2W9zMzMrKysBHDw4EFrooYHkydPts7Wp06dOnToUI8ePazyI0eOvP76
62+++eabb7750ksvffvttw2GumXLlnPnzgHIzs6OiIiQUlrx+/j4rFixori4GICu6wC8vLwGDx6c
mppqGIZhGCtWrLj//vs1TXPXjqZpQ4cOfe+992pqanRdT0tLe/jhh61/Sdfbvjuex+1KR48etQZk
1apVH3zwAYBevXpZHTVBRkZGSUmJaZq7du3q1q1bwys0hrvP8e6777YypJKSktrLG3CzX7ljs9mG
Dx+emppaU1NjGEZSUtJ///d/o6HPsd79sFH9Wq7ffuWuR7vdbprm+fPn169fv3r1amutdu3aNRgq
Ua2mXqwnusK6deusq/3FxcVjx45tsFzY4JgO7WaUjYdR7qllsxIQEH6oygMMCH8AMM8CwKm5F+sA
pxch+M+QQaguwokiaD3g+BNOzUPQGxAaKp2oymt0nMuWLXO5XFOnTu3Tp8+ePXtmz579/fffA/jw
ww/z8vKCg4PPnz//4IMPDh06tLadiooKa0HX9dpvdnfCw8NjY2MDAwN1XQ8LCzt8+F8zgzIyMv7w
hz9UVVVt27bNcyOW48ePWwunT59WSvn7+586dcowDAB//etf69YMDg4WQpSVlVkvy8rKpJQdOnQo
KSmptx0fHx+lVEpKinUOE0K4XK7AwMCTJ0/W274HHsbtSkeOHBkzZkzXrl3PnDljs9k6d+7cq1ev
2osBjXXixAlrweVyNfi5NFa9n6OPj4+vr+/JkyetOv/85z9r67vbr+oVEhIipaz9XFwul5URev4c
690PG9Wv5frtV6dOnaq3x8rKSiGEv7//1q1bDcNwOBwAzpw54zlOorqY3FCzefrpp61bDJf9W7ze
cuGFoAUwz+N47IUrMR7oP8KshK0nzq4GAO9fwqiAXgbhBe8BOF8AsxrApbuzgiMep+bAbzzOfYzq
vQhefyG5aVSchmGkpaWlpaX5+fnFxcW98847jzzyCIBjx45t3749JibmzJkze/bsafAMUS+73Z6a
mjp79ux169YBSE1NrfvulClTiouL/f39n3nmmau5jRIUFGQttG/fvqampvbcBuD8+fN1a5aWlpqm
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
9gIGCFFgmtUA6uy1duC/pVhnmBXAP4HFuvGxpjoCpYACEqR41TAmSJllmHtNc4Om8mr0RsVZVlam
6/q4ceOKi4uvjGrKlCnFxcX+/v7PPPOMdTXFXf2zZ88ahtGxY0crX/H19Q0NDT169Kjn8XQ4HNZC
UFCQy+U6ffo0gGPHjm3fvj0mJubMmTN79uz5/vvvPbTgOf4rlZaW1htnaWmpaZrBwcFWeXBwsK7r
Vq5jGEZgYOB3330HICQkpGn9EhE1L865oWZTXl5eWlpaWlpaXl7uufwEUAr8+uINo8FC/PPSzCZZ
yfl1bjzVAHFS/k5KDfADJkm51zRPApXAr4X8nZRegAbESFkGWJcdxkmxwzS/NmEDKoEqQDU+Tl3X
s7KyJk6cqGmalDIqKur555+33ho4cOCoUaOmTZsWFxf35JNPRkREeKhfXV2dnZ0dGxurlJJSxsXF
vfbaaw2OZ2RkpHVX6NFHH921a5d5cVrSBx988Nhjj8XExKxatapu/TNnzoSFhQkh7HZ7+/btPcdf
L3dxVldX5+TkjBs3TkqplHrqqae2bNmi67qu6/v37x8zZowQolOnTsOGDWtw3IiIiH6irn3OTW8h
lijpVCpDqSVK9rx0QsZyJd+7dFZNd4ElSuZpKk9TrygZdLE8VCBZye2aytPU0os/ZtNbiKXqwi/h
/EKIFCXfUvKxJk2+CQgImDdv3o4dO/bs2bNy5cpevXoBCAkJ2bNnj5XQABg8ePCnn35qPUBUb30A
gYGB8+fPt55CWrZsWefOnT33m5mZOXny5PXr1+fn569bt65r16513920aVPdx6Yst912W3Z29t/+
9re9e/c+88wzHuL3wF2cQUFBb775pvW01IIFCwIDA63yXr16bdq0yXqka+LEiU6ns2n9EhERtbJr
T27oWrz99tvjx49v7SiIiH6iOOeGqNXMnTu33vL4+HgPa917773h4eHX8nB10/olIiJqy3jlprVk
Zmbu2LGj9o4YEREREREREREREREREREREREREdG1Ug1XIbpCfHz8gAEDdu/e3dqBEBERXY6/UExE
RERtCpMbIiIialOY3BAREVGbwuSGiIiI2hQmN0RERNSmMLkhIiKiNoXJDREREbUpTG6IiIioTWFy
Q0RERG0KkxsiIiJqU5jcEBEREREREREREREREREREREREREREVELE3YEJqJTLjrlIvBlCN+GV7FH
I+QjdMpFh6VQnS8UyvYInINOW9EpF44ECC8A8B2O9m+jwxJoN1uV0GEpbLc0Jc6VK1d+9dVXR+rw
9/e33vL29k5OTt6/f/+XX35ZVFTUtWvXpnTQSOHh4QUFBQcOHHA6nVdTTkRERC3EMQPt34KwQ7RD
+yVwTGugvvdAhGRC6wZIBExF4KwL5e0XImguhBdke3RcDf9nASBkM0Q7+PwKjhkA0O4J+E9sYpwr
V66cMmVKvW899NBDe/fu7dy5c73vXlfR0dH1JjHuyomIflb4KDi1BgnfX+P0EpiVMM/iTAp8hwLC
0xrtHsOZD1DzDWCg4k2UvwwA0OB9D86kwayGcQJn0uA7FABkAMyzMMqhOkALg8/9OJ3WnOGHhIQU
FhbOmzfP4XBkZGQUFhbm5+dbbzmdzujoaGs5MjJy69at1nJmZub48eOXLVuWkZGRlZXVp08fqzwg
ICApKWnnzp0FBQXLly8PDQ21yrt06bJixYr8/Pzdu3cnJiYqpZpzA4iI2jQmN9QK1E0Qvqj5vwsv
a/4Pwg8q2NMqttsgNHRMQ0gmguZDhQAATMD8115snoW6CcIL+jGoUGjdUfMPOBJwai5Q05zxHzt2
LCIiIikp6W9/+1tERERERMSgQYM8r2IYxogRI6ZMmTJy5MjCwsKpU6da5YmJiT4+PoMHDx44cOC3
3367ePFiq3zmzJnffffdoEGDhg8fPnjw4MjIyObcACKiNk1r7QDo50jYARNmNTqkAjpO/OFioXvS
Hz4P4MSLMCvgSEDgHByPBXSc/xR+41E+G8KOdo8DALxwah4c8TArof+I8wWo+aoFtqlhmZmZlZWV
AA4ePHj33XcDsNlsw4cPj4qKqqmpAZCUlOTt7W1Vnjx5shACwKlTpw4dOtSjR4/WC5yI6AbD5Iaa
zbp163r27AmguLh47NixHsrNSkBA+KEqDzAg/AHAPOupceM0zq6HUQYAp5chJAOiHcyzKH8VjhcR
shF6CSo3w/sumJWoLsKJImg94PgTTs1D0BsQGiqdqMprXJyWyZMnT5482VouKyuLiIho2vhUVFRY
C7qua5oGICQkREp5/Phxq9zlcrlcLms5PDw8NjY2MDBQ1/WwsLDDhw83rVMiop8hJjfUbJ5++mmb
zQag9gztrlz/EWYlbD1xdjUAeP8SRgX0Mk+N13wDGXBhWUjABHQAME7gZAJgAIB9JFyHLyxDwRGP
U3PgNx7nPkb1XgSvv5DcXH2clkWLFr311ltXOQi6rtfOj6l9rsqd0tJSwzA6duxYUlICwNfXNzQ0
9OjRo3a7PTU1dfbs2evWrQOQmpp6lb0TERGY3FAzKi8vv9pyA+e2wG8iyqcBEn4TcM4JmP96P+gN
wMDJF/5VUpkOvwk4vxvGCfiNx/m9MKsAIGg+9B9RsRBaF/iNw+klF+r7PYWqnaj5GsIGsxJmFXBx
Sm4j4my8H374oXfv3gBsNtuIESM8V66urs7Ozo6NjX3uuedM04yLi+vfv390dLS/v7+Xl9e+ffsA
9O/fv1+/ft98803dFQ3D8PHxubJBd+VERD8rnFBMraPiLRjHELIZwZtQ8784vfSSd6XjX9dpLOe2
oGorOq5AyMcQ7XDq5YvtLIStDzrloP1SnF2Hc1sBwNYL3v1xdg0AnF0LvycRNB+nl7XAZmHJkiUD
BgxIT09fsmTJjh07pGzgEJsxY4bL5crNzd21a1f37t0nTZoEoKSkJCUlJS0tbcOGDUOGDJkzZ86o
UaPGjBlTu9bBgwd9fX0PHDhQWFh41113NVhORERERERERERERERERERERERERERERERERERERERE
RERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERE
RERERERERERERERERERERD99Q4Qo0pR/nRI7kKhknqbyNPWKkr5X0Ui0FFmaytNUipL/Ji4Uvqzk
Lk3lXvx7UUoAw4V4R8l3lbxZCAASSFHyFiE8NN68fm7bS0Q3qGHDhh05ciQ/Pz8/P//222/3XPnO
O++0ah45cmTIkCENNu50OqOjoxsVj7e3d3Jy8v79+7/88suioqKuXbs2b/sxMTFTpkxp1CrX1XWN
pwnjc6PTWqynQGCYFE9KeVn5c1I6gMgaXQDzlZws5euG4aGdgUI8JeUzuv6diSlSxgr5smkA8AeW
GMZqw6xb+fdKjqnR7xZirBCJpjlWiv0mDpumm7ab089te4noRvfNN99cTaYC4LPPPhs0aBCAHTt2
XKdgfvWrXw0cODAyMvKf//zn9Wi/b9++FRUV16PlpvmpxVOXEMK80c4jl596rxMvYKWmekEk6Jec
yCXwaykWG2YlcBZIMcxhsoHrDKOl+MAwvjFhAAsN4+WLmUEAUHHF4AcAZ4GTQAeBMIEHhEjzmEk0
lzawvQ6HY8GCBbm5uTk5OfPnz/f39wcwfPjw1NTU5cuX51fXr8MAACAASURBVOfnP/zww+np6U6n
02azAejSpcuKFSvy8/N3796dmJiolLoQUkBAUlLSzp07CwoKli9fHhoaapUHBgYuWbIkLy9vx44d
77//fufOnZsW542C40k/c6GhoRs2bNi3b196enpYWJhVWPeKQmRk5NatWwGEhIQUFhbOmzfP4XBk
ZGQUFhbm5+c3of1HHnlk586d4uJXrBDik08+efjhhwGkpKSMHTt2woQJhYWFhYWFVqIGN8cpgMzM
zClTprz//vvp6enp6endu3e3yoOCgpKTk3Nzc3Nzc99+++2OHTta5Y09Ht3F4659d9x9PwC46aab
Vq9eXVhYuHnz5p49e1qF7r5nRowYsXHjxttvv33z5s2ff/75pk2bWmYcbmD/JlD3No310uviywCg
SFMhHlvI09TjUryv5Eeamq9kbeX1Sr6p5EalPtZUkpIdLxSqUIFRUjwv5XtK9mzxGzQ37vYuWrRo
0aJFmqYppRYuXDh37lwAQ4YM+eKLLwICAhYuXLhmzRoA+fn54eHhAFJSUubMmQPA4XB8+umnUVFR
VjtvvfVWcnKypmlSylmzZjmdTqt82rRpr776qrU8duzYJ554osmh3hA4nvQTN2zYsJycnMautWPH
jqu8LbVt27ZOnToJIV577bUVK1bUll+Z3FhGjx69cePGqwyj3vZtNlthYeHAgQOtOvfee+++ffus
fzwAWLx48ZW3geo9Tq32P/roI19fXwBxcXErV660ypcuXbpw4UIppZRywYIF7733nlXehOOx3njc
te+Ou+8Hp9OZlZVljc8bb7yxePFiq9zd90yfPn2++OKLVatW9enTB0Bt0tMC49BcWu62VL3sECZQ
DSxXUgcm6QYAuwDcXwDzB+4X4gXdqACmK5mk5ATdAPC5iR9hJhiGAmYq+bqS43VjnmEkSHkWKDHx
qWl+1doX1m6U7dU0bejQoaNGjaqpqQGQlpa2du3ahIQEAF9//XVFRUVpaWl5eTmAsrKywMBAAJMn
T7b+hXTq1KlDhw716NEDgM1mGz58eFRUlNVOUlKSt7e31UV5efnAgQMHDhxYVFS0evXqpsV5o+B4
EmVlZZWUlABYs2bNhg0bpJRGs15Hv7J9l8u1du3axx9/fNeuXQAeffTR9evXu1wudy24O06tOzJb
tmw5d+4cgOzs7N///vdSSk3TBg8eHBUVZW3IihUrNm7cqGlaTU1NsxyPXl5e7tqvt76H7wcAGRkZ
1vjs2rVr/PjxVmG93zMAysvLfXx8VqxYUVxcDEDX9dp2Wn4cmqaVk5tKmALwA3JN0wSsKxyVHs/I
p4H1hlkGAHjPMJxKtQPOAkl1jpNFhrFJqSCgyDSLdLOHEPFSvG4gWUkNyDDMvFbKcm6U7e3QoYNS
KiUlxdqnhRAul8s66VZVVQEwTbO6utpasI6N8PDw2NjYwMBAXdfDwsIOHz4MICQkREp5/Phxq1mX
y1X7zbJs2TKXyzV16tQ+ffrs2bNn9uzZ33//faOCvIFwPImsMyuAEydOKKX8/Pyad4pJve1/+OGH
eXl5wcHB58+ff/DBB4cOHeqhBXfH6cmTJwHUHnenT59WSvn7+/v5+Qkhysqsr2eUlZVJKTt06FBS
UtIsx2NwcLC79uut7+H7wRqW2nJNu3Dqr/d7BoCVpvz1r3+9speWH4emaaE5N+78aKIS6CnEasNc
Y5i9hKgASj2u8rVpBly82SIBE9ABL+BXQtTe7qmbsikgQYo5hvFbKbIMc7puvKhabatvlO0tKyvT
dX3cuHGDBg0aNGjQfffd94tf/MI6wutlt9tTU1O3bNkycuTI6Ojozz77zCovLS01DKP2/quvr2+v
Xr2sZcMw0tLSYmJi7rnnnm+//fadd95pbJA3EI4nkcPhsBaCgoJcLtfp06cB6Lpee8ujdoJLM7Z/
7Nix7du3x8TEREVF7dmzx/OZ1fNxGhQUZC20b9++pqbGuuBqmmZwcLBVHhwcrOu6dY5vluPRQ/vu
6rv7fqiXu++ZWufPn79yrZYfh6Zp5eTGALYY5kQp/AEHECtFhnHJRYZkJedfem5ON8wnhOwE2IAJ
Uu41zSqgBoiT8ndSaoAfMEnKvaZp7ZLjpNhhml+bsAGVQBWgWnILL3WjbK+u61lZWRMnTrTu3UZF
RT3//PMe6vv7+3t5ee3btw9A//79+/Xr165dOwDV1dXZ2dmxsbFKKSllXFzca6+9Zq2SmJg4bNgw
AGfOnCkuLrauc7ZVHE+6oaWkpLz77rvX2EhkZKSfnx+ARx99dNeuXda9nh9++KF3794AbDbbiBEj
mr19AB988MFjjz0WExOzatWquvXPnDkTFhYmhLDb7e3bt0dDx+mIESOs9CsmJubTTz+1rrbm5OSM
GzdOSqmUeuqpp7Zs2WJd9WnC8XhlPB7ar5eH74d6ufue8ex6j0NzabnkZpumcjW1SikATk3laupB
IQC8aRilQKamMjT1dxNLL70L6wAcl7azxTS3muZKTW3RVDtgtm4AMICphn6LwDZNbdbUWWC6bgDo
LUR/IdYYJoA1hvlbKRYouaxFHpi60bd31qxZuq7n5OQUFBTExMTUTkyrV0lJSUpKSlpa2oYNG4YM
GTJnzpxRo0aNGTMGwIwZM1wuV25u7q5du7p37z5p0iRrlfXr148fPz4nJyc7OzsyMnL69OlNCPIG
wvGkG1dQUFDtdZGmkVLm5OSkpaXl5+f37t375ZdftsqXLFkyYMCA9PT0JUuW7NixQ17x2xnX2D6A
zz77rLy83OFwXPbI1YoVK2699dZDhw7t3LnTOrjg8Tj95JNPli9f/pe//KVv376zZ8+2ChMSEqyu
t23bVlNTM2vWLKu8CcdjvfG4a98dd98P9fLwPePB9R4HIiKiZnNdn5ZqXW+//XbtFNqmcTqdo0aN
aq54blw30Di08oRiIiKiq1H7YPZl4uPjPax17733hoeHWw8nXgtxzb8k0rT4r187TXPt49AymNwQ
EREAdOvWraCgAMDvfve7ep+UqXXnnXdav5XS4M/KNaMmnLwzMzP9/PymTp1qzS9uXc2VfLRMEkNE
RERERERERERERERERERERD8vrfiDdjek+Pj4AQMG7N69u7UDISIiovq18i8UExH9f/buPa6qKu8f
+GettUFAbopgTcyEZt5KnV5SlvmzqbS8pSmUxvTM5AWdKUclLZNKURMtTYvCQpGe0LG8lJyIDAlU
RlFEuzk+idTrsXGaeQhUvCvn7L1+f+xk8HIOF1EUP++Xf+yzztprf9fybM+XtdZGIqKGxeSGiIiI
mhQmN0RERNSkMLkhIiKiJoXJDRERETUpTG6IiIioSWFyQ0RERE0KkxsiIiJqUpjcEBERUZPC5IaI
iIiaFCY3RERERERERERERERERERERERERERERFdYXyF2GiqgWokfMFvJPEPlGWqWkr61aCRKiixD
5RkqRclfifPfnSjlTkOFAAAGCPG2ku8oeYsQACSQomRHccE5teBwOKKioup0SrNmzRYuXLhr167v
vvtu586dv/71rxu2/ejo6IkTJ9bplMvqssZTj/EhIrre8GmpKy0YeEKKyer8kZ8sZRAwyGU+4jJb
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
co8DEVFjYXJzpW0wVK6hVigFwGGoXEM9KASANyyrDMg0VIahftB499ynmYKAoHPbWa/151ovN9R6
QzUHEkxPTz+1F6K7EB9YGsAHln5KigVKLq3XA1NSypycnLS0tPz8/Pbt28+cOdMuX7x4cc+ePdeu
Xbt48eKNGzfWeyOOu/YBfPXVVxUVFUFBQec9cpWent65c+fdu3dv2rRpxIgRduGMGTNM08zJySko
KIiOjq7akAtg8+bNy5Yt+9vf/tapU6eEhAS7MD4+3r70hg0bXC7XjBkz7PLVq1ePHj06JycnOzt7
0KBBL774Yo1duGg87tp356WXXnI6nbm5uVu2bGnTps348eM9VC4tLU1JSUlLS1uzZk3fvn3nzJkz
bNiwqku7c7nHgYiIiGr21ltvjR49+lJacDgcw4YNa6h4rl0cByJqwrjnhhpB1YPZ55k2bZqHs+69
997IyMj4+PhLvPql/yK7+sV/+dqpH/5CPyIiosaUmZm5cePGHj16XGI7/O8LbBwHIiIiIiIiIiIi
IiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIi
IiIiIiIiIiIiIiIiIiIiIiIiIiIiIiKiS9QSSFQy21B5hoqX0rum+jOV3GKo3LN/npey6q0oKbIM
lWeoFCV/JQBggBBvK/mOkrcIAUACKUp2FOLydadGde1vIPCKkjmGyjHUa0q2OlvuB8xWMs9QeYaa
paQvgKuyv0R0Tejfv/++ffvy8/Pz8/O7dOniufIdd9xh19y3b1/fvn2vTIT1Ex0dPXHixFpWdjgc
UVFRtW88KCho0aJFRUVFRUVFycnJYWFhtTkrNjY2JyenlpeoU/wNJTIysqCg4Msvv3Q4HFf40g1F
1lzlMpuupAQecZnRLvN2gVhZQ0gBwGLLetBl2n9esyy7vJcQI6V82jT7uMy9GrFCAvizklNNa7Wl
Y4QAECPFLo29Wl/uTnlQ1/6+oKQvMNhlPuIyAUxVv9SfLGUQMMhlPuIyWwET5FXaXyK6Vvz444+9
e/fu3bv37t27Pdf86quv7Jo//fRTPS4kruBPXJ06dbp8jc+aNcvPz+++++7r3bs3gJkzZ9bmLIfD
MWHChFpe4lLir/c479y5s2fPnnPmzKn3pRud0eiXv0eIJ02rEjgEvGfpiUomW55OCQSOXuzLergU
71vWjxoAFp3NeAKBE8BhIEQgQuABIcaaHlu/zOrR3y+1LtL6FADgC0s/LSUACTwkxRjTOgkASLH0
m0q+ZjVkf4OCgl5++eU77rjDsqyvv/561qxZx44dGzBgwLBhw4QQt95664IFC/7whz94eXlFR0c7
nc6bbrpp7ty5ERERSqm8vLyEhATTNAEEBga+8MILPXv29Pb2/u6772bMmPHPf/4TQHBwcGJiYseO
HYUQ+/fvj4+P//e//12/UK8JHE+6ng0cOHDUqFEJCQlz5sz5zW9+s3///kcffRRu7gt3jdTjfklJ
Sendu7fL5YqJiQHw3HPP5efnw/19BOCGG25YuXLlLbfcUlpa+uyzz37//fce+rVjx45t27adPHkS
wGeffTZlyhTP4zB06NAXXnjB29u7vLy8+oxXZmZmRkbG3XffHRoa6uXl9eyzzxYXF3uI3924uRtn
d+27Gze6VArYbqgOZ7PLe4TYaSjPKzWrlXxDyY+U+sxQidWWafIM9YQU7yn5qaHmKxn2S2UVLjBM
iilSLlGyXWMv0NSjv9XNVXK6lAB+JVD9xEBgp6HCGrS/SUlJSUlJhmEopRYtWjR37lwAffv23bNn
T2Bg4KJFiz744AMA+fn5kZGRAFJSUuw0PygoaNu2bUOGDLHbefPNNxcuXGgYhpRyxowZVZOcU6dO
feWVV+zjmJiYJ598st6hXhM4nnSV69+/f+3XSqps3LixNstSHTp02LNnz4oVKzp06ABAKWWXX/S+
cKce9wuA5OTkC5d13N1HDocjKyurdevWQojXX389OTm59kORlJQ0b9682tS8cKgdDsfHH3/s5+cH
YPr06e+8847n+N2Nm7txdte+h3EDEBUVde0uSzXyzI0JbNN6tBQJpvYDnpACgDdQ6f6UrzX+Dzre
shQwXclXlRxtWgACgPuFeM60jgIvKpmo5BjTes2y4qU8AZRqbNP6+8ZeoKlHf6s8LeVtEH+wTAB+
EBqoBJYpaQLjTQuAn0BD9dcwjH79+g0bNszlcgFIS0v78MMP4+PjAezfv//o0aNlZWUVFRUAysvL
g4ODAUyYMMGeAj1y5Mju3bvbtm0LwMvLa8CAAUOGDLHbSUxMbNasmX2JioqKXr169erVa+fOnStX
rqxfnNcKjidd5yoqKnx8fNLT0+0JA3t6wN19od3/w1Wn+8UdD/cRgIyMjNLSUgBbtmwZPXp0LTs4
efLkrl27Dh06tJb1L5SZmWnPAH3zzTd33XWXh5oexu2i4+yh/TqN27WlkZMbALNNa6qSHxuqVGuH
1ncJcdJj/UTrP+ssSZa1TqkWwGHgGLDa0uUAgCWW5VCqObBT652mbivENCletbBQSQPIsHRe42U5
de0vAC/gJSVvAUaZZgUA4CS0APyBXK01EGAXauxEw/Q3JCREKZWSkmLfG0IIp9Np/yNy+vRpAFrr
yspK+8C+NyIjI2NjY4ODg03TjIiI2Lt3L4CwsDAp5cGDB+1mnU6n0+m0j5cuXep0OidNmtShQ4ft
27cnJCTUb/H+msDxpOucZVkAvv322+qF7u6Lw4cPu2unTveLOx7uIwCHDh2qKjeMmr8ivby85s6d
2759+8cff9xD5DU6evSofWCapufrehi3i46zh/brNG7XlsZPbg4B08xfEpZHpdirtYdNIt5ATyEK
tLanOqpHv1/rQAFoAJCABuyUVQHxUrxiWWOkzLL0Dq3XGCrP1WjLinXqLwBv4HUlzwBjTOv02cL/
0zgJtBNipaUB3C3EUaAMQAP1t7y83DTNUaNG2el/jfz8/FJTUxMSElatWgUgNTXVLi8rK7Msq1Wr
VvZPQr6+vuHh4SUlJQAsy0pLS0tLS/P394+Li3v77bcv5YeeqxzHkwjAmTNnqr+s633hjrv7xR0P
91FdNWvW7N133z1z5szw4cNPnTpVjxbqocZxO2+c3anruF1bGv9pqflKPiulBH4jMErID61z5hgW
Kjlf/SdIFxAn5Z+kNAB/YLyUO7S2U+W1ln5SyNaAFzBGyh1a26nAKCk2ar1fwws4CZwG1BXs3YXq
1F8Az0kJ4PlqmQ0AC1hv6bFSBABBQKwUGdYvkzMN0l/TNLOyssaOHWuvSQ8ZMsTzRrmAgABvb++i
oiIA3bt379q1a/PmzQFUVlZmZ2fHxsYqpaSUcXFxVWvSs2fP7t+/P4Djx48XFxdfsX8XGgXHk65p
KSkp1XeBNJS63hfuuLtfbMePH4+IiBBC+Pn5tWzZEh7vo7qaPn06gGeeeeby3XEXxn9lxg2AZVk+
Pj4N0osrr/GTm0WW1UHgC0O9q9QqbX1+7gJKEBBU7aUFTLLMjgIbDPWJoU4AL559Gmi91p9rvdxQ
6w3VHEgwLQDtheguxAeWBvCBpZ+SYoGSS63GfGCqTv31Ax6VopsQOdV+tY/9K23esKwyINNQGYb6
QeNdq4H7O2PGDNM0c3JyCgoKoqOjPW8rKy0tTUlJSUtLW7NmTd++fefMmTNs2LARI0YAeOmll5xO
Z25u7pYtW9q0aTN+/Hj7lNWrV48ePTonJyc7O3vQoEEvvvhiPYK8hnA86drVokWLoKCgmuvVXZ3u
C3c83C8A0tPTO3fuvHv37k2bNlUVuruP6sTPz2/48OGRkZE7duzYdZa9afei/P39CwsLCwsLExMT
b775Zvv4gQce8HyVi8Z/BcYNwDfffOPr6/vll18WFhbeeeed9bgEERFRY7qsT0sRXWGNv+eGiIio
irsHwqdNm3aFI7HVNZ6rLX4iIqLrlP3fLxQUFBQUFHTt2tVz5TvuuMOuefX/9wtERERERERERERE
RERERERERERUs8b9hXbXnmnTpvXs2XPr1q2NHQgRERFdXOP/Ej8iIiKiBsTkhoiIiJoUJjdERETU
pDC5ISIioiaFyQ0RERE1KUxuiIiIqElhckNERERNCpMbIiIialKY3BAREVGTwuSGiIiImhQmN0RE
RERERERERERERERERERERERERERXTEsgUclsQ+UZKl5K79qd1VeInYYKqFYSAryq5KeG+tRQiUq2
BAAMEOJtJd9R8hYhAEggRcmOQjR4L65+DocjKiqq9vWDgoIWLVpUVFRUVFSUnJwcFhZ2+WIjIqLL
ik9LXWnTlZTAIy4z2mXeLhAra/grCAaekGKyOr/adCWPagx2mYNdpguYpiSAPys51bRWWzpGCAAx
UuzS2Kv1pYctrrIMqcHjmTVrlp+f33333de7d28AM2fObNj2iYjoimFyc0UZwD1CLLN0JXAIeM/S
/aWnL2lvYLmhboWIN63z3monRIHWFmABhZa+BQJAIHACOAyECEQIPCBEmnX+ibU0cODAjz76qEuX
Lp988snXX3+9bt06uzwoKGjBggW5ubk5OTnz588PCAjw3E5wcPDixYvz8vI2btz43nvv3XjjjZ7b
uemmm9LT0/Pz87du3Tp79myllOd4AgMDExMTN23aVFBQsGzZsvDw8KpL33DDDStXriwsLPzkk0/a
tWvnOc4dO3a8+uqrJ0+ePHXq1GeffdaxY8c6DhgREdF1SQHbDdXh7KzDPULsNFRtVqZ+JXDestTz
Us5V0hvwBuYrOVFKAKuVChcYJsUUKZco2e4Spjc6dOiwZ8+eFStWdOjQAUBVkpGUlJSUlGQYhlJq
0aJFc+fO9dzO1KlTX3nlFfs4JibmySef9NxOSkrKX+BXVwAAIABJREFUnDlzAAQFBW3btm3IkCGe
43nzzTcXLlxoGIaUcsaMGQ6Hwy53OBxZWVmtW7cWQrz++uvJycm173tSUtK8efNqX5+IiOi6tkjJ
15T0A1oBSUruNJR/Lc66MLnxB5YrmW+ovxnqv5W0G4kUYrGS85WcIuVIj3NCNWrduvUPP/zw0EMP
VS80DGPfvn233367/bJLly579uzxvEI0bty4zMzMXr16+fj41KadZs2aVdVcsmRJXFych3i8vLxK
Sko6d+5c9dLf/5fhdDgcsbGx9vHQoUM//fTTWnZ88uTJmzZtatGiRS3rExHR1cZo7ACaglWrVtmr
HsXFxTExMZ7LZ5vWVCU/NlSp1g6t7xLiZN2vKIAkJQs1njJNAH+S8m0lnzKtnVrvNHVbIaZJ8aqF
hUoaQIal87Sua5yWZQH49ttvq183JCREKZWSkmKaJgAhhNPpDA4OPnz4sLtQly5d6nQ6J02a1KFD
h+3btyckJPz0008e2omMjIyNjQ0ODjZNMyIiYu/evR7iCQsLk1IePHjQful0Op1OZ9W7hw4dqio3
jJo/6l5eXnPnzm3fvv3jjz/uoUdERERNX3BwcGhoaGhoaHBwcG3KqzY6PSrFf1+wU/iizpu5CQF2
GurGsy/DBXYaKggAoIBUJSMEXlHyQSECgM8NVY84Q0NDf/jhh/MmMJRS+/btsxeG6srf3//ll1+2
98q4a8fPz++7774bPny4/TI1NfXZZ5/1EI+3t3dJScltt91mv/T19b311lvt4+pPSw0aNOjzzz/3
HF6zZs3ee++9d99919fXtx69IyKiqwc3FDeAioqKsrKysrKyioqKGsvnK/mslBL4jcAoIT+0znmU
aaGS82uR7hwCyoCHzi489RHi38ARAMAoKTZqvV/DCzgJnAZUveK8KNM0s7Kyxo4da+9xGTJkyJQp
UzyfMnv27P79+wM4fvx4cXHxqVOnPLQTEBDg7e1dVFQEoHv37l27dm3evLmHxisrK7Ozs2NjY5VS
Usq4uLh675WZPn06gGeeecaOkIiIrl1clrrSFlnWTCm/MNRp4K+W9fm5z2kHAea59TcYSgF2FuMw
lAYSTStX64mmNUmKYUpq4F/QcaYFoL0Q3YV42rQAfGDpP0sxAmJpfR+YuqgZM2a89NJLOTk5vr6+
JSUls2bN8lx/9erVM2bMePbZZy3LKi0tffHFFz20U1pampKSkpaWVlZWtmvXrjlz5iQkJJSUlHz4
4Yfu2n/ppZdefPHF3Nxcb2/vPXv2jB8/vh6d8vPzGz58+KlTp3bs2FFV+P/+3/87ebIea4ZERERE
REREDefq+s1sdI1y90D4tGnTrnAknl0rcRIREREREREREREREREREREREREREREREVG9qJqrEF1g
2rRpPXv23Lp1a2MHQkREdD7+hmIiIiJqUpjcEBERUZPC5IaIiIiaFCY3RERE1KQwuSEiIqImhckN
ERERNSlMboiIiKhJYXJDRERETQqTGyIiImpSmNwQERFRk8LkhoiIiIiIiIiIiIiIiIiIiIiIiIiI
iIiusBDgVSU/NdSnhkpUsmVN9VsCiUpmGyrPUPFSel9QYaKUOw0VAgAYIMTbSr6j5C1CAJBAipId
hWjwXlxW0dHREydOrGVlh8MRFRVV+8aDgoIWLVpUVFRUVFSUnJwcFhZWm7NiY2NzcnJqeYk6xd9Q
IiMjCwoKvvzyS4fDcYUvTURXDz4tRY1jupJHNQa7zMEu0wVMUzV8FKcrKYFHXGa0y7xdIFaeU7+b
EPdWy13+rORU01pt6RghAMRIsUtjr9aXHra4ghlSp06dLl/js2bN8vPzu++++3r37g1g5syZtTnL
4XBMmDChlpe4lPjrPc47d+7s2bPnnDlz6n1pImoCmNxQ42gnRIHWFmABhZa+BZ6+zAzgHiGWWboS
OAS8Z+n+8j/1fYBpUsyxrKqSQOAEcBgIEYgQeECItGrv1snAgQM/+uijLl26fPLJJ19//fW6devs
8qCgoAULFuTm5ubk5MyfPz8gIMBDIwMGDEhNTV22bFl+fv7gwYPXrl3rcDi8vLwA3HTTTenp6fn5
+Vu3bp09e7ZSyj4lJSUlJiZmzJgxhYWFhYWFdgoCIDAwMDExcdOmTQUFBcuWLQsPD6+6yg033LBy
5crCwsJPPvmkXbt2nvu1Y8eOV1999eTJk6dOnfrss886duzouf7QoUMLCwuzs7OTkpKql2dmZo4e
PXrp0qUZGRlZWVkdOnTwHL+7cXM3zu7adzduREREjeZ5Kecq6Q14A/OVnCg95dkK2G6oDmd/mr9H
iJ2GqlqZel7KEVIEA1XLUquVChcYJsUUKZco2e4Spls6dOiwZ8+eFStW2F+rVV+iSUlJSUlJhmEo
pRYtWjR37lwPjfTt23fPnj2BgYGLFi364IMPAOTn50dGRgJISUmxpxmCgoK2bds2ZMiQqrOSk5Mv
XNZ58803Fy5caBiGlHLGjBlViy8OhyMrK6t169ZCiNdffz05Obn2fUxKSpo3b15tavbv3/+8ZSmH
w/Hxxx/7+fkBmD59+jvvvOM5fnfj5m6c3bXvYdwAREVFcVmK6HpmNHYAdJ1abFnvKPmFoQTwg9Yz
Pc6smMA2rUdLkWBqP+AJKQB4A5XAnUJECMw3dVC1+q9ZVryUJ4BSjW1af38JC1IVFRU+Pj7p6enF
xcUATNMEYBhGv379hg0b5nK5AKSlpX344Yfx8fHa/YX2799/9OjRsrKyiooKAOXl5cHBwQAmTJhg
L8EcOXJk9+7dbdu29RCMl5fXgAEDhgwZYl83MTGxWbNmVe9mZGSUlpYC2LJly+jRo2vZwcmTJ3ft
2nXo0KG1rH+hzMzMkydPAvjmm2/uuusuDzU9jNtFx9lD+3UaNyK63jC5oQazatUqezWkuLg4JibG
Q7kAkpQs1HjKNAH8Scq3lXzK9JTfzDatqUp+bKhSrR1a3yXESaA58KwUk0zrvJxip9Y7Td1WiGlS
vGphoZIGkGHpPK3rFCcAy7IAfPvtt9XbDwkJUUqlpKTY38FCCKfTGRwcfPjwYXfxnz59GoDWurKy
0j6wv5sjIyNjY2ODg4NN04yIiNi7d6+HQQgLC5NSHjx40H7pdDqdTmfVu4cOHaoqN4yab20vL6+5
c+e2b9/+8ccf9xB5jY4ePWofmKbp+boexu2i4+yh/TqNGxFdb5jcUIMZN26cvY+k+jfuRctbAl2F
ePHsj+cObY2UKgg44r7xQ8A085fpnUel2Ku1BXQXIlSIVEPh7Pax5YZ6xbQKtFZAvBSvWNYYKbMs
vUPrNYbKc5l1irPKmTNnqr8sLy83TXPUqFH2NEO9+fn5paamJiQkrFq1CkBqaqrn+mVlZZZltWrV
yp6h8fX1DQ8PLykpqcelmzVr9u677545c2b48OGnTp2qRwv1UOO4nTfO7tR13IjoesMNxdRgKioq
ysrKqlZePJQfAsqAh85uCu4jxL/PzWwWKjn/3Oen5iv5rJQS+I3AKCE/tDSAfK37uMxHXOYjLvP3
LhPAf7nMAq0BjJJio9b7NbyAk8BpoGrHae3jdMc0zaysrLFjx9p7X4YMGTJlypS6DRYAICAgwNvb
u6ioCED37t27du3avHnzqnePHz8eEREhhPDz82vZsiWAysrK7Ozs2NhYpZSUMi4urpZ7ZS40ffp0
AM8888zly2wujP/KjBsAy7J8fHwapBdEdC1ickONQAMTTauHEA6lMpS6S4i4c9ekgoCgc09ZZFkd
BL4w1LtKrdLW5x630bQXorsQH1gawAeWfkqKBUoure8DUxc1Y8YM0zRzcnIKCgqio6Prt321tLQ0
JSUlLS1tzZo1ffv2nTNnzrBhw0aMGGG/m56e3rlz5927d2/atKmq8KWXXnI6nbm5uVu2bGnTps34
8ePrcV0/P7/hw4dHRkbu2LFj11n2pt2L8vf3tx96SkxMvPnmm+3jBx54wPNVLhr/FRg3AN98842v
r++XX35ZWFh455131uMSREREREREV4tr7He2El3N3D0QPm3atCscia2u8Vxt8RMRERERERERERER
ERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERER
ERERERERERERERERERERERERERERERERERHRFRICvKrkp4b61FCJSrasqf5nhso9+2ejofINZZf7
AbOVzDNUnqFmKekLABggxNtKvqPkLUIAkECKkh2FuJwdqkFd+wsgSoosQ+UZKkXJX50be18hdhoq
4OzLq7C/RHRN6N+//759+/Lz8/Pz87t06eK58h133GHX3LdvX9++fa9MhPXgcDiioqLqdEp0dPTE
iRMvUzy1MXz48I8++qgRA2gaZGMHgOlKHtUY7DIHu0wXME3VENIAl/ng2T/rLP2ppe3yyVIGAYNc
5iMusxUwQUoAf1ZyqmmttnSMEABipNilsVfry90pD+ra315CjJTyadPs4zL3asSKX+oHA09IMfnc
06/C/hLRteLHH3/s3bt37969d+/e7bnmV199Zdf86aefrkxsV0ynTp0aOwRqAI2f3LQTokBrC7CA
QkvfgtpOM7QXor8U71gWAAk8JEWypU8CJ4AUS/eXQgCBwAngMBAiECHwgBBplnU5e1OzuvZ3uBTv
W9aPGhawyLJmWhYAb2C5oW6FiDfP6U4D9jcoKGjBggW5ubk5OTnz588PCAgAMGDAgNTU1GXLluXn
5w8ePHjt2rUOh8PLywvATTfdlJ6enp+fv3Xr1tmzZyv1y4xaYGBgYmLipk2bCgoKli1bFh4ebpcH
BwcvXrw4Ly9v48aN77333o033li/OK8VHE+6nl308+/n57dhw4bHHnvMrjNy5MjMzExvb2939eH+
8+9BeHj4mjVrioqK1q5dGxERAWDo0KGbNm0SZ6e0hRCbN28ePHgwgJSUlJiYmDFjxhQWFhYWFvbu
3dtD/B64i7NFixYLFy7Mzc3Nzc196623WrVqZZe3adNm7dq1mzdvXrVqVZs2bTyPG9VG4yc3my39
kBTegDfwOyk213qaIU6K/7asYwCAGwR8gf89e+7/au0PhAKlGuECbQX+qREvZaKlXZenF7VX1/7e
JoQBvKfkp4aar2QYAKASeMRlzrKs/8M5pzdgf2fPnu3t7f3www/369fPMIz4+HgATqfznnvuiYuL
27Vr1xNPPBEdHd2iRYtu3boBmD59+oEDB3r37j1gwIA+ffoMGjSoqh0fH58+ffr06tXrH//4R3Jy
sl0+bty4Q4cOPfDAA/fff39OTs6DDz5Y30ivDRxPup5d9PN/8uTJ8ePHP/fcczfffHOnTp3+/Oc/
P/PMM5WVle7qw/3n34OBAweOHz/+rrvu+v7772fNmgXg008/9fX1vffee+0KPXv29PPzW79+PYBx
48bl5eWlpqb26NGjR48e+fn5HuL33N+Lxjl37lwhRN++ffv27XvmzJnExMSq+rt3777vvvvGjBlT
lVHV47p0FfEHliuZb6i/Geq/lfSv3Vm3C5FrKJ+zL9sJUWQoAMuUXKKkN7DTUBECkUIsVnK+klOk
HCmviq0nde1vkaGWKNkK8AZmKpl67jrUrwSq77lpqP4ahrFv377bb7/dftmlS5c9e/bY92RWVhaA
+Pj4GTNmAPj444/79OkDoFmzZj4+v/yFLFmyJC4uDoCXl1dJSUnnzp3tci8vL3//X3o8bty4zMzM
Xr16VZ3VhHE86erXv3//nJycup61cePGGvfcuPv82y+joqLWrVuXnZ398MMPe67v4fPvjsPhqNpA
061bt3379kkpAcTFxVUlHG+88cZzzz1XdUpycvJ5e248x38hd3F6e3t///33t912m13etWvXkpIS
wzCUUiUlJVXtP/PMM/aem7pel6ozGvfyAkhSslDjKdME8Ccp31byKbPmlZTHpciy9OmzL09CC8Af
yNVaA/aX/UmNndA7Td1WiGlSvGphoZIGkGHpvEbahlKP/h4DVlu6HACwxLIcSjUHTripvFM3TH9D
QkKUUikpKaZpAhBCOJ3O4OBgAKdPnwagtbZ/wNJa2zdbZGRkbGxscHCwaZoRERF79+4FEBYWJqU8
ePCg3azT6XQ6nfbx0qVLnU7npEmTOnTosH379oSEhKa3eF+F40nXM3ef/8OHDwPIyMj4y1/+cvr0
6Q0bNniu7+fn5+7z70Fpaal9cOjQIaWUv7//0aNH//rXv+bl5YWGhp45c+bBBx/s169fveO/kLv7
NDQ0VAhRXm7/c47y8nIpZUhIiNPplFIeOXLELq86qOt1qbpGTm5aAl2FeNH+qwMc2hopVRBwxONZ
EuglxNRqu0n+T+Mk0E6IlZYGcLcQR4EyAIAC4qV4xbLGSJll6R1arzFUnsu8bH3ypB793a91oIC9
+iQBDXgOvUH6W15ebprmqFGjiouLa1Pfz88vNTU1ISFh1apVAFJTU+3ysrIyy7JatWpl//vi6+sb
Hh5eUlICwLKstLS0tLQ0f3//uLi4t99+e+jQoXUK8hrC8aTrmefP/8SJE4uLiwMCAp5++ml7NsVd
/RMnTrj7/HsQFBRkH7Ro0cLpdB47dgzAzz///MUXX0RHRx8/fnz79u2efxKo6/3r7j4tKyvTWoeG
htrloaGhpmnauY5lWcHBwQcOHAAQFhZWv+tSdY285+YQUAY8dHYBpY8Q/z73m36hkvMveJ6orRCB
wLfVZiMsYL2lx0oRAAQBsVJkWL+8PUqKjVrv1/ACTgKnAXV5++RJPfq71tJPCtka8ALGSLlD/2e+
6qIapL+maWZlZY0dO9YwDCnlkCFDpkyZ4qF+QECAt7d3UVERgO7du3ft2rV58+YAKisrs7OzY2Nj
lVJSyri4uHnz5tmnzJ49u3///gCOHz9eXFx86tSpuod5zeB40jUtJSXlnXfeqffpHj7/vXr1GjZs
2NSpU+Pi4v74xz/26NHDQ30Pn38PBg0aZK8KPfbYY1u2bNFnvzjef//9xx9/PDo6esWKFdXrHz9+
PCIiQgjh5+fXsmVLz/FflLs4Kysrc3JyRo0aJaVUSo0cOXL9+vWmaZqmuWvXrhEjRgghWrdubd/I
9bguVdfIyY0GJppWDyEcSmUodZcQceeu0QQBQRec1Ro4Cpw5t/ANyyoDMg2VYagfNN61LADthegu
xAeWBvCBpZ+SYoGSSxvvgal69He91p9rvdxQ6w3VHEg4W3+DoXINtUIpAA5D5RrqQSEasL8zZsww
TTMnJ6egoCA6OtrhcHioXFpampKSkpaWtmbNmr59+86ZM2fYsGEjRowA8NJLLzmdztzc3C1btrRp
02b8+PH2KatXrx49enROTk52dvagQYNefPHFegR5DeF40rWrRYsWVfMf9XPRz39YWNiCBQsmT55c
UVFRWloaHx//xhtv2A8Qubtf3H3+3ZFS5uTkpKWl5efnt2/ffubMmVVvffXVVxUVFUFBQVW7hm3p
6emdO3fevXv3pk2b7JvOQzzuuIszPj7eDmnDhg0ul8veaQfg5Zdf7ty5844dO5KTk9esWWMYRv2u
S0RERP9x+TYUX7Xeeuut0aNHN3YUdFk08p4bIiKiSzF37tyLlk+bNs3DWffee29kZOSlPFxdv+sS
ERHRFWL/9wsFBQUFBQVdu3b1XPmOO+6wa17l//2CO5mZmRs3brS3+BARERERERERERERERERERER
EVFj/kK7a9K0adN69uy5devWxg6EiIiILq7x/1dwIiIiogbE5IaIiIiaFCY3RERE1KQwuSEiIqIm
hckNERERNSlMboiIiKhJYXJDRERETQqTGyIiImpSmNwQERFRk8LkhoiIiJoUJjdERERERERERERE
RERERERERERERETXMdHYAVx3QoDnlbxNCADfar3AtA55rD9TyQeFOHP2ZbalX7MsAIHA80r2EALA
V1q/ZlrlwAAhBkihgAWW/kFrCbyj5CJL79W6rnEuX778nnvusSyrqqR79+7Hjh0D0KxZs7lz5953
331+fn4nTpwYOnTogQMH6tp+XUVGRiYlJfn4+Bw4cGDIkCE1lhMREdEV8qaSL0opAQnMUnK+quGB
tYVKxsiL5KCJSr6upC/gA7x2tp1MQzUH7hfiZSkBPCnFWFnPB+KWL18+ceLEi7718MMP79ix48Yb
b6xfy5ciKirK4XDUvpyIiK5DfBT8SmsnRIHWFmABhZa+pabJs0Dg6MWmXb7UOsmyTgGngS8sfSuE
XfkEcBgIEYgQeECItGpTL5cuLCyssLDwtddeCwoKysjIKCwszM/Pt99yOBxRUVH28aBBgz7//HP7
ODMzc/To0UuXLs3IyMjKyurQocMv/QoMTExM3LRpU0FBwbJly8LDw+3ym266KT09PT8/f+vWrbNn
z1ZKNWD8RER0PWByc6VttvRDUngD3sDvpNhc04JRINBHio+U+sxQiUq2Olu+1tI/nj31fim+1BpA
qUa4QFuBf2rES5loaVeDBv/zzz/36NEjMTHx73//e48ePXr06NG7d2/Pp1iWNXDgwIkTJz766KOF
hYWTJk2yy2fPnu3j49OnT59evXr94x//SE5OtsunT59+4MCB3r17DxgwoE+fPoMGDWrQHhARUdNn
NHYA153FlvWOkl8YSgA/aD2zppmVrzX+DzreshQwXclXlRxtnnPK01LeBvEHywTwmmXFS3kCKNXY
pvX3dd9qczlkZmaePHkSwDfffHPXXXcB8PLyGjBgwJAhQ1wuF4DExMRmzZrZlSdMmCCEAHDkyJHd
u3e3bdu28QInIqJrEpObBrBq1ap27doBKC4ujomJ8VAugCQlCzWeMk0Af5LybSWfMj3lN4nVsp8k
y1qnVAvgMADAC3hJyVuAUaZZAQDYqfVOU7cVYpoUr1pYqKQBZFg6T+s6xWmbMGHChAkT7OPy8vIe
PXrUb3yOHj1qH5imaRgGgLCwMCnlwYMH7XKn0+l0Ou3jyMjI2NjY4OBg0zQjIiL27t1bv4sSEdF1
i8lNAxg3bpyXlxeAqm9od+Utga5CvGiaJgDAoa2RUgUBR9y07A30FKJA60oA5/5teQOvK3kGGGNa
p6uVKyBeilcsa4yUWZbeofUaQ+W5zDrFaUtKSnrzzTdrOQimaVbtjwkICPBcuayszLKsVq1alZaW
AvD19Q0PDy8pKfHz80tNTU1ISFi1ahWA1NTUWl6diIioCpObBlBRUVHL8kNAGfCQFO9bGkAfIf59
bmazUEkTeO7sXI4LiJOyq9aLLcsHGC/lDq3taZvnpATwvHn+stYoKTZqvV/DCzgJnAaqduTWPs56
+Ne//tW+fXsAXl5eAwcO9Fy5srIyOzs7NjZ28uTJWuu4uLju3btHRUUFBAR4e3sXFRUB6N69e9eu
XX/88cfqJ1qW5ePjc2GD7sqJiOg6xA3FV5QGJppWDyEcSmUodZcQceeuSQUBQdVeWsAky+wosMFQ
nxjqBPCiaQHwAx6VopsQOYbKPfvHF2gvRHchPrA0gA8s/ZQUC5Rc2qAPTLmzePHinj17rl27dvHi
xRs3bpQ1PYL+0ksvOZ3O3NzcLVu2tGnTZvz48QBKS0tTUlLS0tLWrFnTt2/fOXPmDBs2bMSIEVVn
ffPNN76+vl9++WVhYeGdd95ZYzkRERERERERERERERERERERERERERERERERERERERERERE1Pv6X
y1Qf06ZN69mz59atWxs7ECIiovPxl/gRERFRk8LkhoiIiJoUJjdERETUpDC5ISIioiaFyQ0RERE1
KUxuiIiIqElhckNERERNCpMbIiIialKY3BAREVGTwuSGiIiImhQmN0RERERERERERERERERERERE
RERERER0hYUAryr5qaE+NVSiki1rfeJEKXcaKuTsy5lKbjFU7tk/z0sJYIAQbyv5jpK3CAFAAilK
dhTiMvTjcnE4HFFRUXU6JTo6euLEiZcpntoYPnz4Rx991IgBEBHZ+LQUNY7pSh7VGOwyB7tMFzBN
1eqj2E2Ie8/NUQKAxZb1oMu0/7xmWQD+rORU01pt6RghAMRIsUtjr9aXoyNXj06dOjV2CEREVwUm
N9Q42glRoLUFWEChpW9BzdMqPsA0KeZYVvXCQODoBUlLIHACOAyECEQIPCBE2rln1V5QUNCCBQty
c3NzcnLmz58fEBAAwM/Pb8OGDY899phdZ+TIkZmZmd7e3u7qAwgMDExMTNy0aVNBQcGyZcvCw8Nr
vHR4ePiaNWuKiorWrl0bEREBYOjQoZs2bRJn0zshxObNmwcPHgwgJSUlJiZmzJgxhYWFhYWFvXv3
9hC/B+7ibNGixcKFC3Nzc3Nzc996661WrVrZ5W3atFm7du3mzZtXrVrVpk0bz+NGRETUlD0v5Vwl
vQFvYL6SE2XNefbzUo6QIhioviy1Wsk3lPxIqc8Mlahkq18KVbjAMCmmSLlEyXaXsCCVlJSUlJRk
GIZSatGiRXPnzrXL27dvv2PHjptvvrlTp047duz4zW9+47n+m2++uXDhQsMwpJQzZsxwOByer+tw
ODZs2NC6dWshxLx589LT0wF4eXkVFhb26tXLrnPvvfcWFRV5eXnZL5OTky9clnIXjzvu4nz33XcX
LVokpZRSLliwYMmSJXb5ihUrZsyYASAgIOCzzz6rWpaq63WJiIiuef7AciXzDfU3Q/23kv411b9T
iMVKCuC85CZeylFS+AEBwHwllykJIFKIxUrOV3KKlCNl/TMbwzD27dt3++232y+7dOmyZ8+eqomT
qKiodevWZWdnP/zww57re3l5lZSUdO7c2S738vLy96+hxw6HoypT6dat2759+6SUAOLi4pKTk+3y
N95447nnnqs65cLkxnP8F3IXp7e39/fff3/bbbfZ5V27di0pKbETl5KSkqr2n3nmGTu5qet1iYga
ltHYAVDTsWrVqnbt2gEoLi6OiYnxUC6AJCWah/EwAAAgAElEQVQLNZ4yTQB/kvJtJZ8y3a4cNQee
lWKSaV24ayax2npTkmWtU6oFsFPrnaZuK8Q0KV61sFBJA8iwdJ7WdYozJCREKZWSkmKaJgAhhNPp
DA4OPnz4MICMjIy//OUvp0+f3rBhg92Cu/p+fn5SyoMHD9rVnE6n0+mscTxLS0vtg0OHDiml/P39
jx49+te//jUvLy80NPTMmTMPPvhgv379PLTgOf4LhYWFXTTO0NBQIUR5ebldXl5eLqUMCQlxOp1S
yiNHjtjlVQd1vS4RUcNickMNZty4cfYSyXnf3BeWtwS6CvGi/dUHOLQ1Uqog4IiblrsLESpEqqFw
dpvYckO9Ylo7te4pRIHWlQDO/TQrIF6KVyxrjJRZlt6h9RpD5bnMOsVZXl5umuaoUaOKi4svjGri
xInFxcUBAQFPP/20PZvirv6JEycsy2rVqpWdr/j6+oaHh5eUlHgcTgQFBdkHLVq0cDqdx44dA/Dz
zz9/8cUX0dHRx48f3759+08//eShBc/xX6isrOyicZaVlWmtQ0ND7fLQ0FDTNO1cx7Ks4ODgAwcO
AAgLC6vfdYmIGhY3FFODqaioKCsrKysrq6io8Fx+CCgDHjq7YNRHiH+fm9ksVHJ+teen8rXu4zIf
cZmPuMzfu0wA/+UyC7R2AXFS/klKA/AHxku5Q2t7cmCUFBu13q/hBZwETgOq7nGappmVlTV27Fh7
D8qQIUOmTJliv9WrV69hw4ZNnTo1Li7uj3/8Y48ePTzUr6yszM7Ojo2NVUpJKePi4ubNm1fjeA4a
NMheFXrssce2bNmizz7t9f777z/++OPR0dErVqyoXv/48eMRERFCCD8/v5YtW3qO/6LcxVlZWZmT
kzNq1CgppVJq5MiR69evN03TNM1du3aNGDFCCNG6dev+/fvXOG5ERERNVnshFivpUCpDqcUX7Pld
puQSNw+Hn7fnpo3AYiXzDJVnqFlKtjjb+Lvqly3KvxUiRck3lXy8XptvAgMDX3vttY0bN27fvn35
8uW33norgLCwsO3bt9sJDYA+ffps27bNfoDoovUBBAcHz58/334KaenSpTfeeKPn62ZmZk6YMGH1
6tX5+fmrVq369a9/Xf3ddevWVX9synbbbbdlZ2f//e9/37Fjx9NPP+0hfg/cxdmiRYs33njDflpq
wYIFwcHBdvmtt966bt06+5GusWPHVm1Arut1iYiI6Lr21ltvjR49urGjICK6SnHPDVGjcfeA9LRp
0zycde+990ZGRsbHx1/h6xIRERE1vMzMzI0bN1atiBERERERERERERERERERERERERERERERERER
ERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERER
EREREREREVFjmankFkPlnv3zvJSe64cAryr5qaE+NVSiki0vqDBRyp2GCgEADBDibSXfUfIWIQBI
IEXJjkJchn7U1vXWXyK6JvTv33/fvn35+fn5+fldunTxXPmOO+6wa+7bt69v3761vERsbGxOTs4l
R1rndi6s73A4oqKiLqwZGRlZUFDw5ZdfOhyOS42SrnMLlYyRdfj2fVPJF6WUgARmKTlfnZMcdBNi
tVJVX/aZhmoO3C/Ey1ICeFKKsTUlE5fb9dZfIrom9O/fvx6Zx8aNG2uf3ISFhXXq1Kmul7j0di6s
7y65sUVFRV2Z5EbwJ8/LxmjsABAIHNV1qN9OiAzLsgAAhZYeXe3L2weYJsUcy1p2NgMIBE4Ah4EQ
gQiBB4QYa1oNGHw9XCv9DQoKevnll++44w7Lsr7++utZs2YdO3ZswIABw4YNE0LceuutCxYs+MMf
/uDl5RUdHe10Om+66aa5c+dGREQopfLy8hISEkzTBBAYGPjCCy/07NnT29v7u+++mzFjxj//+U8A
wcHBiYmJHTt2FELs378/Pj7+3//+d/1CvSZwPOl6NnTo0BdeeMHb27u8vLx6MpSZmZmRkXH33XeH
hoZ6eXk9++yzxcXFjzzySEJCwj333FNZWQmgWbNm27Zte/nll7Oysty14+7z764+gPDw8DVr1kRE
RPz4449TpkzZv3+/h/gvev96qJ+ZmfnFF1/89re/DQgIAPDcc8/97//+L4CBAweOGjUqISFhzpw5
v/nNb/bv3//oo48CaNGixcsvv9ytWzcA//M//zNz5szy8nIP7VCNGv/H+kCgjxQfKfWZoRKVbFVT
/c2WfkgKb8Ab+J0Um/V/MoUJUmZo/WO1klKNcIG2Av/UiJcy0dKuy9OL2rtW+jt79mxvb++HH364
X79+hmHEx8cDcDqd99xzT1xc3K5du5544ono6OgWLVrYN+T06dMPHDjQu3fvAQMG9OnTZ9CgQVXt
+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
--=-=-=
Content-Type: image/png
Content-Disposition: attachment; filename=emacs-master-report.png
Content-Transfer-Encoding: base64

iVBORw0KGgoAAAANSUhEUgAAA5MAAAOCCAIAAABlBxHgAAAACXBIWXMAAA7EAAAOxAGVKw4bAAAg
AElEQVR4nOzde1wU1f8/8LO7IAsuCEpi3ri6qKSw24r4UbckC/CWt18GXsrUMs0kK4RSIckLYmV+
U0RRIlT6kCAXL9zlsx8EQS4rlwUXBq3IC59SQwSRXfj9MTWtCw6LoKC+ng8fD+fMmXPmPWdnhrMz
Z2YJ+dtnn302depUejolJUVPT48AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAADA0yM3N5eiKIqijh492tOxPNnQkgAAANDLcbXSvr6+bm5u9PTp06cNDAw6rMLLy4t6AN3j
SE9PHzNmjO7LMzw9PT08PGQyWWcLWlpaUhQ1Y8aMh1ipLh5ui7hc7vLly5OTk0tLSwsLC48cOTJu
3LhHEV5bD92Sj9SECRNiYmIUCkVBQUFQUFC/fv16OiIAAADoMdo/lCUWiw8dOkQIMTU1bWhoaGpq
6rCK9PT0n3/+mZ7et29fZmbmjz/+2KkgTE1NraysOlWEUV1dTQi5ffu2Lp3sx+aht+i999776KOP
tm/fnp+fb2JismrVqvDwcHd395qamu6OUVsvbEl7e/tDhw6dPHly69atZmZmGzZs2L1791tvvdXT
cQEAAEAvoK+vn5qaSk+7urpu3LixszXI5XI/P7+286dMmRIXF1deXl5UVLRnz57BgwczWevWrdO6
UhsQEKBZds6cOUlJSWVlZVlZWb6+vvr6+m3r3717d2fvcXd4zZUlZkLISy+9FBsbW1JSUlhYGBoa
OmzYMN23iEVsbOx3333HJPv16/fvf//75ZdfZuY8qDVGjx5dWlrq6elZUlISHh7u5OQkk8mys7Md
HBzoBfz9/RMTE93d3dPT08vLy0+cOCESidoG8KCWnDx5cmxsLH3tc8eOHVrXPllagzZ06FCKosLD
w3VsB1pQUFBSUhKHw6GTLi4uFEW98MILnaoEAAAAnjbW1tYymSwnJ6e0tFQmk8lkMrlcnp+fL5PJ
+vfvr3s97fZcx48fX1lZGRAQYGdnJ5FITp06lZqaynS5BgwYMH36dIqipk+fLhQKhULhwIEDmbIu
Li5VVVWrVq2ys7ObM2eOUql8//33266323uu7DEPHTq0vLz8nXfeGTZsmJ2d3a5du5KTk5my7FvE
LioqKiEhQU9P+1o4jaU1hEJhVVXVli1bLC0tKysrY2Ji+vfvf+zYse3bt9MLfPbZZ0VFRaGhoQMH
DjQxMQkJCcnLyzM0NNRaRbstKRKJlEplcHCwUCgcP358Wlra4cOHmVz21mCWeYiea2ZmpubuxOPx
SktLly9f3qlKAAAA4Om0YMGCNWvW0NOhoaFCobCzNbTbcw0LC0tJSWGSYrGYoqipU6cyc8aMGUNR
VLujQt3d3YODg5lkRETEkSNH2i7W7T1X9pjd3NwqKyv5fD6dFAgEo0aN4nL/GTTMskXspFKpQqFI
Tk5evXq1k5OTZp2EtTWEQiFFUVKplBCSlZXl7+9PCNm0aRPTxfTz86MoysbGRnPzNT8FWrstuWfP
nszMTB6PRycnTJiguXUdtgY9c8WKFe7u7p1qDaVS+dZbb2n2etPT0+lNAwAAgGfQfd0LOzu7ixcv
0tM2NjaXLl3qlnU4Ojrm5eUxSblcrlardezVJSUlffrpp0zy2rVrj+cZHfaYy8rKGhsbo6KiFi5c
aGlpWV9fX15e3tLS0vX1ymSyadOmnTlzZubMmTExMWfPnl2yZAmT22FrXL16lRDS2Nj4+++/E0Lu
3r3LdCgJIfX19fRgVkLIL7/8olKprK2tdYnK0dExJydHrVbTyfPnz6tUKrFYTCd1aY36+voDBw4k
JSXp3BJET0+Px+NpjbRuamrS3CIAAAB4ptzXcx0xYgTdczU0NFSr1c3Nzd2yDiMjo1u3bjHJlpaW
+vp6gUCgS1lzc/OgoKCzZ88qlUqKoubPn98tIXWIPeaampr58+dfunTp448/zsjIOHny5Isvvthd
q758+fL27dvd3d0nT558+vRpf39/pvPaYWvcu3ePnmB6mcwgUUJIXV0dM93a2trU1GRkZKRLSAKB
YN68eeV/Kykp0dPTMzc3p3MfUWuoVCq1Wm1gYPDbb7+NHj16xYoVhBBDQ8O7d+92vXIAAAB4Ev01
ntLb23vu3LkWFhaRkZGEkD59+vTt21cmkykUipUrV3ZxHbW1taampkySy+UKBALNXhQLemzl2rVr
5XK5SqUKCgpiHjl6pDqMWalUrlu3jsfjjR07dvXq1T/88MOUKVNqa2u7uF4+n9/c3Ez3O69cubJ5
82Z7e3s3N7cffviBdLk1jI2NmWkej8fn8xsaGnQpWFdXl56evnfvXs2ZN2/eZKYfUWv8+uuvw4YN
ozvZhBA9Pb1BgwYxL7IAAACAZ81f11x37drl6emZl5cnlUqlUmloaOhXX30llUq73m0lhJSVlTk7
OzNJiUTC4/GKioqYOXRHrd3HkiQSyfHjx/Pz81UqFYfDedBz5a2trV2PU/eYbW1tJRIJHXlRUdH6
9ev5fP7QoUOZ5Vm2iIWDg0NxcfFrr72mOdPY2JjZOh1b40GMjY2Z4QEjR47k8XhVVVVay7TbkkVF
Rba2tsyrEqqrq1tbW2/cuEHndtgahBCBQLB06dJXX321UwHn5OS8/PLLzJBZqVTap0+fs2fPdqoS
AAAAeGr807VycnKSy+X0tEgkCgsL6651hISExMXFbdy4MTIy0tzcPDAwsLS0VLP/ceXKFbVavWTJ
En19fT6fP3jwYOaNsDU1NRKJRCAQGBgYfPjhh42NjZaWlkZGRloXCxsaGqysrEaNGnXv3r07d+5c
u3ZNx9hGjRqleSX1ypUrdGeOPWZnZ+dPP/3Ux8envLycz+cvWrTo999/r6io0GWLWCgUisLCwm3b
tg0ePLi4uNjQ0HDWrFkODg6ffPJJp1rjQerq6gICAnbs2KFSqb744ova2trs7GytZdptyQMHDsTE
xPj7+x85coTH4y1ZsmTWrFlTp069fv26Lq1BCDE1Nd2wYYNMJmNeu6aLgwcPzp49e+fOnYcPH7aw
sNi4cePJkycrKyt1rwEAAACeTp999hnzpHlKSkpnrxfSHvQ+V1dX18TExIqKioKCgp07d7Z909ai
RYvOnj178eLF3Nzc0NBQZr5IJDp16lR5eXlaWhrdjTt37pxcLtcaJisSiWQyGX1FUMdXL9EP12v5
8ssvdYmZw+GsXLkyLS2Nfr/pwYMHR44cqeMWsRMIBD4+PhkZGQqFIj8/PyoqSvM6JUtr0O8WsLS0
JISkpqbSF8t9fHxiYmLosn5+fhkZGR4eHunp6RUVFYmJiWPHjm0bwINa0sXF5dixYwqFoqio6ODB
g6NHj+5UazzcW7EIIRKJ5NixY+Xl5efPnw8ICNBxYC4AAAAAPMH8/PzOnDnT01EAAAAAPDxux4sA
AAAAAPQC6LkCAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPFt8fX3d3Nzo6dOnTxsYGPRs
PAAAAAAANO23YonF4qKiIkKIqalpQ0NDU1NTT0QFAAAAAKDtvp6rvr6+mZlZbW0tIUQsFsvl8h6K
CgAAAABAG4f+z9raOiIiQl9f39jY+MaNG4QQExMTlUrV0NAwe/Zseg4AAAAAQG+xYMGCNWvW0NOh
oaFCobBn4wEAAAAAYNw3WsDOzu7ixYv0tI2NzaVLl3oiJAAAAACAdtzXcx0xYgTdczU0NFSr1c3N
zT0UFQAAAACAtr/GuXp7e8+dO9fCwuL69euEkD59+vTt2/fmzZsKhWLlypU9GiEAAAAAwP2GDBkS
GRlJTy9duvTtt9/u0XAAAAAAAO7zz2gBJycn5jVYIpGosLCwh0ICAAAAAGjHPz1XR0fHCxcu0NMj
R45UKBQ9FBIAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA8Crm5uRRF
URR19OjRno7lCWBubv7tt9+eO3dOqVTK5fJ169b1dESPlpGREUVRX3311eNcaa/dJ3ukNQAAALoR
Vyvt6+vr5uZGT58+fdrAwECnWrjc5cuXJycnl5aWFhYWHjlyZNy4cd0c6QN4enp6eHjIZLLHszod
SaXSY8eOlZSU5Obmfvfdd8OHD9fMnTJlSkxMTElJSV5enr+/v6GhIZMVGRkZHR3NJMeMGaNQKDZs
2NBdgfn4+Li6uoaEhCxbtmz16tUnT57srpofnfT09DFjxjxc2YaGBrVaXVdX170hseud+yTpodYA
AADoRto9V7FYXFRURAgxNTVtaGhoamrSpZb33nvPx8fn3//+t5eX14cffsjhcMLDw4cOHdr98bZR
XV2tVCpv3779GNalIxcXl7CwsIsXLy5fvtzf318oFH7//ff6+vp07r/+9a+wsDCFQrFs2bKvv/56
9uzZW7Zsabee5557LjQ0NCcnZ9u2bd0V29ixY+Pi4iIiIv773/+ePXv24sWL3VXzI2JqamplZdWV
Gm7fvv2Yd49euE8yHn9rAAAAdKP7eq76+vpmZma1tbWEELFYLJfLdazl1VdfTUlJOXToUHFxcVZW
1vvvv19WVmZnZ8csMGfOnKSkpLKysqysLF9fX6YbN3r06NLSUk9Pz5KSkvDwcCcnJ5lMlp2d7eDg
QC/g7++fmJjo7u6enp5eXl5+4sQJkUik++ZNnjw5NjZWoVAUFBTs2LGjX79+mrkvvfRSbGxsSUlJ
YWFhaGjosGHDtIoPHTqUoqjw8HDd10gIWbx4cVlZ2eeff56bm5uUlLR582ZLS0t7e3s6d/ny5UVF
RRs3bszLy/vxxx8DAwNnzZr1/PPPa1Wir68fEhJy69atDz/8UK1W67jqKVOmxMXFlZeXFxUV7dmz
Z/DgwUxWQUEBRVEjRozw8vKi/jZv3jwda35QS06aNImiqFdeeUVz4QMHDmRmZnI4HPayhJBNmzZF
RUW5urrSu8eJEyckEgmTu27duoKCAkJIXFwcHXBAQICOATPq6uravcro4uISHR1dVlZWUFAQEhJi
aWmpuUVOTk6aC2/ZskVzix5UVhePaJ/08/M7c+YMkxSJRBRFtb1W/aDWAAAAeCL81XO1traWyWQy
mez555+nJ77++uvXX39dJpP179+/w1qampqGDx+up6dHJ//8888FCxZkZmbSSRcXl+Dg4ISEhNdf
f/2rr7565513li9fTmepVCo+n//CCy/MmDFj0qRJGzdunD179pUrVxYvXkwv0NzcPHTo0Dlz5nh6
eo4fP/7XX38NDQ3VvL3OQiQSHTx4kKKo2bNnr1q1SiwW79mzh8kdOnTovn37Tpw4MW3atDfeeKOx
sTEsLEynNuuIt7c3Ez+9jYQQ5ur18OHDi4uLmdz//ve/HA6n7eCKwMDA4cOHr1ix4s6dOzqud/z4
8fv375fL5TNnzlyxYoW1tXVERATzJeGNN97w8PC4fv16dHS0x99SU1N1qZmlJbOzs69evfr6668z
C/fv3/+ll1766aefWltb2csSQpqbm21tbb28vJYuXTpx4sT//e9/u3bt4vF4dG5ERMSHH35ICPnw
ww/pgPfu3atjazDa7as5OTn98MMPlZWVixcvXr169XPPPXfkyJG+ffsSQrKysqqqqjw9PZmFDQ0N
Z86ceeTIEXqLWMp2pSXJo9wnGei5AgDA02PBggVr1qyhp0NDQ4VCoY4FpVKpQqFITk5evXq1k5MT
l3vfpVx3d/fg4GAmGRERceTIEXpaKBRSFCWVSgkhWVlZ/v7+hJBNmzYdPnyYXsDPz4+iKBsbGzpp
aWlJUdTUqVO1Ati9e3fbp2H27NmTmZnJdIMmTJigeRXKzc2tsrKSz+fTSYFAMGrUKK3IBQLBihUr
3N3ddWwHTTwez8zM7KWXXsrMzNy9ezcz/+jRo/v372eSVlZWFEW9++67dJIe5/r2229TFDV58uRO
rTEsLCwlJYVJisXitm0lk8l8fHw6uy3sLfnxxx+XlZUxXbe3335bqVQOGjRIl7J+fn5VVVUWFhZ0
8pVXXqEoSnOcyZgxY9q9dqg7Ozs7U1NTrZn79u1LSkpiklZWVnv37h09ejSd9PLyKi0tNTExoZPz
5s1TKBRMJexlGY95n9Txmmu7rQEAAPCkuO+Pop2dHTPw0cbG5tKlSzrWIpPJpk2bdubMmZkzZ8bE
xJw9e3bJkiVMblJS0qeffsokr127pnWH9OrVq4SQxsbG33//nRBy9+5d5o83IaS+vr66upqe/uWX
X1QqlbW1tS5ROTo65uTkMLfaz58/r1KpxGIxnSwrK2tsbIyKilq4cKGlpWV9fX15eXlLS4tmDfX1
9QcOHNDspuhu5syZ+fn5hw4dKiws1OwsJiQkuLq6zp8/38DAwMrKaufOnc3NzcyVUUKIjY3N+vXr
VSrVnDlzOrVGR0fHvLw8JimXy9VqdVf6fJo1s7RkTEwMn89nHuybO3duVlbWtWvXdClLCKmtrb1+
/To9fePGDUJI93atqqqqbt26pTVTJBKdP3+eSV6+fHnVqlUKhYJOHj9+vLm5efbs2XTyjTfeOHXq
FFMJe1l2PbtPkge0BgAAwJPivp7riBEj6J6roaGhWq1ubm7WvaLLly9v377d3d198uTJp0+f9vf3
Zzqv5ubmQUFBZ8+eVSqVFEXNnz9fq+y9e/foCeYvOjOgkBCieXOztbW1qanJyMhIl5AEAsG8efPK
/1ZSUqKnp2dubk7n1tTUzJ8//9KlSx9//HFGRsbJkydffPFF3be3QzKZbNGiRZ9//rmNjU1sbCzT
WY+Ojg4LC9u6datCoYiJiTl8+DCHw9F8aMbMzMzf33/nzp2vv/4603nShZGRkWanpKWlpb6+XiAQ
dH1b2Fvy8uXLhYWFdKh2dnYODg6ar0dgL0s0xlEwND/9R8TExISlA9fY2BgdHe3l5UUIsbGxkUgk
zF2CDsuy69l9EgAA4En318hUb2/vuXPnWlhYREZGEkL69OnTt29fmUymUChWrlzZYS18Pr+5uZnu
d165cmXz5s329vZubm4//PADISQ4OFgoFK5du1Yul6tUqqCgIOYBLF0YGxsz0zwej8/nNzQ06FKw
rq4uPT1da2TkzZs3mWmlUrlu3Toejzd27NjVq1f/8MMPU6ZMoR9Q6yI9Pb0bN27k5OTk5OQkJCTk
5uYuXLiQjqSlpWX79u1ff/21hYXFtWvXhgwZoqenR1EUU7aoqCg6OprD4fzrX//64osvCgoKfv31
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
cM2j7OjRo/v372eSVlZWFEW9++67upRlj5m9LHsuw8jIqKCg4K233upUOwMAALIb4iYAACAASURB
VHSj++4429nZXbx4kZ62sbG5dOmS7hWJxWKFhtLSUiYrJiaGz+czD37NnTs3Kyvr2rVrdNLR0TEn
J0etVtPJ8+fPq1QqsVjMFK+trb1+/To9fePGDUJIu/cxO0skEp0/f55JXr58edWqVQqFgokqLy+P
yZXL5Wq1Wve+5iOKmRDy3HPPEUL+97//tc1KSkr69NNPmeS1a9e0ntGpr6+vrq6mp3/55ReVSmVt
ba1j7p07d65fv56cnNx2vR22VWJiYnJy8v79+xctWuTt7d3Q0NCZLf7L9evX6W3XUl9ff+DAAc0v
Ibqwtrb29vb+6KOPVCqVVpaenh6Px2tqatKc2dTUxOfz6ek+ffr069evurp61apVn3/++dChQ3/8
8ccBAwZoLj9z5sz8/PxDhw4VFhb6+Pgw842NjV1cXMaNG+fn5/fhhx/27ds3KiqKua2RkJDg6uo6
f/58AwMDKyurnTt3Njc3M1evWcp2GDP7etlzGZ6enhwO56effupUUwMAAHQjPc3EiBEj6Dv1hoaG
arW6ublZ94oqKio2bNjAJFtbW5npy5cvFxYWzp49OzY21s7OzsHBgRkqQAgRCATz5s3TfFRZT0/P
3NycSWr9PSaEMIP5usLExOTWrVsPyjUyMtLMbWlpqa+v17wLzO4RxUwIoWO4fft22yxzc/NPP/10
0qRJzz33HH0Nu7y8XHOBuro6Zrq1tbWpqUnz8id7LiGkurpa82Nl6NJW4eHhcXFxBQUFWo/h666u
rk739menp6f3zTff7Nix4/Lly21zVSqVWq02MDD47bffRo8eTX+nMjQ0vHv3Lr2Ar6+v5kBPuVz+
3//+d+bMmd9//z0zUyaTLVq0yNLS8s0334yNjfX09Pzzzz8JIc3Nzbdv337//fdbWloIIRcvXjx3
7ty0adPo4y46OtrKymrr1q1BQUG3bt0KDAwMCgpiPmuWsh3GzL5e9lzG22+/HRMT83BfPAAAALrF
Xz1Xb2/vuXPnWlhYREZGEkL69OnTt29fmUymUChWrlypS0V37twpKip6UG5MTExgYODAgQPnzp17
48YNzbeQ1tXVpaen7927V3P5mzdvPszWdEZdXZ2ZmdmDcmtrazWvknK5XIFAwPTttDpwOr47rFvQ
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
vYCLi0tVVdWqVavs7OzmzJmjVCrff/99pmYnJyelUrllyxaxWOzi4nLsNl+XvwAAIABJREFU2LGs
rKy+ffvSuUOHDi0vL3/nnXeGDRtmZ2e3a9eu5OTk7tqopww+I4DuEh8fv23btocuzuPxHmKca15e
Xmxs7KRJkyQSSXx8/Llz5/h8PpPL0nO1tbUVCoXZ2dnbtm0T/s3ExKTr601OTg4KCmIWNjQ0LC4u
XrFiBZ0cMGDA9OnTKYqaPn06vdKBAwdqBvmgMxIh5LPPPisqKgoNDR04cKCJiUlISEheXp6hoSGd
O378+MrKyoCAADs7O4lEcurUqdTUVKYz15VzDnvM7Otlx36e9PPzy8nJ+emnnyZOnCgSiRITE//z
n/8w1+bZz8CEkLS0tK1bt2ZnZy9evNjR0VEqlQoEgp5tyV7HkJAMPd6b9/e08vR4b3I5gzkkX4/3
fzwuISSWx/Phdq5v1G5vjKVmJw7nKI97So+3nssdziFJeryB7VXbg56RttqzZ09mZiZzmE2YMIE5
bwqFQoqipFIpISQrK8vf358QsmnTJuYk5e7uHhwczFQVERFx5MgRJrlv376kpCQmaWVltXfv3tGj
R9NJNze3yspK5jQqEAhGjRrF7WRLPiPwGQF0lx7puVIUxVzvFIvFFEW5uroyuSw9V5pMJvPx8els
qOzr9fLyKi0tZTrB8+bNUygUpqb//F0aM2ZM20hoLGckZr02NjZ00tLSkqKoqVOn0smwsLCUlBSm
KjoqJreL5xyWmNnXy479PKm1vR4eHhRFDR06lE6yn4EJIVFRURRFubu7t11vD7Yk6Q2jBRhzuRxC
SHxLKzNHjxAuIffuX+weaTXo8rrYa5a3tnqpW6ap1DtaWjZyuXtbWmq7vMbu9Yy0laOjY05Ojlr9
15DZ8+fPq1QqsVjMLHD16lVCSGNjI/1YwN27d5mDISkp6dNPP2WWvHbtmuY9I5FIdP78eSZ5+fLl
VatWKRQKOllWVtbY2BgVFbVw4UJLS8v6+vry8vJeMr6nt8FnBPBEa2xsvHDhAj1dXFxMCLG1te3Z
9R4/fry5uXn27Nl08o033jh16pSOj6x1eEaqr6+vrq6mp3/55ReVSmVtbc2UzcvLY5aUy+VqtZrp
az66cw77etmxnycJIX/88QezvdeuXSOEMN8B2M/AhJA7d+5cv379QRdEe7Ale1HP1ZPLPdHS2qgx
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
7vV3Q7sIvCJJTvbFbpTlPRr5TUkaLokb77nOkaUkmxw4VIiDGjlECADZGjlQCACJsvQHSUjAh7L0
e3H7N3tvRqfTGQyGIUOGREREpKWlFRcXG43GoKAg6waDBg1KTU09cuRIbm7u/PnznZ2d7a/8kUce
SU1NLSgoOHTo0IoVK3x8fGxL1WuOjo5OT08vLCzMysqaNm2aVqu1v8+RkZHr1q0rLCzMzc1dtmyZ
n5+ftSguLi4jI6N///5bt24tLCxMS0sLDQ21czhz587duXOnNUuOjIw0Go3BwcH27xAiIiKie+dN
SfrXnf5G30XAcnfut+ImmesTQmRp5AghBOAA/FWSvtDIHQAA/5Kl4ZJwADbL8iAhRktiYbPOE8jI
yJgzZ052dvbYsWODg4OjoqL0er2lKDQ01GAwJCYmBgUF9evXLyMjY82aNXZW6+3tXVRU9OKLL/r4
+AQGBi5YsGD79u3WUvWaIyMjjx8/PmHChMDAwOjoaIPBMH78eDv7HBISYjAYEhISwsLCIiMjN2zY
kJWV5ejoaCmNi4vbu3fv+vXrBwwYEBoaumXLlt27d8uyDDtIkmStB0B4eLjRaOzdu7edO4SIiIjo
nlomS+/K0h8ksUmWd2jkRbIUcPv3Pm+auQJ4ShLZGnm/Rj6okdfKUpf6ikOE+EyWtmrkqZLkK5Cu
kTs1dRzXSUlJMRqNQ4cOvbFoyZIlu3btsiZ2/fv3NxqNffr0safaIUOGHDt2TKfTWRb1en2PHj2s
NyzVax46dGhiYqK1qqSkpE8//dTOPi9fvjw9Pd266O/vv3Tp0p49e1oW4+LijEbjgw8+aFkcNmyY
0Wj09va2Z0S2JEn68MMPt23bJprp5jcREVEroWnpDlBDWq22QwfLDU0oinLx4kU7S/VAoBBaYLbZ
LIBXJbFSlkbWms43uUt9hXhDkj4xKzsVxRkYL4nZkvSKyXwVyFeU0SYFgABWytJSs/lM840IQGVl
5enTp21viFoFBwd/8803JpPJspiTk1NbWxsWFlZQUNDoiAoLC6uqqlJSUix3PU+cOFFUVGRnzenp
6bbZ56lTp3r16mVnn0NDQ7/66ivr4vfffz9hwgTbDc6ePVtSUmKtGYCLi0tpaWmjI7KSZXnWrFkP
PfTQqFGjFEWxP5CIiKj1Y+ba6gwfPnzOnDmWzyaTyXaKpHrpVeCSgliT2fJs1HGTsl0jD5bEenNT
05f/lUSuoiyrqxglJiVdIz8hxFabxChGElXAYUVZLUteQhQoymyT+XLTRlTXXEnJTTMwvV4/YsSI
Z555xrpGo9F4eHjYM6LS0tKRI0e++uqrU6ZMmTlzZnFx8fTp03Nzc+2p2cPDIzY2duDAgZ6enpb7
srZZr3qfnZycysvLVTpWWVnZYM1t3Td1cHBYvHhxnz59xowZc/ToUfsDiYiI2gRmrq1OZmZmTEyM
5fON2Y9K6SkAUKyP9J8HzgGeEEBTM1d/IbbYpL9lQCXgKwTqO9BV4I+SNK7WFCdLBxWsNJmWy9LT
kkgxK00ZkUV1dfVNe1VRUZGZmbl06VLblefP23uL2WAwTJ48WZblvn37Tpw4MTk5+dFHHz1z5kyj
NVvmv06aNCk/P7+2tnbevHkN7rmq99nV1dXOHt4uFxeX5ORkrVYbHR198uTJu9QKERFRC2Lm2uqU
lZWVlZXdQel+RYmVJDfgHADAHXADSq9PWx2BpyXxo4Jdt/M78k+K4m9z488dcAR+rK9ZAO9I0nKz
+TTgA5GqmM1AsQKf+qT5jkekLi8vLyAgwGg01nVDiG7dup07d86e2ICAAFdX14MHD5pMpry8vKlT
px44cMDb29uSuarXHB4enpSUdPDgQUtR79697f9RPj8//+GHH7Yu+vr6Ll68eP78+d9++62dNdyK
TqdLTk6uqakZM2ZMgxkXRERE942293ZMupVtZuWMgn/KUj8h+gmRKEtlQMb1UwWcBSZL0ogbXtrq
IxAkRJAQnQUABAgRJIRf/Vb/MiuDhHheEr4CPYWYKUs/Azvrax4piVpgk1kBcBKKJcpfNEyam92q
Vat69OgxY8aMwMDA7t27z549e/PmzV5eXvbERkRErFy5cvDgwV27dg0ICHjttdfKysqKi4vtqbm0
tDQ8PFyv17u7u8fHx1dVVXl5eTk4ONjT7sqVK7t16zZr1qxevXqFhYUlJia6ubnl5eXd2R6wFRsb
GxQUtGDBAh8fn5713N3dm14zERFR68F7rvePGmCCyTRZlhJlqQb4TlFmmEyX7YuNl6Rgm/mUK2QJ
QImijDKZAXypKIrJPFoSL0vSZeA7RXnFZLoEAOgMvChJL9TWPcz0vlmZIYmnZakUyqYmz69Vd/jw
4XHjxr3xxhtpaWlXrlw5dOhQTEzM6dOn7Yldu3ats7PztGnTunTpUlVVlZ+fP27cuMuXL9tT81tv
vZWQkJCTk3Py5MlFixatW7fugw8+yM7OHjhw4KVLl9Tbzc3NfemllyZNmrR+/fqampqsrKwpU6ZY
222KwYMHa7XapKQk25WJiYnLly9veuVERERERERERHQb+LpHug9t3LjxVkV79uxZuHDhvexMs7j/
RkRERERERERERERERERERERERERERERERERERERERPeQ3NIdIGqqHTt26HS6Q4cOtXRHiIiI6O7i
39AiIiIioraBmSsRERERtQ3MXImIiIiobWDmSkRERERtAzNXIiIiImobmLkSERERUdvAzJWIiIiI
2gZmrkRERETUNjBzJSIiIqK2gZkrEREREbUNzFyJiIiIqG1g5kpEREREbQMzVyIiIiJqG5i5EhER
EREREREREREREREREREREREREREREREREf1yxMXFff311y3YgU8++SQ9Pb0FO9CM9u/fbzQajUbj
Z5991tJ9ISJqBN8tQHQT7fvD/UM8sBte2+H6LmTv24v1sMSmw3Vuw1jhCOc4eGXggd1wWwSNT31U
JDz/Bc91cEkA5LqVjmPh9o/mGE8rlpmZ2adPn3vcaFRU1IYNGwoKCvbt27d48WJfX9/brWHHjh1p
aWl30HSLjFfdc889N2zYsD179rR0R4iIGsfMlaihduFwW4Da4zg3GRfmQRMAt0UQWrtitb3h9k/U
luLcZFyYD00g3BZBtLu2ges8tHsYF2bh3BQIPVwX1p2FTrG4uAw/PwtNN+h+AwAaX+hH48Lc5h8g
AElqFee+i4uLv7//PW40JCRk9erVJ06cePnll+Pj47t37/7xxx+3a9eu8UgbycnJS5cuvd2mm3G8
zXgES0pKDAbDxYsXm6tCIiIiundc58Ej6dpi+37onANtD7tind+GZ+q1r4TtwtE5B9pe11fVvW5R
7oKOr0ByAoAHvoUmEABcE+H4B0CC+wfo8PvmGA+g0+kMBsOQIUMiIiLS0tKKi4uNRmNQUJB1g0GD
BqWmph45ciQ3N3f+/PnOzs72VNuzZ8/Dhw8/99xzBQUFH330UUhIyJ49e7Kzs3v16mXdJjo6Oj09
vbCwMCsra9q0aVrttW8AkydPNl4vPj7etv7IyMh169YVFhbm5uYuW7bMz8/PWhQXF5eRkdG/f/+t
W7cWFhampaWFhobauTfmzp27c+dOa+YXGRlpNBqDg4PtiXV1dbX29sbZAtOnT09JSXnssccsQ/7i
iy/Cw8PtH6/KUVA/gurtQvUoWC1atIizBYiIiNoeoYVwvLZoyT41D9oXLEE42MSGXJf1OsXCc+3N
4zzXwmE4hAM6bUL7QXAcDbcFd9T7W8jIyJgzZ052dvbYsWODg4OjoqL0er2lKDQ01GAwJCYmBgUF
9evXLyMjY82aNfbUGRQUdPz48YSEBD8/v2PHjm3cuNHNzW3Dhg3vvvuuZYPIyMjjx49PmDAhMDAw
OjraYDCMHz/eGu7u7v7kk08ajcYnn3wyKCgoKCioU6dO1tKQkBCDwZCQkBAWFhYZGblhw4asrCxH
x7oDExcXt3fv3vXr1w8YMCA0NHTLli27d++WZRl2kCTJWg+A8PBwo9HYu3dve2JlWbZ0dcGCBTdm
rnFxcQcOHFi9enXnzp1dXFw++uijrKwsa6/Ux9voUVA5gurtqh8FK2auREREbZkMyQXtf41Om+B6
Zz/ZS3BbCM+1gKhb4b4UrnPh+Ad0+hxeX8FtETQBdUXtQuDxGTp9Ceep0PjCaxtkz2YZRp2UlBSj
0Th06NAbi5YsWbJr1y5rotO/f3+j0WjPXMygoCCj0RgVFQUgKytrxowZAKZPn25NuYYOHZqYmGjd
Pikp6dNPP7WtoU+fPrdqa/ny5bapob+//9KlS3v27GlZjIuLMxqNDz5Y931i2LBhRqPR2/t25iMD
ACRJ+vDDD7dt2yaEaHxrG/Hx8TfNXI8fP+7l5WVZfPzxxxv0SmW8jR4FlSOo3m6jR8GCmSsRtQma
lu4A0d2i1Wo7dOhg+awoSoNpfOqlADr8Fi4zAaAqHRdm337zEpzj0C4YZS8DSt06oUe7QECL8gRA
oOMrcF+Bn/8H5vOoyUfZaMtGcF+Bi0th+rk5R1RZWXn69Ont27ff2NPg4OBvvvnGZDJZFnNycmpr
a8PCwgoKCuwZ6E8//QSgqqqqrKwMQHV1tU6nsxSlp6fbpnenTp2ynUigLjQ09KuvvrIufv/99xMm
TLDd4OzZsyUlJdaaAbi4uJSWltpZPwBZlmfNmvXQQw+NGjVKUZTGA+xw5syZ06dPWz6fO3fO/l41
ehRUjqB6u005CkRErQ0zV7pvDR8+fM6cOZbPJpPJdlpno6UAruzD2QnQdIXDcHh8jLOvwFxhb9PC
Aa5zoO2Bs+NRe/zaeqUW5ks4/yZgBoDzx+GVDt3juLzh2jaOMVCqUXMY7qsge6HmMC7MhnK5GUZU
UlJy0/xMr9ePGDHimWeesa7RaDQeHh52DrampsbaaN3w6+9fenh4xMbGDhw40NPT03I3saioyM5q
nZycysvLVTaorKxssOa27ps6ODgsXry4T58+Y8aMOXr0qP2B6q5cuXJnvbLnKNzqCKq325SjQETU
2jBzpftWZmZmTEyM5fON/79XL4UG5vOoyUFNDqq2wysdDiNw6SO72pWc4fY+hBZlf4Tpp+uK6hbN
dYvm8zCfg3xtriPkrtCPQ9kf4TwNNQdxcRXcl8HhKVSubfKIgOrq6pt2uKKiIjMzs8GT8ufPn7dj
rI2wzNqcNGlSfn5+bW3tvHnz7L/bV1FR4erq2vQ+3JSLi0tycrJWq42Ojj558uRdauW22HMUbnUE
1TXlKBARtTbMXOm+VVZWZvn9+nZLPTfgahHK36lfNgGahm/FEo5weAqmn1C96/r17eH2PnAVZeOh
XGpYc80BOL0ByQ3mcwAguUNyg+k/1mC4vI2LK2A6DdkHl1MBM64WQ65/5+sdj0hdXl5eQECA0Wis
64UQ3bp1s/zi3ETh4eFJSUkHDx60VNu7d+8GKbXlNq1Gc5MLUX5+/sMPP2xd9PX1Xbx48fz587/9
9tsm9kqn0yUnJ9fU1IwZM+YevwpKZbwteBQsmmu+BBHRXcXMlaihyxvh9BeYTuNKNoQOjs8CAtXX
/8EmyQlOk3Flb8PMteNr0ATg/F+g6XJtpamsLlWt2gbHcXD7By4uAwD9KzCVoSqzbjOHEVBqcXkT
AJhOQvYDvoHGH1f2362RWqxatWrjxo0zZsz49NNPZVl+/vnnn3rqqcGDB1vnTd6x0tLS8PBwvV7f
vn37119/vaqqys/Pz8HB4fLly5YNfvzxR5PJ9Pzzz2u1Wp1O16VLl7Vr616+sHLlypSUlFmzZq1d
u7Z9+/ZTp051c3PLy8trYpcAxMbGBgUFvfzyyz4+PtaVp0+fPnv2bKOxvr6+lldKOTk5abXagIAA
ANXV1XbeuFUZbwseBYvLly/7+/v36NGjpqamsrLSMnWYiKi1YeZK1FBlCpQrcBgJx1FQalBrwLnX
cfWYXbG6RyC0cHv/upUXl+DSxwCg1ODcBDhNhut8KDWo+Q4XZtTNYZU7Q/8izr54LcR5Ohyehqm0
Lpe9ew4fPjxu3Lg33ngjLS3typUrhw4diomJaXrCBOCtt95KSEjIyck5efLkokWL1q1b98EHH2Rn
Zw8cOPDSpUsAysvLZ86cOX78+N/97nfl5eX5+fnWTC43N/ell16aNGnS+vXra2pqsrKypkyZ0iDZ
ujODBw/WarVJSUm2KxMTE5cvX95o7Jo1a7p27WpdtDxDdvjw4aefftqeplXG24JHwWLdunUDBgz4
4osvAOzZs+eFF15oetNEREREREREv1C39wpDIvpF2bhx462K9uzZs3DhwnvZGTs1pc9tcbxERERE
RERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERE
RERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERE
REREREREREREREREREREdJ/bvHmzsd7EiRPtD8zOzrYGxsTE3L0etn5xcXFff/11C3bgk08+SU9P
b8EONKP9+/db/lF99tlnLd2X62haugONa98f+j9BGwClGjV5qHgfptLmiRWOcHoduschtKj5P1Qk
ovY/ANA+Ek5/AQSuHkP5dMAEAI5j0T4U5yY39/CaVRP3Vcc/QRMApQo1eahYcl2s47NwGA7ZG0o1
rn6Hi8txtRhoy/uKiKi12bp163vvvQegvLzc/qhRo0bJsizL8o4dO+5a1+61zMzMP//5zwUFBfey
0aioqNdff7179+6VlZU5OTmJiYk//PDDbdWwY8cOvV5/B023yHjVPffccxqNJi4urn379i3dl+tI
Ld2BRrQLh9sC1B7Hucm4MA+aALgtgtA2T6zrPLR7GBdm4dwUCD1cF9btD6dYXFyGn5+Fpht0vwEA
jS/0o3FhbvMPsBk1ZV9pe8Ptn6gtxbnJuDAfmkC4LYJoV1fqGAOnSaj8DD+PxLnxAOC+HJIz0Gb3
FRFRK3Tp0qUTJ06cOHHiwoUL9keVlpZaopreAUlqFVmBi4uLv7//PW40JCRk9erVJ06cePnll+Pj
47t37/7xxx+3a9eu8UgbycnJS5cuvd2mm3G8zXgES0pKDAbDxYsXm6vC5tIq/o2qcPwfXC3GhTmo
yUX1TlS8B40PNIHNENu+H9r3Q3kcqnej5iDK30b1dkh6AJAfQG0pYIbpJOTOgATnGahYAtPPd2uY
zaIp+8rhGdT+iPL4utgL86Dxgea/6kq1wbh6FJc3wfQjrh7FpSQIR2i6AXd/Xw0aNCg1NfXIkSO5
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
bYLr3DuqQYLbQniuBUTdCuep8EyFSwK8dsArA67/gKb+RmG7EHh8hk5fwnnqXZknkJKSYjQahw4d
emPRkiVLdu3aZU3s+vfvbzQa+/TpY0+1Q4YMOXbsmE6nsyzq9foePXpYb1iq1zx06NDExERrVUlJ
SZ9++qmdfV6+fHl6+rXb1/7+/kuXLu3Zs6dlMS4uzmg0Pvhg3beNYcOGGY1Gb29ve0ZkS5KkDz/8
cNu2bUKIxrcmIiJqO/iEVquj1Wo7dOhg+awoysWLF+0vheVpqpkAUJWOC7Nvv3kJznFoF4yylwGl
fmU7SM4wncD5DZBc0fFPcF+Jn5+D+Rxq8lE2GgAg4L4CF5fC9HNzjqiysvL06dO2N0StgoODv/nm
G5PJZFnMycmpra0NCwsrKChodJSFhYVVVVUpKSmWu54nTpwoKiqys+b09HTb7PPUqVO9evWyrVyl
z6GhoV999ZV18fvvv58wYYLtBmfPni0pKbHWDMDFxaW01O7n7ABZlmfNmvXQQw+NGjVKUZTGA4iI
iNoOZq6tzvDhw+fMmWP5bDKZbKdINloK4Mo+nJ0ATVc4DIfHxzj7CswV9jYtHOA6B9oeODsetcev
rb8wCxdmXVu8ehidtqDDb1G59tpKxxgo1ag5DPdVkL1QcxgXZkO53AwjKikpuWkGptfrR4wY8cwz
z1jXaDQaDw8Pe0ZaWlo6cuTIV199dcqUKTNnziwuLp4+fXpubq49NXt4eMTGxg4cONDT09NyX9Y2
61Xvs5OTU3l5uUrHKisrG6y5rfumDg4Oixcv7tOnz5gxY44ePWp/IBERUZvAzLXVyczMjImJsXy+
MftRL4UG5vOoyUFNDqq2wysdDiNw6SO72pWc4fY+hBZlf4TpJ7UtTWdgroDc+doauSv041D2RzhP
Q81BXFwF92VweKoutW3SiIDq6uqbdqOioiIzM3Pp0qW2K8+fP6/WdRsGg2Hy5MmyLPft23fixInJ
ycmPPvromTNnGq3ZMv910qRJ+fn5tbW18+bNa3DPVb3Prq6udvbwdrm4uCQnJ2u12ujo6JMnT96l
VoiIiFoQM9dWp6ysrKys7A5KPTfgahHK36lfNgGahm/FEo5weAqmn1C96/r17eH2PnAVZeOhXGpY
s8vfUPsfXFpdt6jxheSCWuurQgVc3sbFFTCdhuyDy6mAGVeLIdc/rH/HI1KXl5cXEBBgNBrreiFE
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
bm2D9hIAWA9HTTnUWYZKYT8f5eugvQpRR1TGAjWozoeoY2N7ZFpmZqZcLlcqlbWtEAi8vb31d5wb
SaFQbNmy5dSpU/pqu3XrVmdIrb9MKxbXcyLKysp67rnnDEkPD4+vvvpq6dKlR48ebWSrJBLJ1q1b
1Wr1xIkTn/CroEz09ynuBb2mmi9BRPRYceRKVFdlDGz/Ce1V3E6DQAKbVwEBqu79wSahLWxn4fax
uiNXcUcIrAFA5AYAYjl05dDdhuZnAIAItu9DIMHto7D0h2wiyr6ErvZmO6SjodOgMg4AtJcg8gT+
B7EXbp94rN3Fhg0bYmJiwsPDv/nmG5FI9Prrr7/yyiuDBg0yzJt8ZEVFRQqFQiaTWVlZvf/++yqV
ytPTUyqVVlZW6gtcvnxZq9W+/vrrFhYWEomkffv2O3fu1GetX79+x44dCxcu3Llzp5WV1dy5cx0d
HTMzMxvZJABz5szx8fF56623OnbsaFh49erV69evNxjr4eGhf6WUra2thYWFXC4HUFVVZeaFWxP9
fYp7Qa+ystLLy6tLly5qtfrWrVv6qcNERM0NR65Edd3aAd1tSMfAZix0amgKcON9VBeaFWsXDsse
d5NOawFAcwG/jwOA28dQ+jlsJkH2JrS/ofQLVO6qLSlyg+xNXH+zNlkeBbswSIdDW1Q7ln18cnJy
Jk+e/MEHH+zZs+f27dunT58eN25c4wdMAD788MNFixalp6dfunRp5cqV0dHRmzZtSktLCwkJqaio
AFBSUvLJJ5+8++67L730UklJSVZWlmEkl5GR8fe//33GjBm7du1Sq9WpqamzZ8+uM9h6NIMGDbKw
sNiyZYvxwsjIyLVr1zYYu23btg4dOhiS+mfIcnJyhg8fbs6qTfT3Ke4Fvejo6D59+iQkJABISUmZ
MmVK41dNRERERERE9Af1cK8wJKI/lJiYmAdlpaSkrFix4kk2xkyNaXNL7C8RERERERERERERERER
ERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERER
ERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERER
ERERERERtXLx8fHKO6ZPn25+YFpamiFw3Lhxj7Dqr7/+OjEx8RECH2vN9caGhoYePnzYRNSJEyf0
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
Dz74v//7P1NmlJeXFx0dvXbtWsON9+7dM6ZtaGioj4/PlClTkpKStFrt0qVLDc+55uXl2draVtNc
rVZPmzZNJpN16NBh8uTJ27Zt69279507d2o3kb8scfWVwMLCoqY9bN++/cyZM1u2bDl27Nhvv/1m
ZKs7d+7Y2FRezimVSlUqVV5eHoBbt24VFha6u7sHBQVNnz69efPmb775pqen59mzZ2s6NqKGzpQj
P6P1P9pYNYalexJLWI6E4s0nRy26QV+I0j9qGJXAZi7y10OXDZk7yi4B5Si7DFk9vsT89OnTb775
prgcs2fPnubm5qdOnTKso1Kpxo8f//ht/6pvW31UIpEsWbJk5cqVt27d8vDwuHjxok6nS01NrXK1
fi0kJiYKF5gLMjMz9Xq98OntM/n7+//yyy/nz5/XarUSiaTKtZZJSUmvv/66WGzRokVERES3bt2E
ore3t3A5uU6nS0xMnDVrlkKhEFfQkvHy8/OtrKzEYtu2bWvaQ0xMzMmTJ3fs2BESEmL8rdZSU1O7
dOkiFv39/WUyWWJiIgC9Xn/lypU33njDysrqjz/+OHHixBtvvOHm5iaciyWqt5529DaFKUd+Rut/
tLGq75mreNdVmSsAyL1h5gP5oxmR1ApW0yqWqz6hh5bQZgHamkWVQ6HXonAfAOhuQOYBAHJP6G6Y
MJnnbPPmzS4uLsuXL/fz8+vfv39ISMihQ4fS09MN69jY2MydO3fUqFE1alt9dPTo0WVlZT///DOA
69evt2zZEoC3t/f169dNnNHGjRvbtGmzYMGCVq1atW7dOiQkJCIiwsj0JSsry9/fX6VS2dvbBwcH
FxUVOTs7K5VKIbphwwYvL6+FCxe2a9fOz88vNDTUzs5OyGwAdOnSZcOGDX369GnevLm3t/dnn32W
k5Nz+fJlE6fzF5ScnGxjY/Puu+/KZDJfX9/33nuvdv0sWbIkNzc3NDTUyE/t161b5+XlNW/ePE9P
T39//4ULF6akpIhHc41G069fv+PHj5eXl588edLPz8/Ozq7KXwpRffO0o7cpTDnyM1r/o/RyPPGb
rhx/fqSOzBWu8bBb/ZQeNsBu5dP7f1JU5gqnXyFzqSia+cBhOxz3wO5/IVHWeiovgr+/f1hYWFpa
Wnx8fHBwsJioicQrEGva9mnR5s2bx8XFiTfLbNu27YEDB44cObJp0ybxJlOmCAwMDAsLu3TpUmJi
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
DR069GUP4Qnq56iIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiI
iIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiI
iIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIqFGKiIjQPDR58mTjG8bFxYkNhw8fXtP9Ojg4rFq16syZ
M2q1Oikpadq0aVUq/Pjjj5GRkTXt1lBAQIBGo/H29q5RK9P3W3+cPXtWeIF++umnlz2WBk/+sgdg
LOtZUA5D9t9Qnlur5rOhHIp7s1EcXbnRojua/hfkLaEvRlEU8v8JfTEAWATC6n8ACcrSkTsf0AGA
5RhY+OJu1b/o+ojPFRFRQ/Trr78uX74cQG5uDQ7fH3zwgUwmk8lkR48ercVOZ86cGRQUtHz58szM
zPLy8pycnCoVjh49qlKpatGziWq93+jo6KlTpyYnJ9f5kGpt5MiRcrl8zpw5FhYWL3ssDV59z1wl
Cpi9CsuxMO9Y+04sukPR57GNr8Puf1EYjrzVkHug6eeQWiF3HgBYzUD+P1EcA4ftULyJ4mjIW0A1
Cjljaz+GF4DPFRFRg1ZQUHDt2rWatsrKygIgk8lqt9MOHTrs27dv69atT6uwbdu22vVsotrt18bG
xtPTs04GIJVKy8vL66SrzMxMAPn5+cxcTSd92QN4BoftsFuF8tvI/76WPUjtYPMV7n9bdbvlhyhN
xv0lKE1E4T7krUCTtyFzBgCZC7RZQDl0NyBzBaSwXoC8NdD9adJcnrdG+Vz16NFj7969ly5dSkhI
WLZsmbW1tbC9bdu2KSkpI0eOTE5O3rJlS6dOnWJiYuLi4tq1aye2HTx4cGRkZGpqamxs7OzZs83M
zAx7DgwM3L17d2pqakJCwrp16zw8PAyjvXr12rt3b3Jy8oULF9avX+/u7l4382mM+BoRNVAJCQka
jeaVV14ZNWqUuN5g6NChQtTW1lbc+Pin9vPnz9+5c2dQUJDwJ3zw4EF/f3/DCpMnTz537lxKSsrm
zZudnJyMH5Up+502bVpCQgKAffv2CT0EBwcbNn/a8QqAQqFQq9Vvv/12ly5d9u/ff/ny5fT0dB8f
HwDdu3fXaDRvvfWWYVcbN248fvy4RCIRitUfzegvRNYMEnMAaNIXrvGQ2tS4B9sVaDoZUhu4xkNh
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
lJQkZq4pKSnjxo374osv9u/fX1JScuHCheHDhxuZtgrCwsK2bdv2xx9/qNVqw+1ffvnlokWL4uPj
b9y4sXr16t27d2/evDkuLq579+6Ga3x3797drVu3gwcPAoiJiRk/frzxuyYiIiIiIiIiogpGXfJM
9NcRHh7+tFBMTMyqVate5GCIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiI
iIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiI
iIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIGraIiAjNQ5MnT66TPr29vTUaTUBA
QJ30Vofi4uLEyQ4fPvxlD4caj1r/HfF3stFzcHBYtWrVmTNn1Gp1UlLStGnTXvaIyAjWs+AaD6lN
zVpZdIXDv+ByAs6RsP0WMrdHo93hsAUuJ+B8GFYzIFE83B4Ix5/huBs2iwBZxUbLMbBbYfI0nrOu
XbuGh4dfunQpISFh6dKl1tbWddX2adEePXpERkYePnx41apVMlnFk/XJJ59s3LixriZF9V9ERMQ/
//lPDw8PDw+PGv3WVaPeZq5ubm4eHh4tW7ZklkB1q9Z/R6b8Tr74/xqM1jQKYNmyZcnJyePGjevR
o0e3bt1at24thnr27BkWFpacnHz27Nnvv/++RYsWdbhfqg2JAuadYLsCztE1zlzNXoPrGdh8A/PO
UATBcQ8c90JiXhG1eB2u8bCeDXNfKAfB+RhsFlaEHMOheBOQwuEnKN4CAHkLOP8GmWNdTq3OtW7d
Oi0tbfny5Z07d+7Tp8/x48e3bt1aJ22riUZFRfXt21cqlR48eLB///4AvLy8Tp8+7ezsXOcTpHor
IiLi22+/rds+623mKpDJZMxcqW6Z+HdUi9/Jl/Jfg9EaRQWRkZELFy7EYwIDA9Vq9aJFiwICAvr1
63fkyJFjx46ZmZnV1X6pNhzD4HIC1jOhHFzjzNV6Lhz3AtKKork/XONh1q6iaLcK9v+qrNzkXbie
g8wZAFxOQd4KAGxDYfkhIIX9ZjR5tw6m81wtXbo0MjJSIpEIxcDAQI1G89prr5netppoWlqa8OZv
3bp1EyZMkEqle/bsGTJkSF1NqkePHnv37hXeES5btkx8R9i2bduUlJSRI0cmJydv2bKlU6dOMTEx
cXFx7dq1E9sOHjw4MjIyNTU1NjZ29uzZ4h+zOIvdu3enpqYmJCSsW7fOw8PDMNqrV6+9e/cmJydf
uHBh/fr17u7udTWjRulp/3HnzJnz+++/i0VfX1+NRtO+fXuhOH/+/J07dwYFBQkv08GDB/39/cXK
VTLXf/zjHykpKR06dDCmLYDevXvv27cvLS0tMTFxzZo1zZo1E7b/9NNPy5cvrzJOc3NztVo9cOBA
Y3oWMHOlOvfiM9dqju1SqXTXrl27du2SSiv+iXbu3Dk9Pb1v377PbMtoHUYTEhI0jxk6dKgQXbNm
zS+//CK+oN27d6+r/dZn0mdXeanufo7sv+H+Mugf1Ljt/cXI+RAof1jWAqgsytxQllpZueQ0IIG5
LwDorsO8AyRKmL0C7TVYjoA+H0UHTZjGCxEQEHDixAm9Xi8U4+Pji4qKAgMDTW9bTfTq1at+fn5K
pbJNmzaZmZkfffRRXl7e3r1762RGvr6+mzdv1mg0gwYNmjRpkp+f35o1a4SQVqtVKBSvvfbau+++
271793nz5g0aNOjmzZtjxowRKgQGBoaGhu7fv//999//7rvvPv744wkTJog9d+rUadu2benp6WPG
jJk8ebKjo+OOHTssLS2FqJub2w8//HDw4MF33nnngw8+KCoq2rRpU53MiAyVlZV5e3uPGjVq/Pjx
3bp1+/PPP1euXCmuOTHUt2/f6dOnf/755xcvXjSmbUBAwIYNG5KSkt57771PPvnEy8tr69atwluX
zMxMT0/PKv17enrKZLKMjIwajYqooavm2F5eXj59+vRXX3113LhxABQKxbJly/bs2XPkyJFntmW0
DqMffPBB//79s7Ozd+/e3f+ho0ePCtGpU6eK//UAaLVaACUlJabvtz6r75mr7ib0pbVtXA594cPH
UqjGQ6tB2eWHwRzImlfWlSoBQOYEAPeXQDkMjntQchq6a1CNwf1FtR3DC9SsWbObN2+6ublpNJot
W7bodLrs7OzmzZs/u+Wz2lYTnTdv3ujRo6Oiok6cOHHlypVPPvnkyy+/rKsZTZgw4ebNm7Nnz1ar
1WfPnp03b17Xrl3FM3YSieTw4cPXrl3Lzs6+ePHi3bt3L1686OZWsZbZxsbml19+Wbt2bUZGxi+/
/HL69Onu3buLPU+cODEzM/Orr766cOHCmTNnvvjii4sXL4qnXdu1ayeXy3/66afr169nZGTMnTt3
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
--=-=-=
Content-Type: text/plain


-- 
Ihor Radchenko // yantar92,
Org mode contributor,
Learn more about Org mode at <https://orgmode.org/>.
Support Org development at <https://liberapay.com/org-mode>,
or support my work at <https://liberapay.com/yantar92>

--=-=-=--





Information forwarded to bug-gnu-emacs@HIDDEN:
bug#58558; Package emacs. Full text available.

Message received at 58558 <at> debbugs.gnu.org:


Received: (at 58558) by debbugs.gnu.org; 10 Apr 2023 10:05:52 +0000
From debbugs-submit-bounces <at> debbugs.gnu.org Mon Apr 10 06:05:52 2023
Received: from localhost ([127.0.0.1]:34366 helo=debbugs.gnu.org)
	by debbugs.gnu.org with esmtp (Exim 4.84_2)
	(envelope-from <debbugs-submit-bounces <at> debbugs.gnu.org>)
	id 1ploPH-0007SL-Nt
	for submit <at> debbugs.gnu.org; Mon, 10 Apr 2023 06:05:51 -0400
Received: from mail-lf1-f44.google.com ([209.85.167.44]:37527)
 by debbugs.gnu.org with esmtp (Exim 4.84_2)
 (envelope-from <mattias.engdegard@HIDDEN>) id 1ploPF-0007S5-SB
 for 58558 <at> debbugs.gnu.org; Mon, 10 Apr 2023 06:05:50 -0400
Received: by mail-lf1-f44.google.com with SMTP id a23so6291653lfk.4
 for <58558 <at> debbugs.gnu.org>; Mon, 10 Apr 2023 03:05:49 -0700 (PDT)
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
 d=gmail.com; s=20210112; t=1681121144; x=1683713144;
 h=to:references:message-id:content-transfer-encoding:cc:date
 :in-reply-to:from:subject:mime-version:sender:from:to:cc:subject
 :date:message-id:reply-to;
 bh=EvcSk7jQ0AUC+7JU7BRku9XH7yiHWaigtm+FuqtF96o=;
 b=JXjI5l5WT6XNqOWpzXKW5YTccN7EqPopKFZtCsZPvA8lF3gPmbuT0eFbsuwGUR+EiK
 Kq641yQx5U9RyGSig+MPu+//LLqjjsvCr+D2+MfikluNM4gU8nHAf7mHBDAu6UqYUbm/
 BXdfu4emh9AtCqbWHelni4+1XVRx//7/naKhQumMujtodxV+wlabC88spa1Zy4rblYHF
 d0zRmYICpH+UFXzzpw5kVey0K4I9RzcZfXpQTMIByHFDb05PYc8HvB4Nw1QOuCIil/CJ
 TgfqdtGEMv3vKWpg/QE3LT8B+70ZRiyRrtubkzoyQ6YuZWizXTor5uRjmzgFsuLyGmfs
 U7ng==
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
 d=1e100.net; s=20210112; t=1681121144; x=1683713144;
 h=to:references:message-id:content-transfer-encoding:cc:date
 :in-reply-to:from:subject:mime-version:sender:x-gm-message-state
 :from:to:cc:subject:date:message-id:reply-to;
 bh=EvcSk7jQ0AUC+7JU7BRku9XH7yiHWaigtm+FuqtF96o=;
 b=pksagdrM3NeFZn8ZPv3Hv+qREx/iLqYyL3s7g7N5bywuU3wpJpGYx6VX6dZ/+uYbfi
 3R3I8DSBZ8gwt4RhXjaBIYtApV6NJK52WmwLcCqUqlkGLphnBqCnditR+mC8vslmuM3e
 22Srwt/9jqljSZkp7OEStgXblX760ndTzZKoqTce7wJg8FZ7AjK7XDwFJufMmpBt4Vqf
 pZ5atxLlXJ6SSLL1SGY7kn71rU+dqVFGCIiXnKxJeYVG7HjSyvNLmOLUmSrajzuQuZ7a
 Y8Ox0lvcnI+eTsD0lZnxDuRsvV2eiaCCq7b8nc08mkWkt/hR22SHAveRPFKwMpNgnyTR
 bVCg==
X-Gm-Message-State: AAQBX9eKBM1mTSZ9w26ewXqMNakeWNvI043uP8b0xxpCaynmYjUQnsN9
 acfCMcbP9VS6PLknCmAaDbM=
X-Google-Smtp-Source: AKy350ZrIQIzHpWc9QH2Cmgb10poBPcqtkqRsTZ3Kq3HZ0IlgCErjmyoEmtD325Vdo29hQkxxb8YUg==
X-Received: by 2002:a05:6512:1287:b0:4de:56a6:236b with SMTP id
 u7-20020a056512128700b004de56a6236bmr2590065lfs.28.1681121143647; 
 Mon, 10 Apr 2023 03:05:43 -0700 (PDT)
Received: from smtpclient.apple (c188-150-165-235.bredband.tele2.se.
 [188.150.165.235]) by smtp.gmail.com with ESMTPSA id
 x6-20020ac24886000000b004eb3140a6e8sm2017497lfc.200.2023.04.10.03.05.42
 (version=TLS1_2 cipher=ECDHE-ECDSA-AES128-GCM-SHA256 bits=128/128);
 Mon, 10 Apr 2023 03:05:43 -0700 (PDT)
Content-Type: text/plain;
	charset=us-ascii
Mime-Version: 1.0 (Mac OS X Mail 14.0 \(3654.120.0.1.15\))
Subject: Re: bug#58558: 29.0.50; re-search-forward is slow in some buffers
From: =?utf-8?Q?Mattias_Engdeg=C3=A5rd?= <mattias.engdegard@HIDDEN>
In-Reply-To: <87a5zgkqjn.fsf@localhost>
Date: Mon, 10 Apr 2023 12:05:42 +0200
Content-Transfer-Encoding: quoted-printable
Message-Id: <4C1F9D83-2789-49B1-A4FF-EF7EC1CEB945@HIDDEN>
References: <691CBF62-4E1E-495C-8AAF-8B0EEE3E199A@HIDDEN>
 <87a5zgkqjn.fsf@localhost>
To: Ihor Radchenko <yantar92@HIDDEN>
X-Mailer: Apple Mail (2.3654.120.0.1.15)
X-Spam-Score: 0.0 (/)
X-Debbugs-Envelope-To: 58558
Cc: 58558 <at> debbugs.gnu.org, Eli Zaretskii <eliz@HIDDEN>,
 Ihor Radchenko <yantar92@HIDDEN>, Stefan Monnier <monnier@HIDDEN>
X-BeenThere: debbugs-submit <at> debbugs.gnu.org
X-Mailman-Version: 2.1.18
Precedence: list
List-Id: <debbugs-submit.debbugs.gnu.org>
List-Unsubscribe: <https://debbugs.gnu.org/cgi-bin/mailman/options/debbugs-submit>, 
 <mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=unsubscribe>
List-Archive: <https://debbugs.gnu.org/cgi-bin/mailman/private/debbugs-submit/>
List-Post: <mailto:debbugs-submit <at> debbugs.gnu.org>
List-Help: <mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=help>
List-Subscribe: <https://debbugs.gnu.org/cgi-bin/mailman/listinfo/debbugs-submit>, 
 <mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=subscribe>
Errors-To: debbugs-submit-bounces <at> debbugs.gnu.org
Sender: "Debbugs-submit" <debbugs-submit-bounces <at> debbugs.gnu.org>
X-Spam-Score: -1.0 (-)

10 apr. 2023 kl. 11.57 skrev Ihor Radchenko <yantar92@HIDDEN>:

> Generating agenda with Emacs master + your patch:
>=20
> :regexp-cache-hit: 6225399 :regexp-cache-miss: 109490
>=20
> Emacs 28.3 + your patch:
> :regexp-cache-hit: 4968571 :regexp-cache-miss: 79637

Those miss rates are similar (1.7 % and 1.5 %, respectively) although =
rather higher than we'd like. Probably no serious regexp cache thrashing =
going on then, but it was good to be able to exclude it, thank you for =
humouring me!

> Also, I tried to play around with increasing REGEXP_CACHE_SIZE in the
> past. It does not make noticeable difference in my setup.

Right, that's consistent with the data collected above.





Information forwarded to bug-gnu-emacs@HIDDEN:
bug#58558; Package emacs. Full text available.

Message received at 58558 <at> debbugs.gnu.org:


Received: (at 58558) by debbugs.gnu.org; 10 Apr 2023 09:55:39 +0000
From debbugs-submit-bounces <at> debbugs.gnu.org Mon Apr 10 05:55:39 2023
Received: from localhost ([127.0.0.1]:34359 helo=debbugs.gnu.org)
	by debbugs.gnu.org with esmtp (Exim 4.84_2)
	(envelope-from <debbugs-submit-bounces <at> debbugs.gnu.org>)
	id 1ploFP-0007AF-Do
	for submit <at> debbugs.gnu.org; Mon, 10 Apr 2023 05:55:39 -0400
Received: from mout01.posteo.de ([185.67.36.65]:33091)
 by debbugs.gnu.org with esmtp (Exim 4.84_2)
 (envelope-from <yantar92@HIDDEN>) id 1ploFN-0007A2-R2
 for 58558 <at> debbugs.gnu.org; Mon, 10 Apr 2023 05:55:38 -0400
Received: from submission (posteo.de [185.67.36.169]) 
 by mout01.posteo.de (Postfix) with ESMTPS id 0C61624011C
 for <58558 <at> debbugs.gnu.org>; Mon, 10 Apr 2023 11:55:31 +0200 (CEST)
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=posteo.net; s=2017;
 t=1681120532; bh=DbAG9xlh59U961JZO67XNrIEm3njhW7Fe+eyDrhjMNk=;
 h=From:To:Cc:Subject:Date:From;
 b=ccFJLP7+bOSxo7RwhuzO3s+ZNSuspfpRae/1P2VIw2CX9dkdf0kko1Odnz6EQzvjF
 xC2U5nvydux1/z4zctJZ1ndvnmtLiwZAsDy43NAGfGSuWDPKaxQTX9fmgEXEbzRRRX
 oZkrT49fI6jdBKlIMYS1mccntvGdJy1+eXdnc9Pset5F+MJh+LCBhnGWd4E0t8qxd4
 yk1xQ9KKQU/hP78/rb8H2PbN6vbvtaJ5rK2Rz9FgDXt1dSmRgkdloyxIdIhykUPje8
 r/IBdWOwsc80YvWX7RZQdF3wNARdGX/f3buIK4PAaOF6jUeS63Jn0Qohp6INGgB7p/
 WFc1frbcUEYgQ==
Received: from customer (localhost [127.0.0.1])
 by submission (posteo.de) with ESMTPSA id 4Pw48z02FPz6tsf;
 Mon, 10 Apr 2023 11:55:30 +0200 (CEST)
From: Ihor Radchenko <yantar92@HIDDEN>
To: Mattias =?utf-8?Q?Engdeg=C3=A5rd?= <mattias.engdegard@HIDDEN>
Subject: Re: bug#58558: 29.0.50; re-search-forward is slow in some buffers
In-Reply-To: <691CBF62-4E1E-495C-8AAF-8B0EEE3E199A@HIDDEN>
References: <691CBF62-4E1E-495C-8AAF-8B0EEE3E199A@HIDDEN>
Date: Mon, 10 Apr 2023 09:57:48 +0000
Message-ID: <87a5zgkqjn.fsf@localhost>
MIME-Version: 1.0
Content-Type: text/plain; charset=utf-8
Content-Transfer-Encoding: quoted-printable
X-Spam-Score: -2.3 (--)
X-Debbugs-Envelope-To: 58558
Cc: 58558 <at> debbugs.gnu.org, Eli Zaretskii <eliz@HIDDEN>,
 Ihor Radchenko <yantar92@HIDDEN>, Stefan Monnier <monnier@HIDDEN>
X-BeenThere: debbugs-submit <at> debbugs.gnu.org
X-Mailman-Version: 2.1.18
Precedence: list
List-Id: <debbugs-submit.debbugs.gnu.org>
List-Unsubscribe: <https://debbugs.gnu.org/cgi-bin/mailman/options/debbugs-submit>, 
 <mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=unsubscribe>
List-Archive: <https://debbugs.gnu.org/cgi-bin/mailman/private/debbugs-submit/>
List-Post: <mailto:debbugs-submit <at> debbugs.gnu.org>
List-Help: <mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=help>
List-Subscribe: <https://debbugs.gnu.org/cgi-bin/mailman/listinfo/debbugs-submit>, 
 <mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=subscribe>
Errors-To: debbugs-submit-bounces <at> debbugs.gnu.org
Sender: "Debbugs-submit" <debbugs-submit-bounces <at> debbugs.gnu.org>
X-Spam-Score: -3.3 (---)

Mattias Engdeg=C3=A5rd <mattias.engdegard@HIDDEN> writes:

> Ihor, would you consider the possibility of regexp cache thrashing? It do=
es occur from time to time; that cache is quite small. Try this instrumenta=
tion patch. (We should probably have something like it permanently.)

Generating agenda with Emacs master + your patch:

 :regexp-cache-hit: 6225399 :regexp-cache-miss: 109490

Emacs 28.3 + your patch:
 :regexp-cache-hit: 4968571 :regexp-cache-miss: 79637

Also, I tried to play around with increasing REGEXP_CACHE_SIZE in the
past. It does not make noticeable difference in my setup.

--=20
Ihor Radchenko // yantar92,
Org mode contributor,
Learn more about Org mode at <https://orgmode.org/>.
Support Org development at <https://liberapay.com/org-mode>,
or support my work at <https://liberapay.com/yantar92>




Information forwarded to bug-gnu-emacs@HIDDEN:
bug#58558; Package emacs. Full text available.

Message received at 58558 <at> debbugs.gnu.org:


Received: (at 58558) by debbugs.gnu.org; 10 Apr 2023 08:48:15 +0000
From debbugs-submit-bounces <at> debbugs.gnu.org Mon Apr 10 04:48:15 2023
Received: from localhost ([127.0.0.1]:34285 helo=debbugs.gnu.org)
	by debbugs.gnu.org with esmtp (Exim 4.84_2)
	(envelope-from <debbugs-submit-bounces <at> debbugs.gnu.org>)
	id 1plnCB-0002gh-2O
	for submit <at> debbugs.gnu.org; Mon, 10 Apr 2023 04:48:15 -0400
Received: from mail-lj1-f170.google.com ([209.85.208.170]:41512)
 by debbugs.gnu.org with esmtp (Exim 4.84_2)
 (envelope-from <mattias.engdegard@HIDDEN>) id 1plnC9-0002fn-KX
 for 58558 <at> debbugs.gnu.org; Mon, 10 Apr 2023 04:48:13 -0400
Received: by mail-lj1-f170.google.com with SMTP id n22so2810509ljq.8
 for <58558 <at> debbugs.gnu.org>; Mon, 10 Apr 2023 01:48:13 -0700 (PDT)
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
 d=gmail.com; s=20210112; t=1681116487; x=1683708487;
 h=to:cc:date:message-id:subject:mime-version:from:sender:from:to:cc
 :subject:date:message-id:reply-to;
 bh=vGbRZwX3OGDVN4jcfGBrrxUYwkTp5aN3H/0MeX5N3Ww=;
 b=N8QlBNGmynn4mQbKT3Ax0k1mljo+bac68kdntcujK2E+QR1QrSqwEsofGbZp6WGlzp
 A4vncpY1X/Q2DZ5zZ+oe/OqGXE1LOnvT1zdipooC8lAiZjBo1R4fK8IWie/VMzVcvukd
 v8gMLCzYwR1haYdjOtvSE023ws0TL+znIPwLco1DG/O5wb1Vl0Xg0RZeJS27YDywiWSf
 6cszDEBYocHxai2V+GeiLpPjSAva2dT/c1nqWRH64SAG9Bt5lUWxM66DgisZ6yhia64x
 F8wKXT5ctbiSdlpAvJNBJ7+7lZmKFZ3PMOT2OwugOoNU4Sma0NeS1quEME0LU189zBIE
 ZUWA==
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
 d=1e100.net; s=20210112; t=1681116487; x=1683708487;
 h=to:cc:date:message-id:subject:mime-version:from:sender
 :x-gm-message-state:from:to:cc:subject:date:message-id:reply-to;
 bh=vGbRZwX3OGDVN4jcfGBrrxUYwkTp5aN3H/0MeX5N3Ww=;
 b=BGzB1WKivJ11IJgPbZrC9l9uUyWVxUMWdiUnYTk5RYeevQa1KPm2+HWzZdnocx8rVf
 VblLvu3kNxghWuYpiC/2zb23Bzld3hJl/DrfgNNo5NJBtu09TuHUeEpinGbbkwsrPg/i
 SY8msp8HVz2tptBSHCvxsbnVpqdN3iQ4oNQoIPSe3dT4Ta4SBEXrPTFraUVpP2yg7f3U
 hgw2HiB6iwb7t75I5cj2S/8WTSKO5BWCdMjWLStFiARU7BeaKPCfRY32jVmB6sB60K+k
 GMYh14J+4i3ErYhVp4Be654RGvFbRWeheXAmJ65f+ULCb8mIJwzZg1wPg4dc0OAQ9oL0
 kKpw==
X-Gm-Message-State: AAQBX9e+YlNL7f6oNH1vh4ORPSBI2888vyaRhCV3M43CjB/a5Ryc2boQ
 wENEcqHP/lvEv7zQb3e2nW0=
X-Google-Smtp-Source: AKy350a1AUBDXv9cyC5UmRXzoYriWyGOTB66BBkZ39n+DfY5d8/gq4p1555YGgvnogYDDYAn9Z5dpQ==
X-Received: by 2002:a2e:7a10:0:b0:2a6:72:f321 with SMTP id
 v16-20020a2e7a10000000b002a60072f321mr3113266ljc.51.1681116486752; 
 Mon, 10 Apr 2023 01:48:06 -0700 (PDT)
Received: from smtpclient.apple (c188-150-165-235.bredband.tele2.se.
 [188.150.165.235]) by smtp.gmail.com with ESMTPSA id
 z4-20020a2e8404000000b002a483f01d9csm2128502ljg.85.2023.04.10.01.48.06
 (version=TLS1_2 cipher=ECDHE-ECDSA-AES128-GCM-SHA256 bits=128/128);
 Mon, 10 Apr 2023 01:48:06 -0700 (PDT)
From: =?utf-8?Q?Mattias_Engdeg=C3=A5rd?= <mattias.engdegard@HIDDEN>
Content-Type: multipart/mixed;
 boundary="Apple-Mail=_3EAC798E-B366-43D3-83FC-DFDBA015461F"
Mime-Version: 1.0 (Mac OS X Mail 14.0 \(3654.120.0.1.15\))
Subject: bug#58558: 29.0.50; re-search-forward is slow in some buffers
Message-Id: <691CBF62-4E1E-495C-8AAF-8B0EEE3E199A@HIDDEN>
Date: Mon, 10 Apr 2023 10:48:05 +0200
To: Ihor Radchenko <yantar92@HIDDEN>
X-Mailer: Apple Mail (2.3654.120.0.1.15)
X-Spam-Score: 0.0 (/)
X-Debbugs-Envelope-To: 58558
Cc: 58558 <at> debbugs.gnu.org, Eli Zaretskii <eliz@HIDDEN>,
 Stefan Monnier <monnier@HIDDEN>
X-BeenThere: debbugs-submit <at> debbugs.gnu.org
X-Mailman-Version: 2.1.18
Precedence: list
List-Id: <debbugs-submit.debbugs.gnu.org>
List-Unsubscribe: <https://debbugs.gnu.org/cgi-bin/mailman/options/debbugs-submit>, 
 <mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=unsubscribe>
List-Archive: <https://debbugs.gnu.org/cgi-bin/mailman/private/debbugs-submit/>
List-Post: <mailto:debbugs-submit <at> debbugs.gnu.org>
List-Help: <mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=help>
List-Subscribe: <https://debbugs.gnu.org/cgi-bin/mailman/listinfo/debbugs-submit>, 
 <mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=subscribe>
Errors-To: debbugs-submit-bounces <at> debbugs.gnu.org
Sender: "Debbugs-submit" <debbugs-submit-bounces <at> debbugs.gnu.org>
X-Spam-Score: -1.0 (-)


--Apple-Mail=_3EAC798E-B366-43D3-83FC-DFDBA015461F
Content-Transfer-Encoding: quoted-printable
Content-Type: text/plain;
	charset=us-ascii

Ihor, would you consider the possibility of regexp cache thrashing? It =
does occur from time to time; that cache is quite small. Try this =
instrumentation patch. (We should probably have something like it =
permanently.)


--Apple-Mail=_3EAC798E-B366-43D3-83FC-DFDBA015461F
Content-Disposition: attachment;
	filename=0001-Add-regexp-cache-hit-miss-counters.patch
Content-Type: application/octet-stream;
	x-unix-mode=0644;
	name="0001-Add-regexp-cache-hit-miss-counters.patch"
Content-Transfer-Encoding: quoted-printable

=46rom=20978ce66e9bd50da11997aeadcc3508549863a116=20Mon=20Sep=2017=20=
00:00:00=202001=0AFrom:=20=3D?UTF-8?q?Mattias=3D20Engdeg=3DC3=3DA5rd?=3D=20=
<mattiase@HIDDEN>=0ADate:=20Sat,=207=20Nov=202020=2017:00:53=20+0100=0A=
Subject:=20[PATCH=201/2]=20Add=20regexp=20cache=20hit/miss=20counters=0A=0A=
---=0A=20src/search.c=20|=2013=20++++++++++++-=0A=201=20file=20changed,=20=
12=20insertions(+),=201=20deletion(-)=0A=0Adiff=20--git=20a/src/search.c=20=
b/src/search.c=0Aindex=204eb634a3c0..358b82da2e=20100644=0A---=20=
a/src/search.c=0A+++=20b/src/search.c=0A@@=20-222,7=20+222,10=20@@=20=
compile_pattern=20(Lisp_Object=20pattern,=20struct=20re_registers=20=
*regp,=0A=20=09=20=20=20=20=20=20||=20EQ=20(cp->syntax_table,=20BVAR=20=
(current_buffer,=20syntax_table)))=0A=20=09=20=20&&=20!NILP=20(Fequal=20=
(cp->f_whitespace_regexp,=20Vsearch_spaces_regexp))=0A=20=09=20=20&&=20=
cp->buf.charset_unibyte=20=3D=3D=20charset_unibyte)=0A-=09break;=0A+=20=20=
=20=20=20=20=20=20{=0A+=20=20=20=20=20=20=20=20=20=20regexp_cache_hit++;=0A=
+=20=20=20=20=20=20=20=20=20=20break;=0A+=20=20=20=20=20=20=20=20}=0A=20=0A=
=20=20=20=20=20=20=20/*=20If=20we're=20at=20the=20end=20of=20the=20=
cache,=20compile=20into=20the=20last=0A=20=09=20(least=20recently=20=
used)=20non-busy=20cell=20in=20the=20cache.=20=20*/=0A@@=20-234,6=20=
+237,7=20@@=20compile_pattern=20(Lisp_Object=20pattern,=20struct=20=
re_registers=20*regp,=0A=20=20=20=20=20=20=20=20=20=20=20cp=20=3D=20=
*cpp;=0A=20=09compile_it:=0A=20=20=20=20=20=20=20=20=20=20=20eassert=20=
(!cp->busy);=0A+=20=20=20=20=20=20=20=20=20=20regexp_cache_miss++;=0A=20=09=
=20=20compile_pattern_1=20(cp,=20pattern,=20translate,=20posix);=0A=20=09=
=20=20break;=0A=20=09}=0A@@=20-3390,6=20+3394,13=20@@=20syms_of_search=20=
(void)=0A=20is=20to=20bind=20it=20with=20`let'=20around=20a=20small=20=
expression.=20=20*/);=0A=20=20=20Vinhibit_changing_match_data=20=3D=20=
Qnil;=0A=20=0A+=20=20DEFVAR_INT("regexp-cache-hit",=20regexp_cache_hit,=0A=
+=20=20=20=20=20=20=20=20=20=20=20=20=20doc:=20/*=20Regexp=20cache=20hit=20=
count.=20=20Internal=20use=20only.=20*/);=0A+=20=20regexp_cache_hit=20=3D=20=
0;=0A+=20=20DEFVAR_INT("regexp-cache-miss",=20regexp_cache_miss,=0A+=20=20=
=20=20=20=20=20=20=20=20=20=20=20doc:=20/*=20Regexp=20cache=20miss=20=
count.=20=20Internal=20use=20only.=20*/);=0A+=20=20regexp_cache_miss=20=3D=
=200;=0A+=0A=20=20=20defsubr=20(&Slooking_at);=0A=20=20=20defsubr=20=
(&Sposix_looking_at);=0A=20=20=20defsubr=20(&Sstring_match);=0A--=20=0A=
2.21.1=20(Apple=20Git-122.3)=0A=0A=

--Apple-Mail=_3EAC798E-B366-43D3-83FC-DFDBA015461F--




Information forwarded to bug-gnu-emacs@HIDDEN:
bug#58558; Package emacs. Full text available.

Message received at 58558 <at> debbugs.gnu.org:


Received: (at 58558) by debbugs.gnu.org; 10 Apr 2023 04:14:27 +0000
From debbugs-submit-bounces <at> debbugs.gnu.org Mon Apr 10 00:14:27 2023
Received: from localhost ([127.0.0.1]:34028 helo=debbugs.gnu.org)
	by debbugs.gnu.org with esmtp (Exim 4.84_2)
	(envelope-from <debbugs-submit-bounces <at> debbugs.gnu.org>)
	id 1plivC-00034b-Tw
	for submit <at> debbugs.gnu.org; Mon, 10 Apr 2023 00:14:27 -0400
Received: from eggs.gnu.org ([209.51.188.92]:43262)
 by debbugs.gnu.org with esmtp (Exim 4.84_2)
 (envelope-from <eliz@HIDDEN>) id 1pliv8-00034M-R3
 for 58558 <at> debbugs.gnu.org; Mon, 10 Apr 2023 00:14:24 -0400
Received: from fencepost.gnu.org ([2001:470:142:3::e])
 by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256)
 (Exim 4.90_1) (envelope-from <eliz@HIDDEN>)
 id 1pliv2-0005Bp-Kk; Mon, 10 Apr 2023 00:14:16 -0400
DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; d=gnu.org;
 s=fencepost-gnu-org; h=References:Subject:In-Reply-To:To:From:Date:
 mime-version; bh=TTQLNvmP5lozTaIQVaWM3RDyhCrZYhqwlQbizpAMGt4=; b=q9ssCfrYQ8f3
 QfY7UJF0jepv5wt5o/fSIvf3zMSv7LPqJAINzmz1IA3I4+e/o5XaHJOQgcEg80pEPk0LukmKQ5XQ6
 nHtfReayuoO2RurjZaN+GdW4kgAlFd5cnvptVC7xhQlbods/C6GPBVhiBvlAAEzuz5SZgCP3e/oHT
 BVNAIZF3qB9dO9A5QRz+Zr2S6WbLAg2kXQIDHphwHwsFiIn3w95OSHgWJitZg7+Mc3WrSBGBoO45z
 tAUv3XOvCYLaYeo1S8l47b2aIZEEFH8EHwG2aSM3vTX6saN56rR4UjxjSxNnNm9L1iTZMJNtNa8lK
 Lm7jEngRruDp3sdTBdFhlQ==;
Received: from [87.69.77.57] (helo=home-c4e4a596f7)
 by fencepost.gnu.org with esmtpsa (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256)
 (Exim 4.90_1) (envelope-from <eliz@HIDDEN>)
 id 1pliv1-0003Xq-Th; Mon, 10 Apr 2023 00:14:16 -0400
Date: Mon, 10 Apr 2023 07:14:54 +0300
Message-Id: <83ttxol6f5.fsf@HIDDEN>
From: Eli Zaretskii <eliz@HIDDEN>
To: Ihor Radchenko <yantar92@HIDDEN>
In-Reply-To: <87lej0zv92.fsf@localhost> (message from Ihor Radchenko on Sun,
 09 Apr 2023 19:54:49 +0000)
Subject: Re: bug#58558: 29.0.50; re-search-forward is slow in some buffers
References: <877d10r21x.fsf@localhost> <87zgdwhw0z.fsf@HIDDEN>
 <83sfjo3tfw.fsf@HIDDEN> <jwvbkqbhnu8.fsf-monnier+emacs@HIDDEN>
 <878rlfjmjh.fsf@localhost> <87mt9tbbbp.fsf@HIDDEN>
 <8335bl18lo.fsf@HIDDEN> <87wn8x9eqb.fsf@HIDDEN>
 <87tu1zd2c6.fsf@localhost> <83h6xzphxm.fsf@HIDDEN>
 <87wn6vbfaa.fsf@localhost> <838rjbpecw.fsf@HIDDEN>
 <87fsdjwb4e.fsf@localhost> <jwv5yefb556.fsf-monnier+emacs@HIDDEN>
 <874jtyuqax.fsf@localhost> <83zgbqm8q6.fsf@HIDDEN>
 <87sfhit8ug.fsf@localhost> <83tu1ym6jo.fsf@HIDDEN>
 <87h6xyt77x.fsf@localhost> <87h6ttkz6n.fsf@localhost>
 <838rf5qkpt.fsf@HIDDEN> <87lej0zv92.fsf@localhost>
X-Spam-Score: -2.3 (--)
X-Debbugs-Envelope-To: 58558
Cc: 58558 <at> debbugs.gnu.org, larsi@HIDDEN, monnier@HIDDEN
X-BeenThere: debbugs-submit <at> debbugs.gnu.org
X-Mailman-Version: 2.1.18
Precedence: list
List-Id: <debbugs-submit.debbugs.gnu.org>
List-Unsubscribe: <https://debbugs.gnu.org/cgi-bin/mailman/options/debbugs-submit>, 
 <mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=unsubscribe>
List-Archive: <https://debbugs.gnu.org/cgi-bin/mailman/private/debbugs-submit/>
List-Post: <mailto:debbugs-submit <at> debbugs.gnu.org>
List-Help: <mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=help>
List-Subscribe: <https://debbugs.gnu.org/cgi-bin/mailman/listinfo/debbugs-submit>, 
 <mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=subscribe>
Errors-To: debbugs-submit-bounces <at> debbugs.gnu.org
Sender: "Debbugs-submit" <debbugs-submit-bounces <at> debbugs.gnu.org>
X-Spam-Score: -3.3 (---)

> From: Ihor Radchenko <yantar92@HIDDEN>
> Cc: monnier@HIDDEN, larsi@HIDDEN, 58558 <at> debbugs.gnu.org
> Date: Sun, 09 Apr 2023 19:54:49 +0000
> 
> Eli Zaretskii <eliz@HIDDEN> writes:
> 
> > I think we should first go back to using perf.  I don't think you
> > compared profiles for Emacs which just started with one that was
> > running long enough to show the slowdown.  Comparing such profiles
> > should at least give us a hint where to look.
> 
> I now tried perf record -g.
> I was able to narrow down the call tree of the problematic
> buf_bytepos_to_charpos calls:
> 
> 43.82%--Fre_search_forward
>  --43.81%--search_command
>   --43.78%--search_buffer
>    --43.78%--search_buffer_re
>     --43.33%--re_search_2
>      --36.39%--re_match_2_internal
>       --21.90%--SYNTAX_TABLE_BYTE_TO_CHAR
>        --21.57%--BYTE_TO_CHAR
>         --21.49%--buf_bytepos_to_charpos
> 
> Not sure if it is telling much.

How does this compare with a "fast" session doing the same?

And why are you once again focusing on buf_bytepos_to_charpos, when
you previously (presumably) established that it cannot be the problem,
since the number of markers doesn't change significantly?

> I also looked into git history and I can only identify significant
> changes in re_match_2_internal after Emacs 28 release.

It sounds like most of the time is not in re_match_2_internal itself.
But I think comparison with a "fast" session could help with ideas.

Thanks.




Information forwarded to bug-gnu-emacs@HIDDEN:
bug#58558; Package emacs. Full text available.

Message received at 58558 <at> debbugs.gnu.org:


Received: (at 58558) by debbugs.gnu.org; 9 Apr 2023 19:52:42 +0000
From debbugs-submit-bounces <at> debbugs.gnu.org Sun Apr 09 15:52:42 2023
Received: from localhost ([127.0.0.1]:33834 helo=debbugs.gnu.org)
	by debbugs.gnu.org with esmtp (Exim 4.84_2)
	(envelope-from <debbugs-submit-bounces <at> debbugs.gnu.org>)
	id 1plb5d-0005qM-Tw
	for submit <at> debbugs.gnu.org; Sun, 09 Apr 2023 15:52:42 -0400
Received: from mout02.posteo.de ([185.67.36.66]:51629)
 by debbugs.gnu.org with esmtp (Exim 4.84_2)
 (envelope-from <yantar92@HIDDEN>) id 1plb5c-0005q4-0H
 for 58558 <at> debbugs.gnu.org; Sun, 09 Apr 2023 15:52:40 -0400
Received: from submission (posteo.de [185.67.36.169]) 
 by mout02.posteo.de (Postfix) with ESMTPS id 014B2240175
 for <58558 <at> debbugs.gnu.org>; Sun,  9 Apr 2023 21:52:33 +0200 (CEST)
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=posteo.net; s=2017;
 t=1681069954; bh=Oy2jBb/twwYiig0E6o5hoJuw8RLGXM59M6Pz0b4dF/8=;
 h=From:To:Cc:Subject:Date:From;
 b=KtMz8PyiePHvuUMgGOqGrWVLnAyuh5SiJBuJZ9iwvNwC7anRDSngNHCjFmZjOtuvA
 Rl4eiXGl5dwcR77TL3NA37GZkg+YOTDDX38knFq22pSZ4CYET50teiCt7rtdjzL0+Y
 U53Rk7sc4g1fDYbqgS3sOpKcBANZX8uPBQfgRXvc0DY2m72lWgm3I0o2X4/NCY+VCV
 f0CBMsEK5yi13trw/alzVeCSIzLfJ5wE5weZPn5mBfqY0uktwz6+mqDKa4RPU2WBgv
 FV+rZ8Yco3b1HzX6eZpxIrolv8Xui5uvGw6fXC3cnrdL56rpdhiWeND1rCI5NhKaRB
 tuVsw2EsKj1wA==
Received: from customer (localhost [127.0.0.1])
 by submission (posteo.de) with ESMTPSA id 4PvjSK0Htbz6tv5;
 Sun,  9 Apr 2023 21:52:32 +0200 (CEST)
From: Ihor Radchenko <yantar92@HIDDEN>
To: Eli Zaretskii <eliz@HIDDEN>
Subject: Re: bug#58558: 29.0.50; re-search-forward is slow in some buffers
In-Reply-To: <838rf5qkpt.fsf@HIDDEN>
References: <877d10r21x.fsf@localhost> <87zgdwhw0z.fsf@HIDDEN>
 <83sfjo3tfw.fsf@HIDDEN> <jwvbkqbhnu8.fsf-monnier+emacs@HIDDEN>
 <878rlfjmjh.fsf@localhost> <87mt9tbbbp.fsf@HIDDEN>
 <8335bl18lo.fsf@HIDDEN> <87wn8x9eqb.fsf@HIDDEN>
 <87tu1zd2c6.fsf@localhost> <83h6xzphxm.fsf@HIDDEN>
 <87wn6vbfaa.fsf@localhost> <838rjbpecw.fsf@HIDDEN>
 <87fsdjwb4e.fsf@localhost> <jwv5yefb556.fsf-monnier+emacs@HIDDEN>
 <874jtyuqax.fsf@localhost> <83zgbqm8q6.fsf@HIDDEN>
 <87sfhit8ug.fsf@localhost> <83tu1ym6jo.fsf@HIDDEN>
 <87h6xyt77x.fsf@localhost> <87h6ttkz6n.fsf@localhost>
 <838rf5qkpt.fsf@HIDDEN>
Date: Sun, 09 Apr 2023 19:54:49 +0000
Message-ID: <87lej0zv92.fsf@localhost>
MIME-Version: 1.0
Content-Type: text/plain
X-Spam-Score: -2.3 (--)
X-Debbugs-Envelope-To: 58558
Cc: 58558 <at> debbugs.gnu.org, larsi@HIDDEN, monnier@HIDDEN
X-BeenThere: debbugs-submit <at> debbugs.gnu.org
X-Mailman-Version: 2.1.18
Precedence: list
List-Id: <debbugs-submit.debbugs.gnu.org>
List-Unsubscribe: <https://debbugs.gnu.org/cgi-bin/mailman/options/debbugs-submit>, 
 <mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=unsubscribe>
List-Archive: <https://debbugs.gnu.org/cgi-bin/mailman/private/debbugs-submit/>
List-Post: <mailto:debbugs-submit <at> debbugs.gnu.org>
List-Help: <mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=help>
List-Subscribe: <https://debbugs.gnu.org/cgi-bin/mailman/listinfo/debbugs-submit>, 
 <mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=subscribe>
Errors-To: debbugs-submit-bounces <at> debbugs.gnu.org
Sender: "Debbugs-submit" <debbugs-submit-bounces <at> debbugs.gnu.org>
X-Spam-Score: -3.3 (---)

Eli Zaretskii <eliz@HIDDEN> writes:

> I think we should first go back to using perf.  I don't think you
> compared profiles for Emacs which just started with one that was
> running long enough to show the slowdown.  Comparing such profiles
> should at least give us a hint where to look.

I now tried perf record -g.
I was able to narrow down the call tree of the problematic
buf_bytepos_to_charpos calls:

43.82%--Fre_search_forward
 --43.81%--search_command
  --43.78%--search_buffer
   --43.78%--search_buffer_re
    --43.33%--re_search_2
     --36.39%--re_match_2_internal
      --21.90%--SYNTAX_TABLE_BYTE_TO_CHAR
       --21.57%--BYTE_TO_CHAR
        --21.49%--buf_bytepos_to_charpos

Not sure if it is telling much.

I also looked into git history and I can only identify significant
changes in re_match_2_internal after Emacs 28 release.

-- 
Ihor Radchenko // yantar92,
Org mode contributor,
Learn more about Org mode at <https://orgmode.org/>.
Support Org development at <https://liberapay.com/org-mode>,
or support my work at <https://liberapay.com/yantar92>




Information forwarded to bug-gnu-emacs@HIDDEN:
bug#58558; Package emacs. Full text available.

Message received at 58558 <at> debbugs.gnu.org:


Received: (at 58558) by debbugs.gnu.org; 6 Apr 2023 12:05:32 +0000
From debbugs-submit-bounces <at> debbugs.gnu.org Thu Apr 06 08:05:32 2023
Received: from localhost ([127.0.0.1]:53616 helo=debbugs.gnu.org)
	by debbugs.gnu.org with esmtp (Exim 4.84_2)
	(envelope-from <debbugs-submit-bounces <at> debbugs.gnu.org>)
	id 1pkOMu-0007Yk-G1
	for submit <at> debbugs.gnu.org; Thu, 06 Apr 2023 08:05:32 -0400
Received: from eggs.gnu.org ([209.51.188.92]:57550)
 by debbugs.gnu.org with esmtp (Exim 4.84_2)
 (envelope-from <eliz@HIDDEN>) id 1pkOMq-0007YT-9q
 for 58558 <at> debbugs.gnu.org; Thu, 06 Apr 2023 08:05:30 -0400
Received: from fencepost.gnu.org ([2001:470:142:3::e])
 by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256)
 (Exim 4.90_1) (envelope-from <eliz@HIDDEN>)
 id 1pkOMj-0004pR-Ra; Thu, 06 Apr 2023 08:05:21 -0400
DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; d=gnu.org;
 s=fencepost-gnu-org; h=References:Subject:In-Reply-To:To:From:Date:
 mime-version; bh=SHAT6HCO4ZAFOqxgUp9JfC/Hu8VSdTiyJuKQZDzQHjY=; b=Vj1xi9ZLEuES
 BCgVO5UxR4sByCwhCXY9KfQpSiCEoM5THj5Nv8oVJAMd+vf/bMv5Ovv/GBjQG6eO2nIj/Kgd38hFM
 U/3oU/xdVbI9Lg56JZjbeJdLbs9fs9Xhz8d/bWRScOpX8MvG+7j2FhpyaauAxb0FkJcDvpkrWMNpC
 fLpw1i8b29kvjpy5RhGG8wMtwVN+iQTrf+qT0W6xFLufXxR3fCGc2Q18c6/N/9PsoNfqBlcIcf9M/
 YlWRvgzPfqeO8PrjQOrXXXwY2f/RuRjeDsarVeK2HonBW60vZZid4LLBihA3V7cxBSfG05x1HsXgQ
 d5Ai7waxG9JK6EcPSz6RZA==;
Received: from [87.69.77.57] (helo=home-c4e4a596f7)
 by fencepost.gnu.org with esmtpsa (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256)
 (Exim 4.90_1) (envelope-from <eliz@HIDDEN>)
 id 1pkOMj-0007uf-Bv; Thu, 06 Apr 2023 08:05:21 -0400
Date: Thu, 06 Apr 2023 15:05:50 +0300
Message-Id: <838rf5qkpt.fsf@HIDDEN>
From: Eli Zaretskii <eliz@HIDDEN>
To: Ihor Radchenko <yantar92@HIDDEN>
In-Reply-To: <87h6ttkz6n.fsf@localhost> (message from Ihor Radchenko on Thu,
 06 Apr 2023 11:49:52 +0000)
Subject: Re: bug#58558: 29.0.50; re-search-forward is slow in some buffers
References: <877d10r21x.fsf@localhost> <87czasjd9j.fsf@HIDDEN>
 <87k050nio5.fsf@localhost> <87zgdwhw0z.fsf@HIDDEN>
 <83sfjo3tfw.fsf@HIDDEN> <jwvbkqbhnu8.fsf-monnier+emacs@HIDDEN>
 <878rlfjmjh.fsf@localhost> <87mt9tbbbp.fsf@HIDDEN>
 <8335bl18lo.fsf@HIDDEN> <87wn8x9eqb.fsf@HIDDEN>
 <87tu1zd2c6.fsf@localhost> <83h6xzphxm.fsf@HIDDEN>
 <87wn6vbfaa.fsf@localhost> <838rjbpecw.fsf@HIDDEN>
 <87fsdjwb4e.fsf@localhost> <jwv5yefb556.fsf-monnier+emacs@HIDDEN>
 <874jtyuqax.fsf@localhost> <83zgbqm8q6.fsf@HIDDEN>
 <87sfhit8ug.fsf@localhost> <83tu1ym6jo.fsf@HIDDEN>
 <87h6xyt77x.fsf@localhost> <87h6ttkz6n.fsf@localhost>
X-Spam-Score: -2.3 (--)
X-Debbugs-Envelope-To: 58558
Cc: 58558 <at> debbugs.gnu.org, larsi@HIDDEN, monnier@HIDDEN
X-BeenThere: debbugs-submit <at> debbugs.gnu.org
X-Mailman-Version: 2.1.18
Precedence: list
List-Id: <debbugs-submit.debbugs.gnu.org>
List-Unsubscribe: <https://debbugs.gnu.org/cgi-bin/mailman/options/debbugs-submit>, 
 <mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=unsubscribe>
List-Archive: <https://debbugs.gnu.org/cgi-bin/mailman/private/debbugs-submit/>
List-Post: <mailto:debbugs-submit <at> debbugs.gnu.org>
List-Help: <mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=help>
List-Subscribe: <https://debbugs.gnu.org/cgi-bin/mailman/listinfo/debbugs-submit>, 
 <mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=subscribe>
Errors-To: debbugs-submit-bounces <at> debbugs.gnu.org
Sender: "Debbugs-submit" <debbugs-submit-bounces <at> debbugs.gnu.org>
X-Spam-Score: -3.3 (---)

> From: Ihor Radchenko <yantar92@HIDDEN>
> Cc: monnier@HIDDEN, larsi@HIDDEN, 58558 <at> debbugs.gnu.org
> Date: Thu, 06 Apr 2023 11:49:52 +0000
> 
> As you can see on the attached graph, the number of markers is ~1000, and
> it is not significantly different for the two Emacs versions.
> 
> So, the number of markers itself does not look like the real culprit.

That's one potential reason down, thanks.

> I have no better ideas for now except slowly bisecting Emacs (again).

I think we should first go back to using perf.  I don't think you
compared profiles for Emacs which just started with one that was
running long enough to show the slowdown.  Comparing such profiles
should at least give us a hint where to look.




Information forwarded to bug-gnu-emacs@HIDDEN:
bug#58558; Package emacs. Full text available.

Message received at 58558 <at> debbugs.gnu.org:


Received: (at 58558) by debbugs.gnu.org; 6 Apr 2023 11:47:41 +0000
From debbugs-submit-bounces <at> debbugs.gnu.org Thu Apr 06 07:47:41 2023
Received: from localhost ([127.0.0.1]:53595 helo=debbugs.gnu.org)
	by debbugs.gnu.org with esmtp (Exim 4.84_2)
	(envelope-from <debbugs-submit-bounces <at> debbugs.gnu.org>)
	id 1pkO5d-00074P-8x
	for submit <at> debbugs.gnu.org; Thu, 06 Apr 2023 07:47:41 -0400
Received: from mout02.posteo.de ([185.67.36.66]:45205)
 by debbugs.gnu.org with esmtp (Exim 4.84_2)
 (envelope-from <yantar92@HIDDEN>) id 1pkO5a-00073t-Tq
 for 58558 <at> debbugs.gnu.org; Thu, 06 Apr 2023 07:47:39 -0400
Received: from submission (posteo.de [185.67.36.169]) 
 by mout02.posteo.de (Postfix) with ESMTPS id EB5092405C2
 for <58558 <at> debbugs.gnu.org>; Thu,  6 Apr 2023 13:47:32 +0200 (CEST)
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=posteo.net; s=2017;
 t=1680781653; bh=U3t60oN2HXyT+2i8bfCd3LaKmEy6Y4gKf5CuAAdCNks=;
 h=From:To:Cc:Subject:Date:From;
 b=L2hVbmCIMc/C1DoRtmVVs59B79fkCjVxJlhwINciiqIhaxmyVdl4hAc1vudSLNwqe
 XdYa5cubtaeC4wfdSTsuNl7oPemxfB/jqEIXCMn01gq/iMA1X2foH7UyjuwOjW3CTK
 JQmyAPFUt/ocqSg0j1sUEIRNoc9vlyxM1yfyfwCO2Jtd9+ZKhEcsdIgW/xyGLPvPOp
 WLOzTJJxxwouQjpuL15NWGboAOGqy1PTXd2PNazFnPjP/O7+DTdIa9568xfzeoWBPt
 yZG75U0yJU0g9NKNcG3iXHzjuN/nLFDUoC6DCssOYIsIfEVQQ2yS2/d8Za/sw0Fx4s
 c7l+oe7nUbjHg==
Received: from customer (localhost [127.0.0.1])
 by submission (posteo.de) with ESMTPSA id 4Psfr35Xxgz9rxL;
 Thu,  6 Apr 2023 13:47:31 +0200 (CEST)
From: Ihor Radchenko <yantar92@HIDDEN>
To: Eli Zaretskii <eliz@HIDDEN>
Subject: Re: bug#58558: 29.0.50; re-search-forward is slow in some buffers
In-Reply-To: <87h6xyt77x.fsf@localhost>
References: <877d10r21x.fsf@localhost> <87czasjd9j.fsf@HIDDEN>
 <87k050nio5.fsf@localhost> <87zgdwhw0z.fsf@HIDDEN>
 <83sfjo3tfw.fsf@HIDDEN> <jwvbkqbhnu8.fsf-monnier+emacs@HIDDEN>
 <878rlfjmjh.fsf@localhost> <87mt9tbbbp.fsf@HIDDEN>
 <8335bl18lo.fsf@HIDDEN> <87wn8x9eqb.fsf@HIDDEN>
 <87tu1zd2c6.fsf@localhost> <83h6xzphxm.fsf@HIDDEN>
 <87wn6vbfaa.fsf@localhost> <838rjbpecw.fsf@HIDDEN>
 <87fsdjwb4e.fsf@localhost> <jwv5yefb556.fsf-monnier+emacs@HIDDEN>
 <874jtyuqax.fsf@localhost> <83zgbqm8q6.fsf@HIDDEN>
 <87sfhit8ug.fsf@localhost> <83tu1ym6jo.fsf@HIDDEN>
 <87h6xyt77x.fsf@localhost>
Date: Thu, 06 Apr 2023 11:49:52 +0000
Message-ID: <87h6ttkz6n.fsf@localhost>
MIME-Version: 1.0
Content-Type: multipart/mixed; boundary="=-=-="
X-Spam-Score: -2.3 (--)
X-Debbugs-Envelope-To: 58558
Cc: 58558 <at> debbugs.gnu.org, larsi@HIDDEN, monnier@HIDDEN
X-BeenThere: debbugs-submit <at> debbugs.gnu.org
X-Mailman-Version: 2.1.18
Precedence: list
List-Id: <debbugs-submit.debbugs.gnu.org>
List-Unsubscribe: <https://debbugs.gnu.org/cgi-bin/mailman/options/debbugs-submit>, 
 <mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=unsubscribe>
List-Archive: <https://debbugs.gnu.org/cgi-bin/mailman/private/debbugs-submit/>
List-Post: <mailto:debbugs-submit <at> debbugs.gnu.org>
List-Help: <mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=help>
List-Subscribe: <https://debbugs.gnu.org/cgi-bin/mailman/listinfo/debbugs-submit>, 
 <mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=subscribe>
Errors-To: debbugs-submit-bounces <at> debbugs.gnu.org
Sender: "Debbugs-submit" <debbugs-submit-bounces <at> debbugs.gnu.org>
X-Spam-Score: -3.3 (---)

--=-=-=
Content-Type: text/plain

Ihor Radchenko <yantar92@HIDDEN> writes:

>> Did you try to see how the number of markers in the buffer evolves
>> with the up-time?
>
> Is there any way to get the number of buffer markers from Elisp?

I finally got back to this and implemented a small subr to count
number of buffer markers:

DEFUN ("buffer-markers", Fbuffer_markers, Sbuffer_markers, 0, 0, 0,
       doc: /* Return the number of markers in current buffer.*/)
  (void)
{
  struct Lisp_Marker *tail;
  int count = 0;

  for (tail = BUF_MARKERS (current_buffer); tail; tail  = tail->next)
    count++;

  return make_fixnum (count);
}

Then, I tracked how the number of markers evolves in my problematic
buffer when building agenda. On master and on Emacs 28 (where the agenda
is building 10x faster).

As you can see on the attached graph, the number of markers is ~1000, and
it is not significantly different for the two Emacs versions.

So, the number of markers itself does not look like the real culprit.

I have no better ideas for now except slowly bisecting Emacs (again).


--=-=-=
Content-Type: image/png
Content-Disposition: attachment; filename=marker-count.png
Content-Transfer-Encoding: base64

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
3njj/fff/9RTT33xxRd33HHH6dOnL1++HBsbu2fPnk6dOr355pvvv//+tm3bau+fl5eXkJDwxRdf
XH/99TNnzty+fXtubq6LxwwAAIDGc38KagxPWxZld7hoWlWpWesOZP9wSgjptj+3n31bt0Y+29ix
Y7t27bp3794ff/xx/PjxLVu2XL9+/alTpz744IMbb7zxm2++efTRR8+dO+fr65uenj548GAhxNq1
a1NSUsrKygYMGLBixQqtVjtp0qRt27ZVV1f36dNnxYoV11xzjfHJa2pq/vrXvz744IMajWbw4MHN
mzc/derUr7/+2q5du06dOgkhBg4cmJqaajqe5s2br1q16oYbbhBC3HnnnStXrmzkDwgAAJoaz/4E
D5fxtLDkJE0rSmX/cPrsxatCiPX7Tjc+Smm12p07d2ZnZxcUFMTExPzzn//84osv5s+fv2zZsn//
+99Tp06dOnXqxIkTP/zwwylTphw5cuTMmTOPPPLIrl27wsPD77rrrrS0tO7duxcWFubl5QkhUlJS
9uzZ079/f+OTazSaRx55xHj8zTff+Pn5RUdHh4aGXrhw4Ztvvrnppps+/fRTYzyrFR4eHh4eLoS4
cOHCW2+9lZyc3MgfEAAAeD2yE+ogIzVE04pSJhr2lpGRkbFmzZram0uXLp00aZIQYsSIERqNJjIy
0mAwjBgxQggRHR29fft2IUROTk6zZs2EEElJSUePHhVCbN68uVevXpGRkUKI1atXa7Xab7/99tCh
Q1lZWYMHD/7HP/5h8aWPHTt23333/ec///Hx8QkICEhLS0tISGjZsqWvr69erze/f0pKyiuvvNKn
T5/MzMwG/YwAAKApIkd5N6KRMzWtKHXbnzus339SGKRRPTo06IHjx4+3uFbK399fCCFJkiRJxrl5
Wq22urpaCLF+/fr09PTKysrq6mrjzMvi4uLg4GDjA413TkhIWLp06eLFi8ePH3/nnXemp6cbn7DW
/v37R48enZaWNmzYMOPNlJSUn376KSoq6n//+9+IESMOHTrk41Pnf8QFCxbMmjVr+fLlSUlJ33//
vVarbdBPCgAAPBT1JW9DClK9phWlZt/WdfZtXV3wQkVFRePHj9+zZ0/37t2Liorat28vhGjTps0v
v/xivENpaWlZWVnHjh1Hjx49evTo8+fP33vvvcuWLXv22Wdrn6SgoGD06NErVqyonfWn1+t79+4d
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
AAAAWRjoWikAAAAAkIWUoVRZWdnQoUNDQ0P79OnzyCOPNDc3+7tFXdfKlSuVtlJSUqylLnpq9erV
qamp3bt3z8jIeOONN2zr9KwI7jpz5syUKVMURfn4449t9zc0NOTn51ssltDQ0BEjRuzfv99aVFVV
NWXKlKioqOjo6OnTp586dcrLIsayl9rrxJiYGLuBWVhYqBXRicZx5syZefPm9e3bNzIycsiQIe++
+661iGEoCxedyDCUxbFjx2bOnNmnT5/IyMhrr712w4YN1iJGoixcdKLeI1Gosvniiy+6d+9+9913
7969+6233urZs+fChQv93aiua+nSpXFxceU29u3bpxW56Km1a9d269btxRdf3Lt377PPPhsUFPTu
u+96UwR3HThwICEhISsrSwhx8OBB26IZM2b06dNn/fr1u3bt+s1vfhMVFXX8+HFVVRsbG5OTk6+/
/voPPvhg69atgwcPzs7OvnTpksdFjGUvuehEk8m0ePFi24F56tQplU40ktbW1pycnPj4+L/+9a9l
ZWW33357UFDQ7t27tVKGoRRcdyLDUArnzp1LSUn55S9/+c9//rOsrOyOO+5QFKWsrEwrZSRKwXUn
6j0S5Qul7rzzzkGDBrW2tmoP//KXv5jN5pqaGv+2qst6+OGHBw4c6LTIRU8lJCTk5+dbnzlz5swh
Q4Zo254VwV0333zzM888c+DAAbv/wr/55htFUTZs2KA9bG5uTkhIeOihh1RVff3117t166b9AKmq
WlFRoSjKpk2bPC5iLHupvU5saGgQQlg70RadaBzaROLmzZu1hy0tLfHx8dpPHMNQFi46kWEoi/ff
fz80NPTIkSPaw0uXLsXFxc2fP19lJMrDRSf6YCTKl+C3ffv2SZMmKYqiPZw0adLFixd37tzp31Z1
WWfPno2IiHBa1F5PHT16tLq6+qabbrI+c9KkSYcOHTpz5oxnRfp8sgC3cuXKJ5980to7VmVlZcHB
wRMmTNAemkymvLy80tJSIcT27duHDh1qsVi0otTU1LS0NC+LGMveaK8Tz549K4RwOjDpROMYMGDA
V199NW7cOO1hcHDwVVdd9d///lcwDOXhohMZhrLIy8traGhITk7WHgYFBXXr1i0oKEgwEuXhohN9
MBIlC6Wampq+/fZb65clhLjyyivDwsIqKir82KqurL6+Pjw83HG/i56qrKwUQtgWJSUlqapaWVnp
WZEOHyvwxcfHO91fWVl51VVXhYaGWvckJSVp46uystL2+/eyiLEJTxIRAAAKZElEQVTsvfY6sb6+
XgjhdGDSicYREhLSv3//bt26aQ9Pnjz5+eef/+pXvxIMQ3m46ESGoXTOnTt39OjRhQsX1tTUzJ07
VzASJeTYiT4YiZKFUnV1dUKIqKgo252RkZG1tbV+alFXV19fX1NTM2XKlJiYmCuvvHL69OnHjh0T
LnvKsUjb9rhIx4/X9dTV1dn1WlRUVGNj48WLF50Wad+/B0WMZf1oR47CwsK0tLTw8PCsrKzXXntN
K6ITjenixYszZsxISEi4++67BcNQTnadyDCUTo8ePVJSUrZs2bJt27b+/fsLRqKEHDvRByNRslAK
RqOq6qlTp0aNGrVp06aCgoJPPvlk9OjR586d83e7gK6rsbExOjr6xIkTBQUF77333ujRo++5555X
XnnF3+2Ccw0NDZMmTaqsrCwpKQkJCfF3c+AJx05kGEpn586dxcXFgwYNGjdu3K5du/zdHHjCsRN9
MBJNnViXD0RHRyuKooXvVnV1dTExMf5qUhe3ceNG6/aIESMyMjIGDx68adOmqVOnttdTWmfV1dX1
7NlT268F+tZO9KwInSImJsau12pra8PCwsxms9Mi7fv3oIixrJ/rr7/e9lzmyJEjq6urV65c+dvf
/pZONJqampqJEyfW1NTs2rUrMTFR28kwlIvTTmQYSmfEiBFCiJtvvnnMmDEPPfTQvn37GInScexE
H4xEyWalQkJC+vXrZ5s8evz48aampszMTD+2ClZZWVmKolRXV7voqfT0dCGEbVFFRUVQUFBaWppn
RT74XF1Henr6yZMnz58/b91TUVGhja/09HS7vG1vihjLvjRw4MDq6mpBJxpMY2PjxIkTL1y4sHv3
buu/4IJhKJX2OtERw9CYPv/886KiIts92dnZ2mXYjERZuOhER50+EuVbDP3ee+/t37+/tri7qqov
vfRSWFhYfX29f1vVNbW0tNx1112FhYXWPdp06t/+9jfVZU9lZGTce++91ldNnjz5hhtu0LY9K4Jn
Dh48KNquo/3tt98GBwcXFRVpDxsbGy0Wy5NPPqmqalFRkclkOnHihFb06aefCiG2b9/ucRFjuVM4
dmJJScn06dObmpqse8aNG5eZmanSiQYzZ86c5OTk06dP2+1nGEqkvU5kGMpizZo12ilg655x48Zl
Z2erjER5uOhEX4xEX3zETlVZWRkeHn7nnXfu2bPn9ddfj4yMXLJkib8b1XXNmjUrPDz85Zdf3rt3
b2FhYUJCQkZGhvYn66Kn3n777eDg4OXLl+/bt2/x4sVBQUHbtm3zpghuaW1t1e5S9+qrrwohXn31
1fLy8j179milc+fO7d279/r16z/66KMpU6ZcccUV33//vaqqzc3NAwYMGDp0aGlp6ZYtWzIzM0eN
GqW9xLMixrI3XHTif/7zn9DQ0AkTJnzwwQc7duy47777hBDr1q1T6UQj+eKLL4KDg5955hmntzhn
GErBRScyDGXx448/9u3bNysr6x//+Ed5efmCBQuEEK+//rpWykiUgotO9MFIlC+UUlX1o48+Gjp0
aPfu3ePi4p5++mlrEA/fa2pqevzxx5OSkkJCQhITE++//37bk3Muemrt2rUpKSlms3nAgAF///vf
bev0rAgd19zc7DjlHRcXp5U2NTUtWrToiiuuCAkJycnJ+fe//2194YkTJ6ZOnRoREREdHX377bf/
+OOPXhYxlj3muhN37do1ZsyYHj16REdHX3fddSUlJdYX0okGsXr1asceTE5O1koZhlJw3YkMQ1kc
OXLktttu69OnT3h4+C9+8QtrHKUyEuXhohP1HomKqqqOPwQAAAAAABckW3YCAAAAAIyAUAoAAAAA
3EYoBQAAAABuI5QCAAAAALcRSgEAAACA2wilAAAAAMBthFIAAAAA4DZCKQAAAABwG6EUAEBHtbW1
iktTp059/vnnFUX5+OOP/d1YAADcYPJ3AwAAgSwsLGz16tXWh8XFxTt27Pj973/ft29fbU9SUlL3
7t0XLFhgsVj81EYAADyhqKrq7zYAALqKBx54YOXKlQcPHhwyZIi/2wIAgFdI8AMA+Jltgt+nn36q
KMobb7zxwgsv9OvXLyQkpH///hs3bqyrq5s9e3avXr2ioqLGjx//zTffWF9++vTp3/3ud3379jWb
zRaLZcaMGUePHu34u9fW1j744IMpKSlhYWEWiyUvL2/v3r3tPfmpp55SFOXLL7+07vn6668VRXni
iSc8+ugAAIkRSgEADMRkMgkhVq9eXVVVVVpaumPHjqamppkzZ06fPn3QoEEHDx586623du3adccd
d2jPP3v27IgRI4qKih566KFt27YtW7Zs3759w4cP/+677zr4jpMnT3755Zfnzp27cePGgoKC6urq
sWPHVlZW6vUJAQCBgmulAAAGoiiKEOLChQtr1qzRtmfPnv3EE0/Ex8fn5+cLIRITE/Py8jZu3Hjh
woXu3buvXLmyoqJi69at48ePF0KMHDly6NCh11xzzbJly1atWnXZtzt9+nRMTMwf/vCHhx9+WNtj
sVjGjh27YcOGRx55RMfPCQCQH6EUAMBwcnJytDhKCBEXFyeEGDlypLU0Li6utbW1rq6ud+/eW7Zs
6dGjx8iRI5uamrTSpKSktLS00tLSjrxRr169/vWvf9nuycjIEEIcO3asUz4IACCAEUoBAAynV69e
1m0t5a9nz552e1pbW4UQx48fr62tDQ0NtashIiKig+/14Ycfrlix4tChQ2fOnLl06ZK2U6scAAAX
CKUAABJTFKVPnz4bNmxw3N+Rl+/du3fMmDFpaWkrVqxIT08PCQk5ffr0DTfcoENLAQCBhlAKACCx
hISEjz/+eMiQIdpUlbvWrVvX0tKyfv36rKwsbc8nn3zi4vlBQUGi7ZzVqVOnPHhfAEAAYAU/AIDE
fv3rX1+4cKGwsNC6p6mpafbs2e+//35HXt7c3CzaZg8uX75cCGHN9LMTGxsrhDh58qR1z+bNmz1q
OABAeoRSAACJ5efnp6Wl3XfffU8//fTWrVvffvvtnJyct956Kzo6WnvC8uXLTSbTO++84/TlY8aM
EUIsWLBg9+7dmzdvvummm5KSkiIjIz/66KM9e/a0tLTs3LnTZDI9+OCD2vPHjh0bFBT03HPPffXV
V998881LL720f/9+2wqfeeYZk8m0ceNGPT80AMAQCKUAABKLjIzctWvX7NmzX3vttZtuuumBBx6w
WCwffvjhddddpz2htbW1vSkmIcSMGTOWLl168ODBMWPGLFy4MDc399lnn128ePF33303c+bM8+fP
q6p66dIlaw0ZGRnvvPNObW3ttddeO3z48MOHD2tB2oULF2zfjlUrAKArUFRV9XcbAADQUW5u7qOP
PpqXl+fvhgAAAgqhFAAgkNXU1GRkZBw+fDgmJsbfbQEABBQS/AAAgayqqqqgoIA4CgDQ6ZiVAgAA
AAC3MSsFAAAAAG4jlAIAAAAAtxFKAQAAAIDbCKUAAAAAwG2EUgAAAADgNkIpAAAAAHAboRQAAAAA
uI1QCgAAAADcRigFAAAAAG4jlAIAAAAAt/1/f+kKuF65fKYAAAAASUVORK5CYII=
--=-=-=
Content-Type: text/plain


-- 
Ihor Radchenko // yantar92,
Org mode contributor,
Learn more about Org mode at <https://orgmode.org/>.
Support Org development at <https://liberapay.com/org-mode>,
or support my work at <https://liberapay.com/yantar92>

--=-=-=--





Information forwarded to bug-gnu-emacs@HIDDEN:
bug#58558; Package emacs. Full text available.

Message received at 58558 <at> debbugs.gnu.org:


Received: (at 58558) by debbugs.gnu.org; 20 Feb 2023 14:54:52 +0000
From debbugs-submit-bounces <at> debbugs.gnu.org Mon Feb 20 09:54:52 2023
Received: from localhost ([127.0.0.1]:51155 helo=debbugs.gnu.org)
	by debbugs.gnu.org with esmtp (Exim 4.84_2)
	(envelope-from <debbugs-submit-bounces <at> debbugs.gnu.org>)
	id 1pU7Z6-0007WK-7i
	for submit <at> debbugs.gnu.org; Mon, 20 Feb 2023 09:54:52 -0500
Received: from mail-wm1-f45.google.com ([209.85.128.45]:39742)
 by debbugs.gnu.org with esmtp (Exim 4.84_2)
 (envelope-from <raaahh@HIDDEN>) id 1pU7Z3-0007W6-R5
 for 58558 <at> debbugs.gnu.org; Mon, 20 Feb 2023 09:54:50 -0500
Received: by mail-wm1-f45.google.com with SMTP id
 o4-20020a05600c4fc400b003e1f5f2a29cso1350580wmq.4
 for <58558 <at> debbugs.gnu.org>; Mon, 20 Feb 2023 06:54:49 -0800 (PST)
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20210112;
 h=content-transfer-encoding:in-reply-to:from:references:cc:to
 :content-language:subject:user-agent:mime-version:date:message-id
 :sender:from:to:cc:subject:date:message-id:reply-to;
 bh=s89iVlVXnI7JS5iGyboLvfU8ct9Z2V3g4SMEw0R/goI=;
 b=exdzx7CL1K/8zzRmJeG+FHsI3VHypbIPeHvVWL3kRXYnr5Vvmyjhjm9ssjlW/OrfTy
 V1b+8oeVJxS5KQuu1ubfyq04AN7i0stengWkXvlT4cNBHrtFIoVmI9als3zfPs8AF21O
 x/m5Kz0xKUT+5nBEy3eII1i3lYHWiW8FH+E2epPqWx2CN3hxmi2n0NPkzAWlaKFtFulg
 H+4L+MiPAjBaHLCzLB/Mbok3i0l0nMRyRvMBNVWbYAgfOI1bJkdcTT6f+jR64VTVaEQW
 HqDzRU+siD3g0U+nZCDI0yB7/YOEnZOB71vIVv5C9cgqPfea3Ld9PIpcOrsfYx1AEh8J
 Kzeg==
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
 d=1e100.net; s=20210112;
 h=content-transfer-encoding:in-reply-to:from:references:cc:to
 :content-language:subject:user-agent:mime-version:date:message-id
 :sender:x-gm-message-state:from:to:cc:subject:date:message-id
 :reply-to;
 bh=s89iVlVXnI7JS5iGyboLvfU8ct9Z2V3g4SMEw0R/goI=;
 b=oPYGUKILdu1YEcOxniS2ph9V0bcPoSNdm+uzsqgXONSU5Jmx9f+vNImxsfnpc7byL+
 MxesDV9438Re/3poQlxVLRZCHKQA6K/No+3k/pIIUhRZYr3Q6enMFLovfK8BSDVbQx2Z
 4WH3fu3+SaTGcWOXNgrh/vTz6o3k3Fiu2hrIaIRRHuBWFJLDCLieTTRzyX1UpUjuJ2OR
 znQeN1h+t+i3K8MUYjzWYpAicNbKZEOndD2QVOo3Us41Fyr0p8LoK/Vbcf+0ViBK08Dk
 2P7PUamlpHyku1Qxa0z2iiLPluhLgkj1YWeReviQyyT2o4gVaiTJthP0/NInKbxJTdz7
 J2WA==
X-Gm-Message-State: AO0yUKXVs6S70ddTJinNoYwtHz7HwDkyJwIpdC0VvwLY1+3ESypBmXqN
 3wMFekaBBYWXsyL0Eogna0I=
X-Google-Smtp-Source: AK7set9AaZj9N21jyIT/c6Mh5gm8bdZCSBYEip6V1y0qxWTbz/FdJ6HyPL43VNHxyBy6gKrGCcTJYA==
X-Received: by 2002:a05:600c:43d2:b0:3db:2df0:f2b8 with SMTP id
 f18-20020a05600c43d200b003db2df0f2b8mr7956716wmn.36.1676904883678; 
 Mon, 20 Feb 2023 06:54:43 -0800 (PST)
Received: from [192.168.0.2] ([46.251.119.176])
 by smtp.googlemail.com with ESMTPSA id
 v10-20020a05600c214a00b003e209186c07sm1485615wml.19.2023.02.20.06.54.42
 (version=TLS1_3 cipher=TLS_AES_128_GCM_SHA256 bits=128/128);
 Mon, 20 Feb 2023 06:54:43 -0800 (PST)
Message-ID: <1f45f940-a9d1-9c5b-f83e-e48013c1af06@HIDDEN>
Date: Mon, 20 Feb 2023 16:54:41 +0200
MIME-Version: 1.0
User-Agent: Mozilla/5.0 (X11; Linux x86_64; rv:102.0) Gecko/20100101
 Thunderbird/102.4.2
Subject: Re: bug#58558: 29.0.50; re-search-forward is slow in some buffers
Content-Language: en-US
To: Ihor Radchenko <yantar92@HIDDEN>
References: <877d10r21x.fsf@localhost> <87zgdwyvkt.fsf@HIDDEN>
 <87ilkk6ri5.fsf@localhost> <7b99ac3a-6cc3-77dd-a2da-e327f9b4236d@HIDDEN>
 <87mt584osq.fsf@localhost>
From: Dmitry Gutov <dgutov@HIDDEN>
In-Reply-To: <87mt584osq.fsf@localhost>
Content-Type: text/plain; charset=UTF-8; format=flowed
Content-Transfer-Encoding: 7bit
X-Spam-Score: -0.9 (/)
X-Debbugs-Envelope-To: 58558
Cc: 58558 <at> debbugs.gnu.org, Lars Ingebrigtsen <larsi@HIDDEN>
X-BeenThere: debbugs-submit <at> debbugs.gnu.org
X-Mailman-Version: 2.1.18
Precedence: list
List-Id: <debbugs-submit.debbugs.gnu.org>
List-Unsubscribe: <https://debbugs.gnu.org/cgi-bin/mailman/options/debbugs-submit>, 
 <mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=unsubscribe>
List-Archive: <https://debbugs.gnu.org/cgi-bin/mailman/private/debbugs-submit/>
List-Post: <mailto:debbugs-submit <at> debbugs.gnu.org>
List-Help: <mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=help>
List-Subscribe: <https://debbugs.gnu.org/cgi-bin/mailman/listinfo/debbugs-submit>, 
 <mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=subscribe>
Errors-To: debbugs-submit-bounces <at> debbugs.gnu.org
Sender: "Debbugs-submit" <debbugs-submit-bounces <at> debbugs.gnu.org>
X-Spam-Score: -1.9 (-)

On 20/02/2023 12:24, Ihor Radchenko wrote:
> Dmitry Gutov<dgutov@HIDDEN>  writes:
> 
>> It seems like it might be helpful to upload the document somewhere, so
>> that people can also to reproduce it on their own.
> Unfortunately not. I can only reproduce using my config.

Bisecting it could also be an option. But this can be a pain, I realize.




Information forwarded to bug-gnu-emacs@HIDDEN:
bug#58558; Package emacs. Full text available.

Message received at 58558 <at> debbugs.gnu.org:


Received: (at 58558) by debbugs.gnu.org; 20 Feb 2023 10:24:25 +0000
From debbugs-submit-bounces <at> debbugs.gnu.org Mon Feb 20 05:24:25 2023
Received: from localhost ([127.0.0.1]:50565 helo=debbugs.gnu.org)
	by debbugs.gnu.org with esmtp (Exim 4.84_2)
	(envelope-from <debbugs-submit-bounces <at> debbugs.gnu.org>)
	id 1pU3LM-0003Qz-PE
	for submit <at> debbugs.gnu.org; Mon, 20 Feb 2023 05:24:25 -0500
Received: from mout01.posteo.de ([185.67.36.65]:60399)
 by debbugs.gnu.org with esmtp (Exim 4.84_2)
 (envelope-from <yantar92@HIDDEN>) id 1pU3LK-0003Ql-PU
 for 58558 <at> debbugs.gnu.org; Mon, 20 Feb 2023 05:24:23 -0500
Received: from submission (posteo.de [185.67.36.169]) 
 by mout01.posteo.de (Postfix) with ESMTPS id BF940240176
 for <58558 <at> debbugs.gnu.org>; Mon, 20 Feb 2023 11:24:14 +0100 (CET)
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=posteo.net; s=2017;
 t=1676888656; bh=p7Wx9SuRfD18RJsQUOOzmSCoRC/npOvEx6G/ePLYW0Y=;
 h=From:To:Cc:Subject:Date:From;
 b=fzfQ5cmKtR7zOaHctcoRdB+HQqQzvXPraPcDwDadpXxBNiwIQZkQYHXTv5bCZ7JvW
 uPfvVHqtbHypq66rNzAcmvXkotb+I1azDI7PQwBW7XZp6LAUAfkUvtqDU2/lRRsopl
 54UkMXDmpzs7rYYpMf0Us15VxLS1983YTrveyEu7ZEiHJebUpjASOa2VXo50pwbeJE
 2Anq9EW8P2Lc9U3exEZkk9ZXLkSfjb2tvWnctwD9RT9pBe7+RR88h+9wTK241tj6r1
 GTL7bR5m8kY93cR6I/rtf5S+qPtE7kdT5HLO2hiPpLcfHaAEM53PwRTNO87bq1EkBF
 CGpdzwLxWv90w==
Received: from customer (localhost [127.0.0.1])
 by submission (posteo.de) with ESMTPSA id 4PKz6j1Ywtz9rxL;
 Mon, 20 Feb 2023 11:24:12 +0100 (CET)
From: Ihor Radchenko <yantar92@HIDDEN>
To: Dmitry Gutov <dgutov@HIDDEN>
Subject: Re: bug#58558: 29.0.50; re-search-forward is slow in some buffers
In-Reply-To: <7b99ac3a-6cc3-77dd-a2da-e327f9b4236d@HIDDEN>
References: <877d10r21x.fsf@localhost> <87zgdwyvkt.fsf@HIDDEN>
 <87ilkk6ri5.fsf@localhost>
 <7b99ac3a-6cc3-77dd-a2da-e327f9b4236d@HIDDEN>
Date: Mon, 20 Feb 2023 10:24:53 +0000
Message-ID: <87mt584osq.fsf@localhost>
MIME-Version: 1.0
Content-Type: text/plain
X-Spam-Score: -2.3 (--)
X-Debbugs-Envelope-To: 58558
Cc: 58558 <at> debbugs.gnu.org, Lars Ingebrigtsen <larsi@HIDDEN>
X-BeenThere: debbugs-submit <at> debbugs.gnu.org
X-Mailman-Version: 2.1.18
Precedence: list
List-Id: <debbugs-submit.debbugs.gnu.org>
List-Unsubscribe: <https://debbugs.gnu.org/cgi-bin/mailman/options/debbugs-submit>, 
 <mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=unsubscribe>
List-Archive: <https://debbugs.gnu.org/cgi-bin/mailman/private/debbugs-submit/>
List-Post: <mailto:debbugs-submit <at> debbugs.gnu.org>
List-Help: <mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=help>
List-Subscribe: <https://debbugs.gnu.org/cgi-bin/mailman/listinfo/debbugs-submit>, 
 <mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=subscribe>
Errors-To: debbugs-submit-bounces <at> debbugs.gnu.org
Sender: "Debbugs-submit" <debbugs-submit-bounces <at> debbugs.gnu.org>
X-Spam-Score: -3.3 (---)

Dmitry Gutov <dgutov@HIDDEN> writes:

> It seems like it might be helpful to upload the document somewhere, so 
> that people can also to reproduce it on their own.

Unfortunately not. I can only reproduce using my config.

-- 
Ihor Radchenko // yantar92,
Org mode contributor,
Learn more about Org mode at <https://orgmode.org/>.
Support Org development at <https://liberapay.com/org-mode>,
or support my work at <https://liberapay.com/yantar92>




Information forwarded to bug-gnu-emacs@HIDDEN:
bug#58558; Package emacs. Full text available.

Message received at 58558 <at> debbugs.gnu.org:


Received: (at 58558) by debbugs.gnu.org; 19 Feb 2023 12:17:12 +0000
From debbugs-submit-bounces <at> debbugs.gnu.org Sun Feb 19 07:17:12 2023
Received: from localhost ([127.0.0.1]:45898 helo=debbugs.gnu.org)
	by debbugs.gnu.org with esmtp (Exim 4.84_2)
	(envelope-from <debbugs-submit-bounces <at> debbugs.gnu.org>)
	id 1pTicy-0002F3-3j
	for submit <at> debbugs.gnu.org; Sun, 19 Feb 2023 07:17:12 -0500
Received: from mail-wr1-f53.google.com ([209.85.221.53]:38802)
 by debbugs.gnu.org with esmtp (Exim 4.84_2)
 (envelope-from <raaahh@HIDDEN>) id 1pTicv-0002Ej-2K
 for 58558 <at> debbugs.gnu.org; Sun, 19 Feb 2023 07:17:10 -0500
Received: by mail-wr1-f53.google.com with SMTP id b11so1008439wrw.5
 for <58558 <at> debbugs.gnu.org>; Sun, 19 Feb 2023 04:17:09 -0800 (PST)
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20210112;
 h=content-transfer-encoding:in-reply-to:from:references:cc:to
 :content-language:subject:user-agent:mime-version:date:message-id
 :sender:from:to:cc:subject:date:message-id:reply-to;
 bh=oNp3eiTDXr7N0stJRf9vnI+dOQhzxj6gdKY++pvmmg0=;
 b=LUfrS8herrvWgtroa2KbqHezXwJo5Vx4c3IY2ERInofyxQOLVAmPc2X7Zb4I0sGKVB
 REX1d7f4P+Oo7OW6fE4Y1S2c+t1oZz+HGkNlUgiFs7rs4iLIv3RkJGb1JBxvxLyWFzYa
 PtEAUjKlsaEt8LtZkUvyLZ1Maexk3wr5PMyotk/QSeywA9NjjvTks1XTvX+ZqlvaoltY
 LSDwDNOoWPddFlOq3hD4WGycbR0lGpJ3ioPouJnB34SmKmZjKCNU4UvuE2fR3rORsII5
 hui8gVeLxO9rLXne1lBfiysCle0XunN3lSaj5Q5VxJfcFeEQHnmPSrEFnU5hosfG2GGz
 bcpQ==
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
 d=1e100.net; s=20210112;
 h=content-transfer-encoding:in-reply-to:from:references:cc:to
 :content-language:subject:user-agent:mime-version:date:message-id
 :sender:x-gm-message-state:from:to:cc:subject:date:message-id
 :reply-to;
 bh=oNp3eiTDXr7N0stJRf9vnI+dOQhzxj6gdKY++pvmmg0=;
 b=5I+iat0pPjDsU/pVHSAEn7iTW1QT0yM87Z6D0g7E/BkAL2PqiigoHtaachu1J0d6EB
 RL8+wtazTe6N2ATVW3416V+/1tOLEVVRQm16HZMjL1BjWIaOcBRZH1l34ZreMbxCNeFK
 6SOCbFgEl89hp4+v6t3LHf6DTXvm77WM3PxSs46d1yaoQqSyu/9rjwhgRua45R3sf3/1
 PVzYmchkjg3wx64CjEs0W4UtiN+J42WwfUM+nfgk/P6OIg4458ypS6jXw54bxNYO2Nna
 mVFNak8eSE8GYVSbaeTqxV62+WCmy/OwFl0RQFnWUCoZHgNHDJmtjJOTT0BGEvFvQQHl
 qfyA==
X-Gm-Message-State: AO0yUKVYUixMWqsU9gQy4EMtudGnVwnw5yX+0GMd//mdAQ+H+L7PD4Gz
 o4OM/qmYHT5iilPrUK6SBAI=
X-Google-Smtp-Source: AK7set+hGgXyqRK+tZI5Gc7TF6mBCBA0BAOsRlC36rhiwqDjG+/REFnTGKjOfMAmIbZysRiIMsMMDg==
X-Received: by 2002:a5d:504a:0:b0:2c5:8475:5bc1 with SMTP id
 h10-20020a5d504a000000b002c584755bc1mr687267wrt.9.1676809023098; 
 Sun, 19 Feb 2023 04:17:03 -0800 (PST)
Received: from [192.168.0.2] ([46.251.119.176])
 by smtp.googlemail.com with ESMTPSA id
 j2-20020adfea42000000b002c5804b6afasm9349067wrn.67.2023.02.19.04.17.01
 (version=TLS1_3 cipher=TLS_AES_128_GCM_SHA256 bits=128/128);
 Sun, 19 Feb 2023 04:17:02 -0800 (PST)
Message-ID: <7b99ac3a-6cc3-77dd-a2da-e327f9b4236d@HIDDEN>
Date: Sun, 19 Feb 2023 14:17:00 +0200
MIME-Version: 1.0
User-Agent: Mozilla/5.0 (X11; Linux x86_64; rv:102.0) Gecko/20100101
 Thunderbird/102.4.2
Subject: Re: bug#58558: 29.0.50; re-search-forward is slow in some buffers
Content-Language: en-US
To: Ihor Radchenko <yantar92@HIDDEN>, Lars Ingebrigtsen <larsi@HIDDEN>
References: <877d10r21x.fsf@localhost> <87zgdwyvkt.fsf@HIDDEN>
 <87ilkk6ri5.fsf@localhost>
From: Dmitry Gutov <dgutov@HIDDEN>
In-Reply-To: <87ilkk6ri5.fsf@localhost>
Content-Type: text/plain; charset=UTF-8; format=flowed
Content-Transfer-Encoding: 7bit
X-Spam-Score: -0.9 (/)
X-Debbugs-Envelope-To: 58558
Cc: 58558 <at> debbugs.gnu.org
X-BeenThere: debbugs-submit <at> debbugs.gnu.org
X-Mailman-Version: 2.1.18
Precedence: list
List-Id: <debbugs-submit.debbugs.gnu.org>
List-Unsubscribe: <https://debbugs.gnu.org/cgi-bin/mailman/options/debbugs-submit>, 
 <mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=unsubscribe>
List-Archive: <https://debbugs.gnu.org/cgi-bin/mailman/private/debbugs-submit/>
List-Post: <mailto:debbugs-submit <at> debbugs.gnu.org>
List-Help: <mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=help>
List-Subscribe: <https://debbugs.gnu.org/cgi-bin/mailman/listinfo/debbugs-submit>, 
 <mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=subscribe>
Errors-To: debbugs-submit-bounces <at> debbugs.gnu.org
Sender: "Debbugs-submit" <debbugs-submit-bounces <at> debbugs.gnu.org>
X-Spam-Score: -1.9 (-)

On 16/10/2022 12:34, Ihor Radchenko wrote:
> Lars Ingebrigtsen<larsi@HIDDEN>  writes:
> 
>>> It happens consistently in Emacs 29, but not in all buffers. Sometimes,
>>> it only happens after some time after Emacs startup. The slowdown is not
>>> there in Emacs 28.
>> Is there anything special about buffers where you see these slowdowns?
> This is a large complex Org buffer.
> 

It seems like it might be helpful to upload the document somewhere, so 
that people can also to reproduce it on their own.

Because I tried this with an Org doc laying around, and couldn't see the 
problem.

You can probably replace all the characters with X or x to anonymize any 
sensitive information, if that's a concern.




Information forwarded to bug-gnu-emacs@HIDDEN:
bug#58558; Package emacs. Full text available.

Message received at 58558 <at> debbugs.gnu.org:


Received: (at 58558) by debbugs.gnu.org; 14 Dec 2022 14:13:12 +0000
From debbugs-submit-bounces <at> debbugs.gnu.org Wed Dec 14 09:13:12 2022
Received: from localhost ([127.0.0.1]:39493 helo=debbugs.gnu.org)
	by debbugs.gnu.org with esmtp (Exim 4.84_2)
	(envelope-from <debbugs-submit-bounces <at> debbugs.gnu.org>)
	id 1p5SVT-00014h-R2
	for submit <at> debbugs.gnu.org; Wed, 14 Dec 2022 09:13:12 -0500
Received: from eggs.gnu.org ([209.51.188.92]:34558)
 by debbugs.gnu.org with esmtp (Exim 4.84_2)
 (envelope-from <eliz@HIDDEN>) id 1p5SVQ-00014b-HB
 for 58558 <at> debbugs.gnu.org; Wed, 14 Dec 2022 09:13:11 -0500
Received: from fencepost.gnu.org ([2001:470:142:3::e])
 by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256)
 (Exim 4.90_1) (envelope-from <eliz@HIDDEN>)
 id 1p5SVK-00069d-1z; Wed, 14 Dec 2022 09:13:02 -0500
DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; d=gnu.org;
 s=fencepost-gnu-org; h=References:Subject:In-Reply-To:To:From:Date:
 mime-version; bh=nFex79qukNwwMueYc772gPdDjg9hlCXxfmZRj8Z3JiQ=; b=An8NzYAG/E1M
 VU8EwdJpEYc2aFXlzNozv47a6CXAj/gkk6UX6Scq+iRr8+Mq+6lNvaZoLgqwtB6n38mpEL8KlJzBN
 PEIx+ftZ1jD8xh34lvtZANFABKXbLAdxPrSQF0K9DbAOvVx8kvOa8kltUdhBHn0RaikI+MVvKfiEi
 pSXZq02xlkwdhoYXEXTzDhNAtKWbcGeiFO+GVZEdYRkKePLBML2SgRbUceKEJOYP1xBSWET14brQx
 7gQJx+i+FI3MZyjsdEL8Un6Zn0SKhg6NR2I/IakHCxwilETvaDK3wJyPp3GP8pbfvqI6BilMIzl89
 zwjB9LVfsb5G/Vm0eEBM5A==;
Received: from [87.69.77.57] (helo=home-c4e4a596f7)
 by fencepost.gnu.org with esmtpsa (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256)
 (Exim 4.90_1) (envelope-from <eliz@HIDDEN>)
 id 1p5SVE-0001Ny-KF; Wed, 14 Dec 2022 09:13:01 -0500
Date: Wed, 14 Dec 2022 16:12:53 +0200
Message-Id: <83sfhim5ui.fsf@HIDDEN>
From: Eli Zaretskii <eliz@HIDDEN>
To: Ihor Radchenko <yantar92@HIDDEN>
In-Reply-To: <87mt7qt880.fsf@localhost> (message from Ihor Radchenko on Wed,
 14 Dec 2022 13:39:43 +0000)
Subject: Re: bug#58558: 29.0.50; re-search-forward is slow in some buffers
References: <877d10r21x.fsf@localhost> <83sfjo3tfw.fsf@HIDDEN>
 <jwvbkqbhnu8.fsf-monnier+emacs@HIDDEN> <878rlfjmjh.fsf@localhost>
 <87mt9tbbbp.fsf@HIDDEN> <8335bl18lo.fsf@HIDDEN>
 <87wn8x9eqb.fsf@HIDDEN> <87tu1zd2c6.fsf@localhost>
 <83h6xzphxm.fsf@HIDDEN> <87wn6vbfaa.fsf@localhost>
 <838rjbpecw.fsf@HIDDEN> <87fsdjwb4e.fsf@localhost>
 <83zgbrnv53.fsf@HIDDEN> <87bko78aif.fsf@localhost>
 <83o7s7nqch.fsf@HIDDEN> <878rjb89kq.fsf@localhost>
 <83mt7rnkb7.fsf@HIDDEN> <87cz8musay.fsf@localhost>
 <831qp2nnhz.fsf@HIDDEN> <87v8met8zt.fsf@localhost>
 <83v8mem7p1.fsf@HIDDEN> <87mt7qt880.fsf@localhost>
X-Spam-Score: -2.3 (--)
X-Debbugs-Envelope-To: 58558
Cc: 58558 <at> debbugs.gnu.org, larsi@HIDDEN, monnier@HIDDEN
X-BeenThere: debbugs-submit <at> debbugs.gnu.org
X-Mailman-Version: 2.1.18
Precedence: list
List-Id: <debbugs-submit.debbugs.gnu.org>
List-Unsubscribe: <https://debbugs.gnu.org/cgi-bin/mailman/options/debbugs-submit>, 
 <mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=unsubscribe>
List-Archive: <https://debbugs.gnu.org/cgi-bin/mailman/private/debbugs-submit/>
List-Post: <mailto:debbugs-submit <at> debbugs.gnu.org>
List-Help: <mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=help>
List-Subscribe: <https://debbugs.gnu.org/cgi-bin/mailman/listinfo/debbugs-submit>, 
 <mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=subscribe>
Errors-To: debbugs-submit-bounces <at> debbugs.gnu.org
Sender: "Debbugs-submit" <debbugs-submit-bounces <at> debbugs.gnu.org>
X-Spam-Score: -3.3 (---)

> From: Ihor Radchenko <yantar92@HIDDEN>
> Cc: larsi@HIDDEN, monnier@HIDDEN, 58558 <at> debbugs.gnu.org
> Date: Wed, 14 Dec 2022 13:39:43 +0000
> 
> How can I find the number of buffer markers?

Compile Emacs with -DMARKER_DEBUG, and then you can call count_markers
from GDB:

  (gdb) print count_markers(current_buffer)

But you need to make sure current_buffer is the buffer you are
interested in.  One trick is to do this:

  (gdb) break Fredraw_display

and then type "M-x redraw-display" with the buffer in the selected
window.  Then call count_markers as above, and it should return the
number of markers in the current buffer.




Information forwarded to bug-gnu-emacs@HIDDEN:
bug#58558; Package emacs. Full text available.

Message received at 58558 <at> debbugs.gnu.org:


Received: (at 58558) by debbugs.gnu.org; 14 Dec 2022 14:01:35 +0000
From debbugs-submit-bounces <at> debbugs.gnu.org Wed Dec 14 09:01:34 2022
Received: from localhost ([127.0.0.1]:39445 helo=debbugs.gnu.org)
	by debbugs.gnu.org with esmtp (Exim 4.84_2)
	(envelope-from <debbugs-submit-bounces <at> debbugs.gnu.org>)
	id 1p5SKE-0000y4-HM
	for submit <at> debbugs.gnu.org; Wed, 14 Dec 2022 09:01:34 -0500
Received: from mout02.posteo.de ([185.67.36.66]:33891)
 by debbugs.gnu.org with esmtp (Exim 4.84_2)
 (envelope-from <yantar92@HIDDEN>) id 1p5SKC-0000xy-2h
 for 58558 <at> debbugs.gnu.org; Wed, 14 Dec 2022 09:01:33 -0500
Received: from submission (posteo.de [185.67.36.169]) 
 by mout02.posteo.de (Postfix) with ESMTPS id 90CAF240101
 for <58558 <at> debbugs.gnu.org>; Wed, 14 Dec 2022 15:01:25 +0100 (CET)
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=posteo.net; s=2017;
 t=1671026486; bh=dTtC/kTKf+Sehu8+qnyN3gDxiYYOHdAaq85fL65mMyg=;
 h=From:To:Cc:Subject:Date:From;
 b=FLKQaPlYyXt0danzSJkJnNPLGryKv6WqrzZIrm4b/46ThD+I1BwCY6fZibrvvmV7K
 UJwuJcwZ1F6hgLRcJDs1pSY2cHNg4bwtPX9Fj4f3ds9IGfrRYRfBTgg+LCk+nRDtUp
 gq6SQguey9QyziDFcGAWrHRRMWsXqGwz0UNyLbnZg8ML07+F1KtUPBBPoKyzWyRxox
 e/X+RHM5ogzy7BS6WYKEWmWyP0SxoH0NUJ7GEq0W/fJmYG2s1r3+04etTuGZSv2TjD
 zXwQVeCVJmlqXkkqxTNj2qh6QgF2M1SecpCn5l/FMHhUCwusNpbIpsxHYicfVe2xHF
 Qq/v75Z+08Blg==
Received: from customer (localhost [127.0.0.1])
 by submission (posteo.de) with ESMTPSA id 4NXH8h3DQ1z6tlh;
 Wed, 14 Dec 2022 15:01:24 +0100 (CET)
From: Ihor Radchenko <yantar92@HIDDEN>
To: Eli Zaretskii <eliz@HIDDEN>
Subject: Re: bug#58558: 29.0.50; re-search-forward is slow in some buffers
In-Reply-To: <83tu1ym6jo.fsf@HIDDEN>
References: <877d10r21x.fsf@localhost> <87tu44jdce.fsf@localhost>
 <87czasjd9j.fsf@HIDDEN> <87k050nio5.fsf@localhost>
 <87zgdwhw0z.fsf@HIDDEN> <83sfjo3tfw.fsf@HIDDEN>
 <jwvbkqbhnu8.fsf-monnier+emacs@HIDDEN> <878rlfjmjh.fsf@localhost>
 <87mt9tbbbp.fsf@HIDDEN> <8335bl18lo.fsf@HIDDEN>
 <87wn8x9eqb.fsf@HIDDEN> <87tu1zd2c6.fsf@localhost>
 <83h6xzphxm.fsf@HIDDEN> <87wn6vbfaa.fsf@localhost>
 <838rjbpecw.fsf@HIDDEN> <87fsdjwb4e.fsf@localhost>
 <jwv5yefb556.fsf-monnier+emacs@HIDDEN> <874jtyuqax.fsf@localhost>
 <83zgbqm8q6.fsf@HIDDEN> <87sfhit8ug.fsf@localhost>
 <83tu1ym6jo.fsf@HIDDEN>
Date: Wed, 14 Dec 2022 14:01:22 +0000
Message-ID: <87h6xyt77x.fsf@localhost>
MIME-Version: 1.0
Content-Type: text/plain
X-Spam-Score: -2.3 (--)
X-Debbugs-Envelope-To: 58558
Cc: 58558 <at> debbugs.gnu.org, larsi@HIDDEN, monnier@HIDDEN
X-BeenThere: debbugs-submit <at> debbugs.gnu.org
X-Mailman-Version: 2.1.18
Precedence: list
List-Id: <debbugs-submit.debbugs.gnu.org>
List-Unsubscribe: <https://debbugs.gnu.org/cgi-bin/mailman/options/debbugs-submit>, 
 <mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=unsubscribe>
List-Archive: <https://debbugs.gnu.org/cgi-bin/mailman/private/debbugs-submit/>
List-Post: <mailto:debbugs-submit <at> debbugs.gnu.org>
List-Help: <mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=help>
List-Subscribe: <https://debbugs.gnu.org/cgi-bin/mailman/listinfo/debbugs-submit>, 
 <mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=subscribe>
Errors-To: debbugs-submit-bounces <at> debbugs.gnu.org
Sender: "Debbugs-submit" <debbugs-submit-bounces <at> debbugs.gnu.org>
X-Spam-Score: -3.3 (---)

Eli Zaretskii <eliz@HIDDEN> writes:

> ...  For example, profile collected when the benchmark
> is run at the beginning of the session compared with profile from
> benchmark after several hours.  I thought you already posted such a
> comparison, and it, too, pointed at buf_bytepos_to_charpos?

Yes. Not exactly. I compared freshly opened buffer vs. after several
hours.

> Did you try to see how the number of markers in the buffer evolves
> with the up-time?

Is there any way to get the number of buffer markers from Elisp?

-- 
Ihor Radchenko // yantar92,
Org mode contributor,
Learn more about Org mode at <https://orgmode.org/>.
Support Org development at <https://liberapay.com/org-mode>,
or support my work at <https://liberapay.com/yantar92>




Information forwarded to bug-gnu-emacs@HIDDEN:
bug#58558; Package emacs. Full text available.

Message received at 58558 <at> debbugs.gnu.org:


Received: (at 58558) by debbugs.gnu.org; 14 Dec 2022 13:58:02 +0000
From debbugs-submit-bounces <at> debbugs.gnu.org Wed Dec 14 08:58:02 2022
Received: from localhost ([127.0.0.1]:39420 helo=debbugs.gnu.org)
	by debbugs.gnu.org with esmtp (Exim 4.84_2)
	(envelope-from <debbugs-submit-bounces <at> debbugs.gnu.org>)
	id 1p5SGn-0000tb-Gp
	for submit <at> debbugs.gnu.org; Wed, 14 Dec 2022 08:58:02 -0500
Received: from eggs.gnu.org ([209.51.188.92]:35890)
 by debbugs.gnu.org with esmtp (Exim 4.84_2)
 (envelope-from <eliz@HIDDEN>) id 1p5SGj-0000tN-MV
 for 58558 <at> debbugs.gnu.org; Wed, 14 Dec 2022 08:57:59 -0500
Received: from fencepost.gnu.org ([2001:470:142:3::e])
 by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256)
 (Exim 4.90_1) (envelope-from <eliz@HIDDEN>)
 id 1p5SGd-0007zy-GL; Wed, 14 Dec 2022 08:57:51 -0500
DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; d=gnu.org;
 s=fencepost-gnu-org; h=References:Subject:In-Reply-To:To:From:Date:
 mime-version; bh=hTb9tI4qTpucCuOF8G1kDSkRQHARaFNQxpRuaA1lqyw=; b=btoiJ2rL5GyM
 n1bCgZmNyrytSJCNMZ2aPQb4L9Q4WEFT1b98fAdNfAv/e3Kfh14H9MsEOA+12bKwppeXklGTJIVRK
 LvQsA1N1alrK+fUz1U0nDfYjZG4gDLLXpwITnTiPdTI9wkb9P6LxFptl/XKzvYJpH6Uduey38s0u0
 e+Sr9mNkiALePVLTZxNrirjTsEcxjXn4vSfySLvyaPuN3WaaIA4ady59g3pvPYSI9TGKExoibQUMs
 J7DYEK7ZGBFWDPPFBJRGnOi6keRBZUijM1xpdqNnn2p+0JpWXeslEBknR4SdjsLxJTofKmPirSanr
 abr9z3qtz2Tc7Tlw6pNYUg==;
Received: from [87.69.77.57] (helo=home-c4e4a596f7)
 by fencepost.gnu.org with esmtpsa (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256)
 (Exim 4.90_1) (envelope-from <eliz@HIDDEN>)
 id 1p5SGc-00020D-W8; Wed, 14 Dec 2022 08:57:51 -0500
Date: Wed, 14 Dec 2022 15:57:47 +0200
Message-Id: <83tu1ym6jo.fsf@HIDDEN>
From: Eli Zaretskii <eliz@HIDDEN>
To: Ihor Radchenko <yantar92@HIDDEN>
In-Reply-To: <87sfhit8ug.fsf@localhost> (message from Ihor Radchenko on Wed,
 14 Dec 2022 13:26:15 +0000)
Subject: Re: bug#58558: 29.0.50; re-search-forward is slow in some buffers
References: <877d10r21x.fsf@localhost> <87ilkk6ri5.fsf@localhost>
 <87v8okjei9.fsf@HIDDEN> <87tu44jdce.fsf@localhost>
 <87czasjd9j.fsf@HIDDEN> <87k050nio5.fsf@localhost>
 <87zgdwhw0z.fsf@HIDDEN> <83sfjo3tfw.fsf@HIDDEN>
 <jwvbkqbhnu8.fsf-monnier+emacs@HIDDEN> <878rlfjmjh.fsf@localhost>
 <87mt9tbbbp.fsf@HIDDEN> <8335bl18lo.fsf@HIDDEN>
 <87wn8x9eqb.fsf@HIDDEN> <87tu1zd2c6.fsf@localhost>
 <83h6xzphxm.fsf@HIDDEN> <87wn6vbfaa.fsf@localhost>
 <838rjbpecw.fsf@HIDDEN> <87fsdjwb4e.fsf@localhost>
 <jwv5yefb556.fsf-monnier+emacs@HIDDEN> <874jtyuqax.fsf@localhost>
 <83zgbqm8q6.fsf@HIDDEN> <87sfhit8ug.fsf@localhost>
X-Spam-Score: -2.3 (--)
X-Debbugs-Envelope-To: 58558
Cc: 58558 <at> debbugs.gnu.org, larsi@HIDDEN, monnier@HIDDEN
X-BeenThere: debbugs-submit <at> debbugs.gnu.org
X-Mailman-Version: 2.1.18
Precedence: list
List-Id: <debbugs-submit.debbugs.gnu.org>
List-Unsubscribe: <https://debbugs.gnu.org/cgi-bin/mailman/options/debbugs-submit>, 
 <mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=unsubscribe>
List-Archive: <https://debbugs.gnu.org/cgi-bin/mailman/private/debbugs-submit/>
List-Post: <mailto:debbugs-submit <at> debbugs.gnu.org>
List-Help: <mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=help>
List-Subscribe: <https://debbugs.gnu.org/cgi-bin/mailman/listinfo/debbugs-submit>, 
 <mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=subscribe>
Errors-To: debbugs-submit-bounces <at> debbugs.gnu.org
Sender: "Debbugs-submit" <debbugs-submit-bounces <at> debbugs.gnu.org>
X-Spam-Score: -3.3 (---)

> From: Ihor Radchenko <yantar92@HIDDEN>
> Cc: monnier@HIDDEN, larsi@HIDDEN, 58558 <at> debbugs.gnu.org
> Date: Wed, 14 Dec 2022 13:26:15 +0000
> 
> Eli Zaretskii <eliz@HIDDEN> writes:
> 
> > Anyway, the fact that the time doesn't get worse when you GC between
> > benchmark most probably means that we produce a lot of garbage markers
> > (i.e., temporary markers that very quickly become unreferenced), and
> > they get in the way of buf_bytepos_to_charpos.
> 
> Most likely, but it is only part of the problem. If these temporary
> markers where the only problem, I would not see gradual performance
> degradation as I continue Emacs session (`garbage-collect` is called
> anyway during normal usage).

We've only seen perf profiles for the benchmark, and they point
squarely at buf_bytepos_to_charpos, which AFAIU means markers.  To
identify other potential causes, we need to see profiles for other
patterns of usage.  For example, profile collected when the benchmark
is run at the beginning of the session compared with profile from
benchmark after several hours.  I thought you already posted such a
comparison, and it, too, pointed at buf_bytepos_to_charpos?  Which
would probably mean that the amount of markers is increasing, albeit
more slowly, even through GC collects some of them.

Did you try to see how the number of markers in the buffer evolves
with the up-time?




Information forwarded to bug-gnu-emacs@HIDDEN:
bug#58558; Package emacs. Full text available.

Message received at 58558 <at> debbugs.gnu.org:


Received: (at 58558) by debbugs.gnu.org; 14 Dec 2022 13:39:54 +0000
From debbugs-submit-bounces <at> debbugs.gnu.org Wed Dec 14 08:39:54 2022
Received: from localhost ([127.0.0.1]:39343 helo=debbugs.gnu.org)
	by debbugs.gnu.org with esmtp (Exim 4.84_2)
	(envelope-from <debbugs-submit-bounces <at> debbugs.gnu.org>)
	id 1p5RzG-0000f5-Ao
	for submit <at> debbugs.gnu.org; Wed, 14 Dec 2022 08:39:54 -0500
Received: from mout01.posteo.de ([185.67.36.65]:60483)
 by debbugs.gnu.org with esmtp (Exim 4.84_2)
 (envelope-from <yantar92@HIDDEN>) id 1p5RzD-0000ey-RI
 for 58558 <at> debbugs.gnu.org; Wed, 14 Dec 2022 08:39:52 -0500
Received: from submission (posteo.de [185.67.36.169]) 
 by mout01.posteo.de (Postfix) with ESMTPS id 1CD2F24002A
 for <58558 <at> debbugs.gnu.org>; Wed, 14 Dec 2022 14:39:46 +0100 (CET)
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=posteo.net; s=2017;
 t=1671025186; bh=YFTHDnjkGSQYe0A7Zcnalul0KQM0kZp0JYdmKZMtshI=;
 h=From:To:Cc:Subject:Date:From;
 b=KoA1RtbeFJ7dSpqwKmXHdIquXXT3IL0OuYpLUV7ew3LDoERANVxSSXmgQTQYxGDyk
 Xnj9aUEhzTMO2rua1Ri9XmMzSoUJv2+FMaDdlafTTlCHiwU70cBD3BmtNtjyNHZwKd
 2iQFsWW+LDtkqOaCZFYn76Mn+8qWdOxPNNkUtdRd7MdI5Tcr1Em4bFLmvljNai5lrk
 +cXTKuBxb9xGFv+R4u5kGi0Boy/wBzQhLeR406lZ1FgTwZWpxd3FuLPnqKvM0y5hf6
 0D1pAsWGKr7eZme1minsRe0Rkl5jGQH79/POYtRB5GxXo3aJYcWGsM+icCaA5s/jEe
 EOhZgvlOC1HCA==
Received: from customer (localhost [127.0.0.1])
 by submission (posteo.de) with ESMTPSA id 4NXGgj3Kd6z6tm6;
 Wed, 14 Dec 2022 14:39:45 +0100 (CET)
From: Ihor Radchenko <yantar92@HIDDEN>
To: Eli Zaretskii <eliz@HIDDEN>
Subject: Re: bug#58558: 29.0.50; re-search-forward is slow in some buffers
In-Reply-To: <83v8mem7p1.fsf@HIDDEN>
References: <877d10r21x.fsf@localhost> <83sfjo3tfw.fsf@HIDDEN>
 <jwvbkqbhnu8.fsf-monnier+emacs@HIDDEN> <878rlfjmjh.fsf@localhost>
 <87mt9tbbbp.fsf@HIDDEN> <8335bl18lo.fsf@HIDDEN>
 <87wn8x9eqb.fsf@HIDDEN> <87tu1zd2c6.fsf@localhost>
 <83h6xzphxm.fsf@HIDDEN> <87wn6vbfaa.fsf@localhost>
 <838rjbpecw.fsf@HIDDEN> <87fsdjwb4e.fsf@localhost>
 <83zgbrnv53.fsf@HIDDEN> <87bko78aif.fsf@localhost>
 <83o7s7nqch.fsf@HIDDEN> <878rjb89kq.fsf@localhost>
 <83mt7rnkb7.fsf@HIDDEN> <87cz8musay.fsf@localhost>
 <831qp2nnhz.fsf@HIDDEN> <87v8met8zt.fsf@localhost>
 <83v8mem7p1.fsf@HIDDEN>
Date: Wed, 14 Dec 2022 13:39:43 +0000
Message-ID: <87mt7qt880.fsf@localhost>
MIME-Version: 1.0
Content-Type: text/plain
X-Spam-Score: -2.3 (--)
X-Debbugs-Envelope-To: 58558
Cc: 58558 <at> debbugs.gnu.org, larsi@HIDDEN, monnier@HIDDEN
X-BeenThere: debbugs-submit <at> debbugs.gnu.org
X-Mailman-Version: 2.1.18
Precedence: list
List-Id: <debbugs-submit.debbugs.gnu.org>
List-Unsubscribe: <https://debbugs.gnu.org/cgi-bin/mailman/options/debbugs-submit>, 
 <mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=unsubscribe>
List-Archive: <https://debbugs.gnu.org/cgi-bin/mailman/private/debbugs-submit/>
List-Post: <mailto:debbugs-submit <at> debbugs.gnu.org>
List-Help: <mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=help>
List-Subscribe: <https://debbugs.gnu.org/cgi-bin/mailman/listinfo/debbugs-submit>, 
 <mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=subscribe>
Errors-To: debbugs-submit-bounces <at> debbugs.gnu.org
Sender: "Debbugs-submit" <debbugs-submit-bounces <at> debbugs.gnu.org>
X-Spam-Score: -3.3 (---)

Eli Zaretskii <eliz@HIDDEN> writes:

>> Markers may or may not be a problem.
>
> What else could slow down buf_bytepos_to_charpos so much?  All it does
> is examine markers.

Well. I believe so. But I feel confused. So, I do not exclude other
reasons.

Note that I have little experience with gdb.

>> f they are, it is not necessarily related to markers created when I
>> run the benchmarks. May also be some markers created during the
>> Emacs session.
>
> Which means massive creation of markers could be the reason,
> regardless of what causes such massive creation.  Right?  But if so,
> why did you say that markers created by some timer(s) were not
> relevant?

Because those came from auto-revert-mode and are unlikely going to
contribute to the single Org buffer I have problems with.

> Btw, did you try to compare the number of buffer markers in Emacs 28
> and Emacs 29/30, under this scenario, when the search becomes slow
> enough?

How can I find the number of buffer markers?

-- 
Ihor Radchenko // yantar92,
Org mode contributor,
Learn more about Org mode at <https://orgmode.org/>.
Support Org development at <https://liberapay.com/org-mode>,
or support my work at <https://liberapay.com/yantar92>




Information forwarded to bug-gnu-emacs@HIDDEN:
bug#58558; Package emacs. Full text available.

Message received at 58558 <at> debbugs.gnu.org:


Received: (at 58558) by debbugs.gnu.org; 14 Dec 2022 13:33:19 +0000
From debbugs-submit-bounces <at> debbugs.gnu.org Wed Dec 14 08:33:19 2022
Received: from localhost ([127.0.0.1]:39299 helo=debbugs.gnu.org)
	by debbugs.gnu.org with esmtp (Exim 4.84_2)
	(envelope-from <debbugs-submit-bounces <at> debbugs.gnu.org>)
	id 1p5Rst-0000aH-8D
	for submit <at> debbugs.gnu.org; Wed, 14 Dec 2022 08:33:19 -0500
Received: from eggs.gnu.org ([209.51.188.92]:39368)
 by debbugs.gnu.org with esmtp (Exim 4.84_2)
 (envelope-from <eliz@HIDDEN>) id 1p5Rso-0000a6-Er
 for 58558 <at> debbugs.gnu.org; Wed, 14 Dec 2022 08:33:17 -0500
Received: from fencepost.gnu.org ([2001:470:142:3::e])
 by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256)
 (Exim 4.90_1) (envelope-from <eliz@HIDDEN>)
 id 1p5Rsi-0002sU-1o; Wed, 14 Dec 2022 08:33:08 -0500
DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; d=gnu.org;
 s=fencepost-gnu-org; h=References:Subject:In-Reply-To:To:From:Date:
 mime-version; bh=ckhgWzfFaCXiB+m+j4cnsFFxd67AOWuCkSGS3FO4T3E=; b=ALfy7hvZaz2v
 S6Knr866lj8KQqQGjnja0zcm2OCgwSNBX906BbH5tBogA2y+25p1lg/K5b9ofOAx1n7EyGPDEGalY
 r3agAEqrAke3ycevYRI3+gnA2FKLQ+WLXEd6WJJjMzR4K6Yd0cjLgzup0G19sNYoKheyGGgK7QQMq
 tKswjmPWV51EZd0q10GD+c75OFrk02NWOBE51cQDCt5lxDhQTytlIzHIP7Un2Ynsn3vtJL/ICDY+J
 l5rp2f9r52GfSbUeHd+mfjqngN+E7CmSCbENqCZRO2qzZGJg6V+MuPvn1MWwsBdmsumHJfEJJeJSZ
 g52K3QGQHSguYGvAFLB7+A==;
Received: from [87.69.77.57] (helo=home-c4e4a596f7)
 by fencepost.gnu.org with esmtpsa (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256)
 (Exim 4.90_1) (envelope-from <eliz@HIDDEN>)
 id 1p5Rsb-0001E5-DM; Wed, 14 Dec 2022 08:33:02 -0500
Date: Wed, 14 Dec 2022 15:32:58 +0200
Message-Id: <83v8mem7p1.fsf@HIDDEN>
From: Eli Zaretskii <eliz@HIDDEN>
To: Ihor Radchenko <yantar92@HIDDEN>
In-Reply-To: <87v8met8zt.fsf@localhost> (message from Ihor Radchenko on Wed,
 14 Dec 2022 13:23:02 +0000)
Subject: Re: bug#58558: 29.0.50; re-search-forward is slow in some buffers
References: <877d10r21x.fsf@localhost> <87k050nio5.fsf@localhost>
 <87zgdwhw0z.fsf@HIDDEN> <83sfjo3tfw.fsf@HIDDEN>
 <jwvbkqbhnu8.fsf-monnier+emacs@HIDDEN> <878rlfjmjh.fsf@localhost>
 <87mt9tbbbp.fsf@HIDDEN> <8335bl18lo.fsf@HIDDEN>
 <87wn8x9eqb.fsf@HIDDEN> <87tu1zd2c6.fsf@localhost>
 <83h6xzphxm.fsf@HIDDEN> <87wn6vbfaa.fsf@localhost>
 <838rjbpecw.fsf@HIDDEN> <87fsdjwb4e.fsf@localhost>
 <83zgbrnv53.fsf@HIDDEN> <87bko78aif.fsf@localhost>
 <83o7s7nqch.fsf@HIDDEN> <878rjb89kq.fsf@localhost>
 <83mt7rnkb7.fsf@HIDDEN> <87cz8musay.fsf@localhost>
 <831qp2nnhz.fsf@HIDDEN> <87v8met8zt.fsf@localhost>
X-Spam-Score: -2.3 (--)
X-Debbugs-Envelope-To: 58558
Cc: 58558 <at> debbugs.gnu.org, larsi@HIDDEN, monnier@HIDDEN
X-BeenThere: debbugs-submit <at> debbugs.gnu.org
X-Mailman-Version: 2.1.18
Precedence: list
List-Id: <debbugs-submit.debbugs.gnu.org>
List-Unsubscribe: <https://debbugs.gnu.org/cgi-bin/mailman/options/debbugs-submit>, 
 <mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=unsubscribe>
List-Archive: <https://debbugs.gnu.org/cgi-bin/mailman/private/debbugs-submit/>
List-Post: <mailto:debbugs-submit <at> debbugs.gnu.org>
List-Help: <mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=help>
List-Subscribe: <https://debbugs.gnu.org/cgi-bin/mailman/listinfo/debbugs-submit>, 
 <mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=subscribe>
Errors-To: debbugs-submit-bounces <at> debbugs.gnu.org
Sender: "Debbugs-submit" <debbugs-submit-bounces <at> debbugs.gnu.org>
X-Spam-Score: -3.3 (---)

> From: Ihor Radchenko <yantar92@HIDDEN>
> Cc: larsi@HIDDEN, monnier@HIDDEN, 58558 <at> debbugs.gnu.org
> Date: Wed, 14 Dec 2022 13:23:02 +0000
> 
> Eli Zaretskii <eliz@HIDDEN> writes:
> 
> > I think I'm confused now: what do you mean by "executing the
> > benchmark"?  I thought the problem was that each "execution of the
> > benchmark" was slower than the one before it, in which case markers
> > added between benchmarks _are_ relevant.  But you say they aren't?
> > What did I miss?
> 
> Increasing time of running benchmarks is just a symptom.
> The real issue I am experiencing is that re-search-forward becomes
> slower as I keep using Emacs. `garbage-collect' helps, but not in a long
> term.
> 
> Basically, running
> 
> M-: (benchmark-progn (goto-char (point-min)) (while (re-search-forward yant/re nil t)))
> 
> - right after starting Emacs is taking 3-4 seconds.
> - after several hours -- 10-20 seconds
> - in Emacs 28, <1 sec.
> 
> Markers may or may not be a problem.

What else could slow down buf_bytepos_to_charpos so much?  All it does
is examine markers.

> f they are, it is not necessarily related to markers created when I
> run the benchmarks. May also be some markers created during the
> Emacs session.

Which means massive creation of markers could be the reason,
regardless of what causes such massive creation.  Right?  But if so,
why did you say that markers created by some timer(s) were not
relevant?

Btw, did you try to compare the number of buffer markers in Emacs 28
and Emacs 29/30, under this scenario, when the search becomes slow
enough?




Information forwarded to bug-gnu-emacs@HIDDEN:
bug#58558; Package emacs. Full text available.

Message received at 58558 <at> debbugs.gnu.org:


Received: (at 58558) by debbugs.gnu.org; 14 Dec 2022 13:26:25 +0000
From debbugs-submit-bounces <at> debbugs.gnu.org Wed Dec 14 08:26:25 2022
Received: from localhost ([127.0.0.1]:39264 helo=debbugs.gnu.org)
	by debbugs.gnu.org with esmtp (Exim 4.84_2)
	(envelope-from <debbugs-submit-bounces <at> debbugs.gnu.org>)
	id 1p5RmD-0000UO-2C
	for submit <at> debbugs.gnu.org; Wed, 14 Dec 2022 08:26:25 -0500
Received: from mout01.posteo.de ([185.67.36.65]:47497)
 by debbugs.gnu.org with esmtp (Exim 4.84_2)
 (envelope-from <yantar92@HIDDEN>) id 1p5RmB-0000UG-8l
 for 58558 <at> debbugs.gnu.org; Wed, 14 Dec 2022 08:26:23 -0500
Received: from submission (posteo.de [185.67.36.169]) 
 by mout01.posteo.de (Postfix) with ESMTPS id B84EE240028
 for <58558 <at> debbugs.gnu.org>; Wed, 14 Dec 2022 14:26:17 +0100 (CET)
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=posteo.net; s=2017;
 t=1671024377; bh=F6yTpFQ14sJ1p8RYQumE8TsKucxQfudisXqy/96cSkk=;
 h=From:To:Cc:Subject:Date:From;
 b=rWI++15xv8st3Ht5+oFvLnWie7u1LX446pPcGDJmBw06nQPvzq4EwgeZhOzRk9Kl4
 sl879+wNfGboaetOXTn2v6cV3RabjQlX4hNoMrAFB4cx4NcE7dxsjbHtW1eEuO4+DZ
 G3v/Ftg/zAqJRIJCFnL38vPQ0BLtpOVucC2sxEAOYANPgmAWZDetPDm+w530mNpMzT
 +1pkI0jDG+RwhUVVa6cP4eDHIEmkIn5FSKjrMYhk7OQk9U/NPqY+jcb6sN5yM5DARX
 DQsqMdh5mGeI25yOlz/ea8uJOTxvPNy6VdgfWK71+6wg9cyqTievZJ277Sm271QiAO
 CzHPir7P4+ZPg==
Received: from customer (localhost [127.0.0.1])
 by submission (posteo.de) with ESMTPSA id 4NXGN91HH2z6tmK;
 Wed, 14 Dec 2022 14:26:17 +0100 (CET)
From: Ihor Radchenko <yantar92@HIDDEN>
To: Eli Zaretskii <eliz@HIDDEN>
Subject: Re: bug#58558: 29.0.50; re-search-forward is slow in some buffers
In-Reply-To: <83zgbqm8q6.fsf@HIDDEN>
References: <877d10r21x.fsf@localhost> <87ilkk6ri5.fsf@localhost>
 <87v8okjei9.fsf@HIDDEN> <87tu44jdce.fsf@localhost>
 <87czasjd9j.fsf@HIDDEN> <87k050nio5.fsf@localhost>
 <87zgdwhw0z.fsf@HIDDEN> <83sfjo3tfw.fsf@HIDDEN>
 <jwvbkqbhnu8.fsf-monnier+emacs@HIDDEN> <878rlfjmjh.fsf@localhost>
 <87mt9tbbbp.fsf@HIDDEN> <8335bl18lo.fsf@HIDDEN>
 <87wn8x9eqb.fsf@HIDDEN> <87tu1zd2c6.fsf@localhost>
 <83h6xzphxm.fsf@HIDDEN> <87wn6vbfaa.fsf@localhost>
 <838rjbpecw.fsf@HIDDEN> <87fsdjwb4e.fsf@localhost>
 <jwv5yefb556.fsf-monnier+emacs@HIDDEN> <874jtyuqax.fsf@localhost>
 <83zgbqm8q6.fsf@HIDDEN>
Date: Wed, 14 Dec 2022 13:26:15 +0000
Message-ID: <87sfhit8ug.fsf@localhost>
MIME-Version: 1.0
Content-Type: text/plain
X-Spam-Score: -2.3 (--)
X-Debbugs-Envelope-To: 58558
Cc: 58558 <at> debbugs.gnu.org, larsi@HIDDEN, monnier@HIDDEN
X-BeenThere: debbugs-submit <at> debbugs.gnu.org
X-Mailman-Version: 2.1.18
Precedence: list
List-Id: <debbugs-submit.debbugs.gnu.org>
List-Unsubscribe: <https://debbugs.gnu.org/cgi-bin/mailman/options/debbugs-submit>, 
 <mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=unsubscribe>
List-Archive: <https://debbugs.gnu.org/cgi-bin/mailman/private/debbugs-submit/>
List-Post: <mailto:debbugs-submit <at> debbugs.gnu.org>
List-Help: <mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=help>
List-Subscribe: <https://debbugs.gnu.org/cgi-bin/mailman/listinfo/debbugs-submit>, 
 <mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=subscribe>
Errors-To: debbugs-submit-bounces <at> debbugs.gnu.org
Sender: "Debbugs-submit" <debbugs-submit-bounces <at> debbugs.gnu.org>
X-Spam-Score: -3.3 (---)

Eli Zaretskii <eliz@HIDDEN> writes:

>> Combined with the fact that calling `garbage-collect' between benchmarks
>> makes the benchmark time nearly constant, this result may or may not
>> mean something.
>
> Is the "almost constant" time still significantly slower thane in
> previous versions?  Or is it similar?

It is orders of magnitude slower: sub-second in Emacs 28; seconds in
Emacs 29 fresh session; tens of seconds after several hours of Emacs
usage.

> Anyway, the fact that the time doesn't get worse when you GC between
> benchmark most probably means that we produce a lot of garbage markers
> (i.e., temporary markers that very quickly become unreferenced), and
> they get in the way of buf_bytepos_to_charpos.

Most likely, but it is only part of the problem. If these temporary
markers where the only problem, I would not see gradual performance
degradation as I continue Emacs session (`garbage-collect` is called
anyway during normal usage).

-- 
Ihor Radchenko // yantar92,
Org mode contributor,
Learn more about Org mode at <https://orgmode.org/>.
Support Org development at <https://liberapay.com/org-mode>,
or support my work at <https://liberapay.com/yantar92>




Information forwarded to bug-gnu-emacs@HIDDEN:
bug#58558; Package emacs. Full text available.

Message received at 58558 <at> debbugs.gnu.org:


Received: (at 58558) by debbugs.gnu.org; 14 Dec 2022 13:23:16 +0000
From debbugs-submit-bounces <at> debbugs.gnu.org Wed Dec 14 08:23:16 2022
Received: from localhost ([127.0.0.1]:39237 helo=debbugs.gnu.org)
	by debbugs.gnu.org with esmtp (Exim 4.84_2)
	(envelope-from <debbugs-submit-bounces <at> debbugs.gnu.org>)
	id 1p5RjA-0000Ri-Cz
	for submit <at> debbugs.gnu.org; Wed, 14 Dec 2022 08:23:16 -0500
Received: from mout01.posteo.de ([185.67.36.65]:36301)
 by debbugs.gnu.org with esmtp (Exim 4.84_2)
 (envelope-from <yantar92@HIDDEN>) id 1p5Rj8-0000Ra-Pl
 for 58558 <at> debbugs.gnu.org; Wed, 14 Dec 2022 08:23:15 -0500
Received: from submission (posteo.de [185.67.36.169]) 
 by mout01.posteo.de (Postfix) with ESMTPS id 76A9C24002A
 for <58558 <at> debbugs.gnu.org>; Wed, 14 Dec 2022 14:23:08 +0100 (CET)
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=posteo.net; s=2017;
 t=1671024188; bh=xkvZo0bTKaD+gFLb0G7Z9J0KlxSkmmAKB9ToJnLq+P4=;
 h=From:To:Cc:Subject:Date:From;
 b=aNlqqytPFbSoRQKFss4RPRSTBOvT2hFhdtx6mnVwNu4h7sYYOqQzX8Y4uE0q8oSXb
 GSYxuQ56ymB6ESkNI10GfRyuqWfdHRA9IcFFFwtrBZPOrV6rVG823p2gA38JBfoL3c
 rxSmKGtJEQn3Fe2fUZtfmnBDX3cH3tiycEJrsQf4a7vZx5tPoMsQ3CvxsGrsFObhPG
 Mn+4iIDEwvJGJkALYRDD0lyaa3zUapjA16tcjhn0o94A+steVaiLj96nqXGShgQvtL
 D4RXro9UFTyiTh8SuvpYMaJp2/We41LsOxbscCE6++LpH+4MsxBgVkTKOaLuaP5Pig
 M/PtFK0BzFVZg==
Received: from customer (localhost [127.0.0.1])
 by submission (posteo.de) with ESMTPSA id 4NXGJT5LnKz6tm6;
 Wed, 14 Dec 2022 14:23:04 +0100 (CET)
From: Ihor Radchenko <yantar92@HIDDEN>
To: Eli Zaretskii <eliz@HIDDEN>
Subject: Re: bug#58558: 29.0.50; re-search-forward is slow in some buffers
In-Reply-To: <831qp2nnhz.fsf@HIDDEN>
References: <877d10r21x.fsf@localhost> <87k050nio5.fsf@localhost>
 <87zgdwhw0z.fsf@HIDDEN> <83sfjo3tfw.fsf@HIDDEN>
 <jwvbkqbhnu8.fsf-monnier+emacs@HIDDEN> <878rlfjmjh.fsf@localhost>
 <87mt9tbbbp.fsf@HIDDEN> <8335bl18lo.fsf@HIDDEN>
 <87wn8x9eqb.fsf@HIDDEN> <87tu1zd2c6.fsf@localhost>
 <83h6xzphxm.fsf@HIDDEN> <87wn6vbfaa.fsf@localhost>
 <838rjbpecw.fsf@HIDDEN> <87fsdjwb4e.fsf@localhost>
 <83zgbrnv53.fsf@HIDDEN> <87bko78aif.fsf@localhost>
 <83o7s7nqch.fsf@HIDDEN> <878rjb89kq.fsf@localhost>
 <83mt7rnkb7.fsf@HIDDEN> <87cz8musay.fsf@localhost>
 <831qp2nnhz.fsf@HIDDEN>
Date: Wed, 14 Dec 2022 13:23:02 +0000
Message-ID: <87v8met8zt.fsf@localhost>
MIME-Version: 1.0
Content-Type: text/plain
X-Spam-Score: -2.3 (--)
X-Debbugs-Envelope-To: 58558
Cc: 58558 <at> debbugs.gnu.org, larsi@HIDDEN, monnier@HIDDEN
X-BeenThere: debbugs-submit <at> debbugs.gnu.org
X-Mailman-Version: 2.1.18
Precedence: list
List-Id: <debbugs-submit.debbugs.gnu.org>
List-Unsubscribe: <https://debbugs.gnu.org/cgi-bin/mailman/options/debbugs-submit>, 
 <mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=unsubscribe>
List-Archive: <https://debbugs.gnu.org/cgi-bin/mailman/private/debbugs-submit/>
List-Post: <mailto:debbugs-submit <at> debbugs.gnu.org>
List-Help: <mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=help>
List-Subscribe: <https://debbugs.gnu.org/cgi-bin/mailman/listinfo/debbugs-submit>, 
 <mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=subscribe>
Errors-To: debbugs-submit-bounces <at> debbugs.gnu.org
Sender: "Debbugs-submit" <debbugs-submit-bounces <at> debbugs.gnu.org>
X-Spam-Score: -3.3 (---)

Eli Zaretskii <eliz@HIDDEN> writes:

> I think I'm confused now: what do you mean by "executing the
> benchmark"?  I thought the problem was that each "execution of the
> benchmark" was slower than the one before it, in which case markers
> added between benchmarks _are_ relevant.  But you say they aren't?
> What did I miss?

Increasing time of running benchmarks is just a symptom.
The real issue I am experiencing is that re-search-forward becomes
slower as I keep using Emacs. `garbage-collect' helps, but not in a long
term.

Basically, running

M-: (benchmark-progn (goto-char (point-min)) (while (re-search-forward yant/re nil t)))

- right after starting Emacs is taking 3-4 seconds.
- after several hours -- 10-20 seconds
- in Emacs 28, <1 sec.

Markers may or may not be a problem. If they are, it is not necessarily
related to markers created when I run the benchmarks. May also be some
markers created during the Emacs session.

-- 
Ihor Radchenko // yantar92,
Org mode contributor,
Learn more about Org mode at <https://orgmode.org/>.
Support Org development at <https://liberapay.com/org-mode>,
or support my work at <https://liberapay.com/yantar92>




Information forwarded to bug-gnu-emacs@HIDDEN:
bug#58558; Package emacs. Full text available.

Message received at 58558 <at> debbugs.gnu.org:


Received: (at 58558) by debbugs.gnu.org; 14 Dec 2022 13:11:12 +0000
From debbugs-submit-bounces <at> debbugs.gnu.org Wed Dec 14 08:11:12 2022
Received: from localhost ([127.0.0.1]:39178 helo=debbugs.gnu.org)
	by debbugs.gnu.org with esmtp (Exim 4.84_2)
	(envelope-from <debbugs-submit-bounces <at> debbugs.gnu.org>)
	id 1p5RXU-0000JO-7c
	for submit <at> debbugs.gnu.org; Wed, 14 Dec 2022 08:11:12 -0500
Received: from eggs.gnu.org ([209.51.188.92]:40722)
 by debbugs.gnu.org with esmtp (Exim 4.84_2)
 (envelope-from <eliz@HIDDEN>) id 1p5RXR-0000JF-5P
 for 58558 <at> debbugs.gnu.org; Wed, 14 Dec 2022 08:11:11 -0500
Received: from fencepost.gnu.org ([2001:470:142:3::e])
 by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256)
 (Exim 4.90_1) (envelope-from <eliz@HIDDEN>)
 id 1p5RXJ-0000LZ-LW; Wed, 14 Dec 2022 08:11:02 -0500
DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; d=gnu.org;
 s=fencepost-gnu-org; h=References:Subject:In-Reply-To:To:From:Date:
 mime-version; bh=AbRiFOzd4QP9nt1apZCm1s70FYOlA1/tI3huaVDtxY8=; b=iaLqmLHHiu6O
 AyJhxQCLxduG7nmeloP2hFpgQ/F0YdOYmfLsTp6G+hE13aWXRaKgR9lK040zw7wHLdqAyW/ct4Uj+
 KD7SQyKO7C7jbpuLlIbz6v2GK2u8j1HlHsfdhk5crzWNkMUk0xScueJFzjKCm1Hmu3aKmAzR602Xl
 95zI1QxC4pbYf3UzS8t5roXmYNtUGSk5GkreDdEB1sgp8acYJ1dM/1PvPYG1YqPkVhp5/1k218kzx
 Q9cepkYumXpXlIy3+S1dhetl56TGcdsFoVsNlWljd2aml9g3eNmC6Oq+JHFO/ea7AA0HumYnThfSx
 ZhMvMTsrheNQ96kx1yCX9Q==;
Received: from [87.69.77.57] (helo=home-c4e4a596f7)
 by fencepost.gnu.org with esmtpsa (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256)
 (Exim 4.90_1) (envelope-from <eliz@HIDDEN>)
 id 1p5RX1-0003d9-JH; Wed, 14 Dec 2022 08:10:58 -0500
Date: Wed, 14 Dec 2022 15:10:41 +0200
Message-Id: <83zgbqm8q6.fsf@HIDDEN>
From: Eli Zaretskii <eliz@HIDDEN>
To: Ihor Radchenko <yantar92@HIDDEN>
In-Reply-To: <874jtyuqax.fsf@localhost> (message from Ihor Radchenko on Wed,
 14 Dec 2022 12:23:50 +0000)
Subject: Re: bug#58558: 29.0.50; re-search-forward is slow in some buffers
References: <877d10r21x.fsf@localhost> <87zgdwyvkt.fsf@HIDDEN>
 <87ilkk6ri5.fsf@localhost> <87v8okjei9.fsf@HIDDEN>
 <87tu44jdce.fsf@localhost> <87czasjd9j.fsf@HIDDEN>
 <87k050nio5.fsf@localhost> <87zgdwhw0z.fsf@HIDDEN>
 <83sfjo3tfw.fsf@HIDDEN> <jwvbkqbhnu8.fsf-monnier+emacs@HIDDEN>
 <878rlfjmjh.fsf@localhost> <87mt9tbbbp.fsf@HIDDEN>
 <8335bl18lo.fsf@HIDDEN> <87wn8x9eqb.fsf@HIDDEN>
 <87tu1zd2c6.fsf@localhost> <83h6xzphxm.fsf@HIDDEN>
 <87wn6vbfaa.fsf@localhost> <838rjbpecw.fsf@HIDDEN>
 <87fsdjwb4e.fsf@localhost> <jwv5yefb556.fsf-monnier+emacs@HIDDEN>
 <874jtyuqax.fsf@localhost>
X-Spam-Score: -2.3 (--)
X-Debbugs-Envelope-To: 58558
Cc: 58558 <at> debbugs.gnu.org, larsi@HIDDEN, monnier@HIDDEN
X-BeenThere: debbugs-submit <at> debbugs.gnu.org
X-Mailman-Version: 2.1.18
Precedence: list
List-Id: <debbugs-submit.debbugs.gnu.org>
List-Unsubscribe: <https://debbugs.gnu.org/cgi-bin/mailman/options/debbugs-submit>, 
 <mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=unsubscribe>
List-Archive: <https://debbugs.gnu.org/cgi-bin/mailman/private/debbugs-submit/>
List-Post: <mailto:debbugs-submit <at> debbugs.gnu.org>
List-Help: <mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=help>
List-Subscribe: <https://debbugs.gnu.org/cgi-bin/mailman/listinfo/debbugs-submit>, 
 <mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=subscribe>
Errors-To: debbugs-submit-bounces <at> debbugs.gnu.org
Sender: "Debbugs-submit" <debbugs-submit-bounces <at> debbugs.gnu.org>
X-Spam-Score: -3.3 (---)

> From: Ihor Radchenko <yantar92@HIDDEN>
> Cc: Eli Zaretskii <eliz@HIDDEN>, larsi@HIDDEN, 58558 <at> debbugs.gnu.org
> Date: Wed, 14 Dec 2022 12:23:50 +0000
> 
> 18      breakpoint     keep y   0x000055555578be74 in buf_bytepos_to_charpos at marker.c:353
> 	breakpoint already hit 4,245,365 times
> 
> Combined with the fact that calling `garbage-collect' between benchmarks
> makes the benchmark time nearly constant, this result may or may not
> mean something.

Is the "almost constant" time still significantly slower thane in
previous versions?  Or is it similar?

Anyway, the fact that the time doesn't get worse when you GC between
benchmark most probably means that we produce a lot of garbage markers
(i.e., temporary markers that very quickly become unreferenced), and
they get in the way of buf_bytepos_to_charpos.




Information forwarded to bug-gnu-emacs@HIDDEN:
bug#58558; Package emacs. Full text available.

Message received at 58558 <at> debbugs.gnu.org:


Received: (at 58558) by debbugs.gnu.org; 14 Dec 2022 13:06:29 +0000
From debbugs-submit-bounces <at> debbugs.gnu.org Wed Dec 14 08:06:29 2022
Received: from localhost ([127.0.0.1]:39148 helo=debbugs.gnu.org)
	by debbugs.gnu.org with esmtp (Exim 4.84_2)
	(envelope-from <debbugs-submit-bounces <at> debbugs.gnu.org>)
	id 1p5RSv-0000Fu-6D
	for submit <at> debbugs.gnu.org; Wed, 14 Dec 2022 08:06:29 -0500
Received: from eggs.gnu.org ([209.51.188.92]:40236)
 by debbugs.gnu.org with esmtp (Exim 4.84_2)
 (envelope-from <eliz@HIDDEN>) id 1p5RSu-0000Fh-8N
 for 58558 <at> debbugs.gnu.org; Wed, 14 Dec 2022 08:06:28 -0500
Received: from fencepost.gnu.org ([2001:470:142:3::e])
 by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256)
 (Exim 4.90_1) (envelope-from <eliz@HIDDEN>)
 id 1p5RSn-00080V-UN; Wed, 14 Dec 2022 08:06:21 -0500
DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; d=gnu.org;
 s=fencepost-gnu-org; h=References:Subject:In-Reply-To:To:From:Date:
 mime-version; bh=gdxh0uuWSoG9J6AAM1C1t+UdQH1Yoan4WQqL47bu03I=; b=IO8J8O5Lnkyr
 Xrw3bG+ESPsr1yMaq9HhElGLYnEwF0ZoBir7Z/jJdBdJIHpfBTLSwjdK8Xs2mZhnAUl31WLsJh6Xk
 ZnVl9BLqI03WOZK9Ln+MBq5RhxxeA39iD+CnRsNRJw+rXXQKHBm2Q0VoZ8nhusJeUP94CF41ll/Qd
 ZI4QcCK0KkQjn3u6rQfPbWFdTtwGd6wzIO2hZp+H8G/QQGNKrJhmjczsU5c+4qTAPb9rfuGi6Hwto
 T+Yywc7r99u6KuzAb3gLRAFb3JFDQm/vflrKAarp5/Bw2XADz7eP+LztpHs6sr8C33VMa1BrBErFl
 SL8KJ/rQx/Y9FkSzULTnaw==;
Received: from [87.69.77.57] (helo=home-c4e4a596f7)
 by fencepost.gnu.org with esmtpsa (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256)
 (Exim 4.90_1) (envelope-from <eliz@HIDDEN>)
 id 1p5RSl-00058X-Gb; Wed, 14 Dec 2022 08:06:21 -0500
Date: Wed, 14 Dec 2022 15:06:16 +0200
Message-Id: <831qp2nnhz.fsf@HIDDEN>
From: Eli Zaretskii <eliz@HIDDEN>
To: Ihor Radchenko <yantar92@HIDDEN>
In-Reply-To: <87cz8musay.fsf@localhost> (message from Ihor Radchenko on Wed,
 14 Dec 2022 11:40:37 +0000)
Subject: Re: bug#58558: 29.0.50; re-search-forward is slow in some buffers
References: <877d10r21x.fsf@localhost> <87tu44jdce.fsf@localhost>
 <87czasjd9j.fsf@HIDDEN> <87k050nio5.fsf@localhost>
 <87zgdwhw0z.fsf@HIDDEN> <83sfjo3tfw.fsf@HIDDEN>
 <jwvbkqbhnu8.fsf-monnier+emacs@HIDDEN> <878rlfjmjh.fsf@localhost>
 <87mt9tbbbp.fsf@HIDDEN> <8335bl18lo.fsf@HIDDEN>
 <87wn8x9eqb.fsf@HIDDEN> <87tu1zd2c6.fsf@localhost>
 <83h6xzphxm.fsf@HIDDEN> <87wn6vbfaa.fsf@localhost>
 <838rjbpecw.fsf@HIDDEN> <87fsdjwb4e.fsf@localhost>
 <83zgbrnv53.fsf@HIDDEN> <87bko78aif.fsf@localhost>
 <83o7s7nqch.fsf@HIDDEN> <878rjb89kq.fsf@localhost>
 <83mt7rnkb7.fsf@HIDDEN> <87cz8musay.fsf@localhost>
X-Spam-Score: -2.3 (--)
X-Debbugs-Envelope-To: 58558
Cc: 58558 <at> debbugs.gnu.org, larsi@HIDDEN, monnier@HIDDEN
X-BeenThere: debbugs-submit <at> debbugs.gnu.org
X-Mailman-Version: 2.1.18
Precedence: list
List-Id: <debbugs-submit.debbugs.gnu.org>
List-Unsubscribe: <https://debbugs.gnu.org/cgi-bin/mailman/options/debbugs-submit>, 
 <mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=unsubscribe>
List-Archive: <https://debbugs.gnu.org/cgi-bin/mailman/private/debbugs-submit/>
List-Post: <mailto:debbugs-submit <at> debbugs.gnu.org>
List-Help: <mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=help>
List-Subscribe: <https://debbugs.gnu.org/cgi-bin/mailman/listinfo/debbugs-submit>, 
 <mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=subscribe>
Errors-To: debbugs-submit-bounces <at> debbugs.gnu.org
Sender: "Debbugs-submit" <debbugs-submit-bounces <at> debbugs.gnu.org>
X-Spam-Score: -3.3 (---)

> From: Ihor Radchenko <yantar92@HIDDEN>
> Cc: larsi@HIDDEN, monnier@HIDDEN, 58558 <at> debbugs.gnu.org
> Date: Wed, 14 Dec 2022 11:40:37 +0000
> 
> build_marker is not triggered, except during redisplay and completion.
> Fmake_marker is triggered a dozen of times when preparing M-: prompt and
> later a couple of hundreds of times _after_ executing the benchmark:
> 
> Called a couple of hundreds of times
> Lisp Backtrace:
> "match-data" (0xf0c02130)
> 0x59846038 PVEC_COMPILED
> "auto-revert-buffers--buffer-list-filter" (0xf0c020b8)
> "apply" (0xf0c020b0)
> "auto-revert-buffers" (0xf0c02058)
> "apply" (0xf0c02050)
> "timer-event-handler" (0xffffcd48)
> 
> not related.

I think I'm confused now: what do you mean by "executing the
benchmark"?  I thought the problem was that each "execution of the
benchmark" was slower than the one before it, in which case markers
added between benchmarks _are_ relevant.  But you say they aren't?
What did I miss?




Information forwarded to bug-gnu-emacs@HIDDEN:
bug#58558; Package emacs. Full text available.

Message received at 58558 <at> debbugs.gnu.org:


Received: (at 58558) by debbugs.gnu.org; 14 Dec 2022 12:24:05 +0000
From debbugs-submit-bounces <at> debbugs.gnu.org Wed Dec 14 07:24:05 2022
Received: from localhost ([127.0.0.1]:38836 helo=debbugs.gnu.org)
	by debbugs.gnu.org with esmtp (Exim 4.84_2)
	(envelope-from <debbugs-submit-bounces <at> debbugs.gnu.org>)
	id 1p5Qnt-0005oZ-0i
	for submit <at> debbugs.gnu.org; Wed, 14 Dec 2022 07:24:05 -0500
Received: from mout01.posteo.de ([185.67.36.65]:47225)
 by debbugs.gnu.org with esmtp (Exim 4.84_2)
 (envelope-from <yantar92@HIDDEN>) id 1p5Qnr-0005o1-EQ
 for 58558 <at> debbugs.gnu.org; Wed, 14 Dec 2022 07:24:04 -0500
Received: from submission (posteo.de [185.67.36.169]) 
 by mout01.posteo.de (Postfix) with ESMTPS id C1AAB240027
 for <58558 <at> debbugs.gnu.org>; Wed, 14 Dec 2022 13:23:56 +0100 (CET)
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=posteo.net; s=2017;
 t=1671020637; bh=NIqOTYUo6UsuGe/RKx+9X3oVdhrBOHs8Uf8sOIDQAM4=;
 h=From:To:Cc:Subject:Date:From;
 b=XG/SBfyOz6Uk82ahr2rOGMYUO78JRhtRHKSQszSz9RqK+iSuRJTcbu7cgBot3Oja0
 o5gVgr0rKPt2NBQUHsmelJLduMLVb5fKnmcHr/L2rokmK6ovO1nhSiSDZW+bCAjv8u
 1zYYTbY0ZaWl8cvnWqXjNPh9GprvwwkWoE8/qnAWw/47xUr2AvKv4y6tzIZTLM9aev
 kPpCJDKUhRexOha2r7jABsU2ZoYaNEtuTrVzOvG8eMLf9+Bmx7ZcLuMLfrAot3hbt8
 VNShrFz9n62t8vmwg2xGw27g50zz6g2T9rRx1BYyn7E54tv+Ge34Zpe2mN8UZiqc7A
 /H8YUjDpJXQhw==
Received: from customer (localhost [127.0.0.1])
 by submission (posteo.de) with ESMTPSA id 4NXF092Hbdz6tsX;
 Wed, 14 Dec 2022 13:23:52 +0100 (CET)
From: Ihor Radchenko <yantar92@HIDDEN>
To: Stefan Monnier <monnier@HIDDEN>
Subject: Re: bug#58558: 29.0.50; re-search-forward is slow in some buffers
In-Reply-To: <jwv5yefb556.fsf-monnier+emacs@HIDDEN>
References: <877d10r21x.fsf@localhost> <87zgdwyvkt.fsf@HIDDEN>
 <87ilkk6ri5.fsf@localhost> <87v8okjei9.fsf@HIDDEN>
 <87tu44jdce.fsf@localhost> <87czasjd9j.fsf@HIDDEN>
 <87k050nio5.fsf@localhost> <87zgdwhw0z.fsf@HIDDEN>
 <83sfjo3tfw.fsf@HIDDEN> <jwvbkqbhnu8.fsf-monnier+emacs@HIDDEN>
 <878rlfjmjh.fsf@localhost> <87mt9tbbbp.fsf@HIDDEN>
 <8335bl18lo.fsf@HIDDEN> <87wn8x9eqb.fsf@HIDDEN>
 <87tu1zd2c6.fsf@localhost> <83h6xzphxm.fsf@HIDDEN>
 <87wn6vbfaa.fsf@localhost> <838rjbpecw.fsf@HIDDEN>
 <87fsdjwb4e.fsf@localhost> <jwv5yefb556.fsf-monnier+emacs@HIDDEN>
Date: Wed, 14 Dec 2022 12:23:50 +0000
Message-ID: <874jtyuqax.fsf@localhost>
MIME-Version: 1.0
Content-Type: text/plain
X-Spam-Score: -2.3 (--)
X-Debbugs-Envelope-To: 58558
Cc: 58558 <at> debbugs.gnu.org, Eli Zaretskii <eliz@HIDDEN>, larsi@HIDDEN
X-BeenThere: debbugs-submit <at> debbugs.gnu.org
X-Mailman-Version: 2.1.18
Precedence: list
List-Id: <debbugs-submit.debbugs.gnu.org>
List-Unsubscribe: <https://debbugs.gnu.org/cgi-bin/mailman/options/debbugs-submit>, 
 <mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=unsubscribe>
List-Archive: <https://debbugs.gnu.org/cgi-bin/mailman/private/debbugs-submit/>
List-Post: <mailto:debbugs-submit <at> debbugs.gnu.org>
List-Help: <mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=help>
List-Subscribe: <https://debbugs.gnu.org/cgi-bin/mailman/listinfo/debbugs-submit>, 
 <mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=subscribe>
Errors-To: debbugs-submit-bounces <at> debbugs.gnu.org
Sender: "Debbugs-submit" <debbugs-submit-bounces <at> debbugs.gnu.org>
X-Spam-Score: -3.3 (---)

Stefan Monnier <monnier@HIDDEN> writes:

> I'd be interested to know how many iterations of the `for (tail =
> BUF_MARKERS (b);...` loop are executed on average during your
> `re-search-forward` (and how that average changes between runs of
> `re-search-forward`).

I did not get around to measure separate re-search-forward calls, but
total number of hits to CONSIDER (tail->bytepos, tail->charpos); during
benchmark-run is:

18      breakpoint     keep y   0x000055555578be74 in buf_bytepos_to_charpos at marker.c:353
	breakpoint already hit 4,245,365 times

Combined with the fact that calling `garbage-collect' between benchmarks
makes the benchmark time nearly constant, this result may or may not
mean something.

-- 
Ihor Radchenko // yantar92,
Org mode contributor,
Learn more about Org mode at <https://orgmode.org/>.
Support Org development at <https://liberapay.com/org-mode>,
or support my work at <https://liberapay.com/yantar92>




Information forwarded to bug-gnu-emacs@HIDDEN:
bug#58558; Package emacs. Full text available.

Message received at 58558 <at> debbugs.gnu.org:


Received: (at 58558) by debbugs.gnu.org; 14 Dec 2022 12:00:59 +0000
From debbugs-submit-bounces <at> debbugs.gnu.org Wed Dec 14 07:00:59 2022
Received: from localhost ([127.0.0.1]:38713 helo=debbugs.gnu.org)
	by debbugs.gnu.org with esmtp (Exim 4.84_2)
	(envelope-from <debbugs-submit-bounces <at> debbugs.gnu.org>)
	id 1p5QRW-0005SZ-TR
	for submit <at> debbugs.gnu.org; Wed, 14 Dec 2022 07:00:59 -0500
Received: from mout01.posteo.de ([185.67.36.65]:60107)
 by debbugs.gnu.org with esmtp (Exim 4.84_2)
 (envelope-from <yantar92@HIDDEN>) id 1p5QRV-0005SS-5m
 for 58558 <at> debbugs.gnu.org; Wed, 14 Dec 2022 07:00:57 -0500
Received: from submission (posteo.de [185.67.36.169]) 
 by mout01.posteo.de (Postfix) with ESMTPS id 2168A240029
 for <58558 <at> debbugs.gnu.org>; Wed, 14 Dec 2022 13:00:48 +0100 (CET)
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=posteo.net; s=2017;
 t=1671019251; bh=znobLa5hj6Ao2zoLoifo/z/Ms6QlHR9lLTxaGBVuk9Y=;
 h=From:To:Cc:Subject:Date:From;
 b=eu54QDB45VpKToGQpuUHc4huRlcdGXVkW/xzTSJGYNag6fjWaoY0umLUsEny65BRT
 R8B3bFIjhvBUo9zcf5aXSZm0mQDW4zH4dhdb5dAJvqAf9ijBsVkb0eNFwGAjCj5t87
 uSbkD6Dk8X36s4z6AtKTUMto0hR3YV57hGF6C1RBefwC2fOEOwGHAam52XfFuXWbdg
 lSf0xusf1UVV2V/9OvmkMsdn9HG31OgefeunGZJFWgnxe5DNmHOsHxHzIcrWfu6EDW
 y/Q+3OMxFKkJSdwlJ3tfWExDTmRRnzP5+ih6oG0N79/NSRtEM+9Bot2FO9n4hh7VvI
 73AlnABSPAcjA==
Received: from customer (localhost [127.0.0.1])
 by submission (posteo.de) with ESMTPSA id 4NXDTW1mjhz6tml;
 Wed, 14 Dec 2022 13:00:46 +0100 (CET)
From: Ihor Radchenko <yantar92@HIDDEN>
To: Stefan Monnier <monnier@HIDDEN>
Subject: Re: bug#58558: 29.0.50; re-search-forward is slow in some buffers
In-Reply-To: <jwv5yefb556.fsf-monnier+emacs@HIDDEN>
References: <877d10r21x.fsf@localhost> <87zgdwyvkt.fsf@HIDDEN>
 <87ilkk6ri5.fsf@localhost> <87v8okjei9.fsf@HIDDEN>
 <87tu44jdce.fsf@localhost> <87czasjd9j.fsf@HIDDEN>
 <87k050nio5.fsf@localhost> <87zgdwhw0z.fsf@HIDDEN>
 <83sfjo3tfw.fsf@HIDDEN> <jwvbkqbhnu8.fsf-monnier+emacs@HIDDEN>
 <878rlfjmjh.fsf@localhost> <87mt9tbbbp.fsf@HIDDEN>
 <8335bl18lo.fsf@HIDDEN> <87wn8x9eqb.fsf@HIDDEN>
 <87tu1zd2c6.fsf@localhost> <83h6xzphxm.fsf@HIDDEN>
 <87wn6vbfaa.fsf@localhost> <838rjbpecw.fsf@HIDDEN>
 <87fsdjwb4e.fsf@localhost> <jwv5yefb556.fsf-monnier+emacs@HIDDEN>
Date: Wed, 14 Dec 2022 12:00:45 +0000
Message-ID: <877cyuurde.fsf@localhost>
MIME-Version: 1.0
Content-Type: text/plain
X-Spam-Score: -2.3 (--)
X-Debbugs-Envelope-To: 58558
Cc: 58558 <at> debbugs.gnu.org, Eli Zaretskii <eliz@HIDDEN>, larsi@HIDDEN
X-BeenThere: debbugs-submit <at> debbugs.gnu.org
X-Mailman-Version: 2.1.18
Precedence: list
List-Id: <debbugs-submit.debbugs.gnu.org>
List-Unsubscribe: <https://debbugs.gnu.org/cgi-bin/mailman/options/debbugs-submit>, 
 <mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=unsubscribe>
List-Archive: <https://debbugs.gnu.org/cgi-bin/mailman/private/debbugs-submit/>
List-Post: <mailto:debbugs-submit <at> debbugs.gnu.org>
List-Help: <mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=help>
List-Subscribe: <https://debbugs.gnu.org/cgi-bin/mailman/listinfo/debbugs-submit>, 
 <mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=subscribe>
Errors-To: debbugs-submit-bounces <at> debbugs.gnu.org
Sender: "Debbugs-submit" <debbugs-submit-bounces <at> debbugs.gnu.org>
X-Spam-Score: -3.3 (---)

Stefan Monnier <monnier@HIDDEN> writes:

>> My guess: number of markers is growing somehow?
>
> `buf_bytepos_to_charpos` itself creates markers (using them as a cache
> of previous conversions), so that might be why.
>
> But we only look at the first N markers where N*50 is the distance to
> the closest marker found so far.  So growth is not sufficient (it's
> clearly a part of the reason, tho).

What about the following degenerate case:
- Most of the buffer markers are located near point-min;
- We are searching for position near point-max;
- point-max is in order of 21,677,448 (this is my actual file I use for testing)

The number of for loop cycles is then min(21,677,448/50 = ~400k, BUF_MARKERS.size())

Of course, my above argument should not matter in theory, when recent
search matches are cached by build_marker, but my break build_marker
_never_ triggered for some reason.

How can build_marker not be triggered?

From my reading of the code, it happens when the following switch does
not fire.

      bool record = bytepos - best_below_byte > 5000;

I note that this condition will not trigger if all the markers are
above.

On the other hand, this particular condition is there for the last 25
years or so. Just brainstorming...

-- 
Ihor Radchenko // yantar92,
Org mode contributor,
Learn more about Org mode at <https://orgmode.org/>.
Support Org development at <https://liberapay.com/org-mode>,
or support my work at <https://liberapay.com/yantar92>




Information forwarded to bug-gnu-emacs@HIDDEN:
bug#58558; Package emacs. Full text available.

Message received at 58558 <at> debbugs.gnu.org:


Received: (at 58558) by debbugs.gnu.org; 14 Dec 2022 11:42:36 +0000
From debbugs-submit-bounces <at> debbugs.gnu.org Wed Dec 14 06:42:36 2022
Received: from localhost ([127.0.0.1]:38579 helo=debbugs.gnu.org)
	by debbugs.gnu.org with esmtp (Exim 4.84_2)
	(envelope-from <debbugs-submit-bounces <at> debbugs.gnu.org>)
	id 1p5Q9k-0002tV-DW
	for submit <at> debbugs.gnu.org; Wed, 14 Dec 2022 06:42:36 -0500
Received: from mout01.posteo.de ([185.67.36.65]:47027)
 by debbugs.gnu.org with esmtp (Exim 4.84_2)
 (envelope-from <yantar92@HIDDEN>) id 1p5Q9j-0002tP-1l
 for 58558 <at> debbugs.gnu.org; Wed, 14 Dec 2022 06:42:35 -0500
Received: from submission (posteo.de [185.67.36.169]) 
 by mout01.posteo.de (Postfix) with ESMTPS id 8752524002D
 for <58558 <at> debbugs.gnu.org>; Wed, 14 Dec 2022 12:42:29 +0100 (CET)
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=posteo.net; s=2017;
 t=1671018149; bh=nOxKz0Db1hAM5SRWid01TkvfElyTsm2S/Nkqw3fDgMQ=;
 h=From:To:Cc:Subject:Date:From;
 b=JwpqD30sWq4U1Uz7RBlwEAafTtG1WeWAD1XL4Y5iAt4g6s3jkL70qaVXUjxZM3HfS
 ClmZszjJ4B+zmzLOzBc74AlIFVO9gYcbZoH6i4BXlokGSuz8GiA3s40igZCXyZfvln
 YZK2SqljVsX1KQCwPJ9t+9xjDivzPdIKBYvh8bp4kCL/qbher9NaLDXZ95xW4FDXBZ
 EOunxuDnpZFGsyPGFAp+zFvF0PHUv50nxRCyMvjRB/z6sbzDEAriIE7hZ+HH15Fnzt
 Z5VDq3kalomU39cLiWpk9KH8YZCRaZKDnFoyQxxrXB8Xz9u3t86iRCf755VWxwFcxF
 tDPPoigRQILzg==
Received: from customer (localhost [127.0.0.1])
 by submission (posteo.de) with ESMTPSA id 4NXD4N3sL5z9rxG;
 Wed, 14 Dec 2022 12:42:28 +0100 (CET)
From: Ihor Radchenko <yantar92@HIDDEN>
To: Eli Zaretskii <eliz@HIDDEN>
Subject: Re: bug#58558: 29.0.50; re-search-forward is slow in some buffers
In-Reply-To: <83ilifnjgd.fsf@HIDDEN>
References: <877d10r21x.fsf@localhost> <87czasjd9j.fsf@HIDDEN>
 <87k050nio5.fsf@localhost> <87zgdwhw0z.fsf@HIDDEN>
 <83sfjo3tfw.fsf@HIDDEN> <jwvbkqbhnu8.fsf-monnier+emacs@HIDDEN>
 <878rlfjmjh.fsf@localhost> <87mt9tbbbp.fsf@HIDDEN>
 <8335bl18lo.fsf@HIDDEN> <87wn8x9eqb.fsf@HIDDEN>
 <87tu1zd2c6.fsf@localhost> <83h6xzphxm.fsf@HIDDEN>
 <87wn6vbfaa.fsf@localhost> <838rjbpecw.fsf@HIDDEN>
 <87fsdjwb4e.fsf@localhost> <83zgbrnv53.fsf@HIDDEN>
 <87bko78aif.fsf@localhost> <jwvtu1z9nxc.fsf-monnier+emacs@HIDDEN>
 <875yef87vy.fsf@localhost> <jwvcz8n9j3i.fsf-monnier+emacs@HIDDEN>
 <83ilifnjgd.fsf@HIDDEN>
Date: Wed, 14 Dec 2022 11:42:26 +0000
Message-ID: <87a63qus7x.fsf@localhost>
MIME-Version: 1.0
Content-Type: text/plain
X-Spam-Score: -2.3 (--)
X-Debbugs-Envelope-To: 58558
Cc: 58558 <at> debbugs.gnu.org, larsi@HIDDEN,
 Stefan Monnier <monnier@HIDDEN>
X-BeenThere: debbugs-submit <at> debbugs.gnu.org
X-Mailman-Version: 2.1.18
Precedence: list
List-Id: <debbugs-submit.debbugs.gnu.org>
List-Unsubscribe: <https://debbugs.gnu.org/cgi-bin/mailman/options/debbugs-submit>, 
 <mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=unsubscribe>
List-Archive: <https://debbugs.gnu.org/cgi-bin/mailman/private/debbugs-submit/>
List-Post: <mailto:debbugs-submit <at> debbugs.gnu.org>
List-Help: <mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=help>
List-Subscribe: <https://debbugs.gnu.org/cgi-bin/mailman/listinfo/debbugs-submit>, 
 <mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=subscribe>
Errors-To: debbugs-submit-bounces <at> debbugs.gnu.org
Sender: "Debbugs-submit" <debbugs-submit-bounces <at> debbugs.gnu.org>
X-Spam-Score: -3.3 (---)

Eli Zaretskii <eliz@HIDDEN> writes:

>> I suspect these marker allocations for the mode-line are unrelated to the
>> actual problem.
>
> If this is true, then re-running the benchmarks after removing those
> :eval's from the mode-line-format will still show slowdown with each
> benchmark run.

I still see the slowdown after falling back to default mode-line-format.

-- 
Ihor Radchenko // yantar92,
Org mode contributor,
Learn more about Org mode at <https://orgmode.org/>.
Support Org development at <https://liberapay.com/org-mode>,
or support my work at <https://liberapay.com/yantar92>




Information forwarded to bug-gnu-emacs@HIDDEN:
bug#58558; Package emacs. Full text available.

Message received at 58558 <at> debbugs.gnu.org:


Received: (at 58558) by debbugs.gnu.org; 14 Dec 2022 11:40:55 +0000
From debbugs-submit-bounces <at> debbugs.gnu.org Wed Dec 14 06:40:55 2022
Received: from localhost ([127.0.0.1]:38559 helo=debbugs.gnu.org)
	by debbugs.gnu.org with esmtp (Exim 4.84_2)
	(envelope-from <debbugs-submit-bounces <at> debbugs.gnu.org>)
	id 1p5Q86-0002rd-MH
	for submit <at> debbugs.gnu.org; Wed, 14 Dec 2022 06:40:54 -0500
Received: from mout01.posteo.de ([185.67.36.65]:41233)
 by debbugs.gnu.org with esmtp (Exim 4.84_2)
 (envelope-from <yantar92@HIDDEN>) id 1p5Q84-0002rX-Di
 for 58558 <at> debbugs.gnu.org; Wed, 14 Dec 2022 06:40:52 -0500
Received: from submission (posteo.de [185.67.36.169]) 
 by mout01.posteo.de (Postfix) with ESMTPS id 66125240029
 for <58558 <at> debbugs.gnu.org>; Wed, 14 Dec 2022 12:40:45 +0100 (CET)
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=posteo.net; s=2017;
 t=1671018046; bh=P+D9nibJOH/zYUeaagF1h5KcwTpCiUer4qyip/WVA4Q=;
 h=From:To:Cc:Subject:Date:From;
 b=VCAc96TxH3umG9poNJjOprj4Jljpx8OluBRe14+VMuA9Ntt2lDzMIJfaNGqoBhWMC
 zVcezkx6Fh5umc6QDAFHBULtqyR9cO9KiNfMyyNAKtNutVRBKfF1pyglZ8LH2f3wm9
 nx3RFE22oA32yvdLD1XtovyRsPBTQ2Qz9693MCJjV3VndVM2QRH1R96QtEH54mUI7o
 Ce/mQTbUY5aZdJwed7OJJpl0TfduWjHS7+ertYlXqxjj/n8MnmnoHQSQDbTZo/0Nco
 5/jhhElaugWzKz1A2eGYYdE1oRywN7MmQwGL0RDWyz0qnm09GmgDr3wXe1nWQ4y4nt
 heKO4D4atypvw==
Received: from customer (localhost [127.0.0.1])
 by submission (posteo.de) with ESMTPSA id 4NXD2N2dg2z6tmL;
 Wed, 14 Dec 2022 12:40:44 +0100 (CET)
From: Ihor Radchenko <yantar92@HIDDEN>
To: Eli Zaretskii <eliz@HIDDEN>
Subject: Re: bug#58558: 29.0.50; re-search-forward is slow in some buffers
In-Reply-To: <83mt7rnkb7.fsf@HIDDEN>
References: <877d10r21x.fsf@localhost> <87tu44jdce.fsf@localhost>
 <87czasjd9j.fsf@HIDDEN> <87k050nio5.fsf@localhost>
 <87zgdwhw0z.fsf@HIDDEN> <83sfjo3tfw.fsf@HIDDEN>
 <jwvbkqbhnu8.fsf-monnier+emacs@HIDDEN> <878rlfjmjh.fsf@localhost>
 <87mt9tbbbp.fsf@HIDDEN> <8335bl18lo.fsf@HIDDEN>
 <87wn8x9eqb.fsf@HIDDEN> <87tu1zd2c6.fsf@localhost>
 <83h6xzphxm.fsf@HIDDEN> <87wn6vbfaa.fsf@localhost>
 <838rjbpecw.fsf@HIDDEN> <87fsdjwb4e.fsf@localhost>
 <83zgbrnv53.fsf@HIDDEN> <87bko78aif.fsf@localhost>
 <83o7s7nqch.fsf@HIDDEN> <878rjb89kq.fsf@localhost>
 <83mt7rnkb7.fsf@HIDDEN>
Date: Wed, 14 Dec 2022 11:40:37 +0000
Message-ID: <87cz8musay.fsf@localhost>
MIME-Version: 1.0
Content-Type: text/plain
X-Spam-Score: -2.3 (--)
X-Debbugs-Envelope-To: 58558
Cc: 58558 <at> debbugs.gnu.org, larsi@HIDDEN, monnier@HIDDEN
X-BeenThere: debbugs-submit <at> debbugs.gnu.org
X-Mailman-Version: 2.1.18
Precedence: list
List-Id: <debbugs-submit.debbugs.gnu.org>
List-Unsubscribe: <https://debbugs.gnu.org/cgi-bin/mailman/options/debbugs-submit>, 
 <mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=unsubscribe>
List-Archive: <https://debbugs.gnu.org/cgi-bin/mailman/private/debbugs-submit/>
List-Post: <mailto:debbugs-submit <at> debbugs.gnu.org>
List-Help: <mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=help>
List-Subscribe: <https://debbugs.gnu.org/cgi-bin/mailman/listinfo/debbugs-submit>, 
 <mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=subscribe>
Errors-To: debbugs-submit-bounces <at> debbugs.gnu.org
Sender: "Debbugs-submit" <debbugs-submit-bounces <at> debbugs.gnu.org>
X-Spam-Score: -3.3 (---)

Eli Zaretskii <eliz@HIDDEN> writes:

>> I am not sure what you mean by xbacktrace.
>
> It's a command we define in src/.gdbinit.  Try this:
>
>   (gdb) source /path/to/emacs/src/.gdbinit
>   (gdb) xbacktrace
>
> But do that after catching Fmake_marker call from Fmatch_data, like
> you did before.

Ok.

Now, I disabled my custom mode-line and tied to get the backtrace for
Fmake_marker and also build_marker (as suggested by Stefan).

Disabling custom mode-line did not cause any apparent improvement in
performance.

Result:

Breakpoint is still _not_ triggered during benchmark-run call

(benchmark-progn (goto-char (point-min)) (while (re-search-forward yant/re nil t)))

build_marker is not triggered, except during redisplay and completion.
Fmake_marker is triggered a dozen of times when preparing M-: prompt and
later a couple of hundreds of times _after_ executing the benchmark:

Called a couple of hundreds of times
Lisp Backtrace:
"match-data" (0xf0c02130)
0x59846038 PVEC_COMPILED
"auto-revert-buffers--buffer-list-filter" (0xf0c020b8)
"apply" (0xf0c020b0)
"auto-revert-buffers" (0xf0c02058)
"apply" (0xf0c02050)
"timer-event-handler" (0xffffcd48)

not related.

I will now look into counting the number of for look cycles, as Stefan
suggested.

-- 
Ihor Radchenko // yantar92,
Org mode contributor,
Learn more about Org mode at <https://orgmode.org/>.
Support Org development at <https://liberapay.com/org-mode>,
or support my work at <https://liberapay.com/yantar92>




Information forwarded to bug-gnu-emacs@HIDDEN:
bug#58558; Package emacs. Full text available.

Message received at 58558 <at> debbugs.gnu.org:


Received: (at 58558) by debbugs.gnu.org; 13 Dec 2022 20:21:26 +0000
From debbugs-submit-bounces <at> debbugs.gnu.org Tue Dec 13 15:21:26 2022
Received: from localhost ([127.0.0.1]:34430 helo=debbugs.gnu.org)
	by debbugs.gnu.org with esmtp (Exim 4.84_2)
	(envelope-from <debbugs-submit-bounces <at> debbugs.gnu.org>)
	id 1p5BmI-00072h-Dt
	for submit <at> debbugs.gnu.org; Tue, 13 Dec 2022 15:21:26 -0500
Received: from eggs.gnu.org ([209.51.188.92]:35912)
 by debbugs.gnu.org with esmtp (Exim 4.84_2)
 (envelope-from <eliz@HIDDEN>) id 1p5BmG-00072b-Ca
 for 58558 <at> debbugs.gnu.org; Tue, 13 Dec 2022 15:21:24 -0500
Received: from fencepost.gnu.org ([2001:470:142:3::e])
 by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256)
 (Exim 4.90_1) (envelope-from <eliz@HIDDEN>)
 id 1p5BmA-00030X-8I; Tue, 13 Dec 2022 15:21:18 -0500
DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; d=gnu.org;
 s=fencepost-gnu-org; h=References:Subject:In-Reply-To:To:From:Date:
 mime-version; bh=xsK7sIf98g5UCUNwa4d1efP7ef5GwO41yEDmhfRPc4E=; b=OhCn/VICi2RA
 CvVRn9M9M4RDpNo5+wlb/FUjjPTp9gjRGQdqIPCedvxFIjRr6flVbKNS/cmZ3hwSCcxNmQHZVUFjz
 Bu608nf6EuJ+GU88pSo/sdZ+tKkxiZ9Wn367mQY/vuvkUQEDALZj3UxRPuxnuOxHXx4I9+YUE0JgQ
 Wy6nzkdiNvns6RlYaD/RaikVqN3UtgqEkx6Gp5BAihNtXwcsPQ0jY7kebj3rGAlR5bqsbTAkkj9qX
 pzTjGV98ixNodPXQl5/3NpBKCetL0ljOsw6Ocv4AFVLQezyzBXb2jTWI2IjylosiWKE6p3Kqmi8WF
 ajsSd7EQ1ty4H2oAZCvWLA==;
Received: from [87.69.77.57] (helo=home-c4e4a596f7)
 by fencepost.gnu.org with esmtpsa (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256)
 (Exim 4.90_1) (envelope-from <eliz@HIDDEN>)
 id 1p5Bm9-0002z8-Nu; Tue, 13 Dec 2022 15:21:18 -0500
Date: Tue, 13 Dec 2022 22:21:22 +0200
Message-Id: <83ilifnjgd.fsf@HIDDEN>
From: Eli Zaretskii <eliz@HIDDEN>
To: Stefan Monnier <monnier@HIDDEN>
In-Reply-To: <jwvcz8n9j3i.fsf-monnier+emacs@HIDDEN> (message from Stefan
 Monnier on Tue, 13 Dec 2022 14:55:20 -0500)
Subject: Re: bug#58558: 29.0.50; re-search-forward is slow in some buffers
References: <877d10r21x.fsf@localhost> <87v8okjei9.fsf@HIDDEN>
 <87tu44jdce.fsf@localhost> <87czasjd9j.fsf@HIDDEN>
 <87k050nio5.fsf@localhost> <87zgdwhw0z.fsf@HIDDEN>
 <83sfjo3tfw.fsf@HIDDEN> <jwvbkqbhnu8.fsf-monnier+emacs@HIDDEN>
 <878rlfjmjh.fsf@localhost> <87mt9tbbbp.fsf@HIDDEN>
 <8335bl18lo.fsf@HIDDEN> <87wn8x9eqb.fsf@HIDDEN>
 <87tu1zd2c6.fsf@localhost> <83h6xzphxm.fsf@HIDDEN>
 <87wn6vbfaa.fsf@localhost> <838rjbpecw.fsf@HIDDEN>
 <87fsdjwb4e.fsf@localhost> <83zgbrnv53.fsf@HIDDEN>
 <87bko78aif.fsf@localhost> <jwvtu1z9nxc.fsf-monnier+emacs@HIDDEN>
 <875yef87vy.fsf@localhost> <jwvcz8n9j3i.fsf-monnier+emacs@HIDDEN>
X-Spam-Score: -2.3 (--)
X-Debbugs-Envelope-To: 58558
Cc: 58558 <at> debbugs.gnu.org, yantar92@HIDDEN, larsi@HIDDEN
X-BeenThere: debbugs-submit <at> debbugs.gnu.org
X-Mailman-Version: 2.1.18
Precedence: list
List-Id: <debbugs-submit.debbugs.gnu.org>
List-Unsubscribe: <https://debbugs.gnu.org/cgi-bin/mailman/options/debbugs-submit>, 
 <mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=unsubscribe>
List-Archive: <https://debbugs.gnu.org/cgi-bin/mailman/private/debbugs-submit/>
List-Post: <mailto:debbugs-submit <at> debbugs.gnu.org>
List-Help: <mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=help>
List-Subscribe: <https://debbugs.gnu.org/cgi-bin/mailman/listinfo/debbugs-submit>, 
 <mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=subscribe>
Errors-To: debbugs-submit-bounces <at> debbugs.gnu.org
Sender: "Debbugs-submit" <debbugs-submit-bounces <at> debbugs.gnu.org>
X-Spam-Score: -3.3 (---)

> From: Stefan Monnier <monnier@HIDDEN>
> Cc: Eli Zaretskii <eliz@HIDDEN>,  larsi@HIDDEN,  58558 <at> debbugs.gnu.org
> Date: Tue, 13 Dec 2022 14:55:20 -0500
> 
> I suspect these marker allocations for the mode-line are unrelated to the
> actual problem.

If this is true, then re-running the benchmarks after removing those
:eval's from the mode-line-format will still show slowdown with each
benchmark run.




Information forwarded to bug-gnu-emacs@HIDDEN:
bug#58558; Package emacs. Full text available.

Message received at 58558 <at> debbugs.gnu.org:


Received: (at 58558) by debbugs.gnu.org; 13 Dec 2022 20:02:59 +0000
From debbugs-submit-bounces <at> debbugs.gnu.org Tue Dec 13 15:02:58 2022
Received: from localhost ([127.0.0.1]:34323 helo=debbugs.gnu.org)
	by debbugs.gnu.org with esmtp (Exim 4.84_2)
	(envelope-from <debbugs-submit-bounces <at> debbugs.gnu.org>)
	id 1p5BUQ-0006rB-Jz
	for submit <at> debbugs.gnu.org; Tue, 13 Dec 2022 15:02:58 -0500
Received: from eggs.gnu.org ([209.51.188.92]:54050)
 by debbugs.gnu.org with esmtp (Exim 4.84_2)
 (envelope-from <eliz@HIDDEN>) id 1p5BUP-0006r3-0B
 for 58558 <at> debbugs.gnu.org; Tue, 13 Dec 2022 15:02:57 -0500
Received: from fencepost.gnu.org ([2001:470:142:3::e])
 by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256)
 (Exim 4.90_1) (envelope-from <eliz@HIDDEN>)
 id 1p5BUJ-0002lM-3y; Tue, 13 Dec 2022 15:02:51 -0500
DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; d=gnu.org;
 s=fencepost-gnu-org; h=References:Subject:In-Reply-To:To:From:Date:
 mime-version; bh=iGqL82lUyifD1I6CXCFY+OBw6Ompq0W8nZcA9dswwBA=; b=KREOw7d349Jo
 YNUZR7HJTX4jaZhYWyrm32e2ckPxqWLNY7HCACtFXX4MsuVno9NkJkPG7bWEaG6f+EkFPQm/kkutw
 3CfyrjHMOvNe5ig101jzOV60K1BPJU7mgzKyHqThe4LgwjH4AQXt6MnB0l98LmvP+34+ZI/BT1kH2
 aBHd7o8kaxQDGbGTh/IdVO7fjg84escjIJaJpWGw6froG6nQHy3tXS9hE8SIk314jfTJYGIzpasuc
 p22REQXdwZpi9JFukoYLwXuyhl8mdZ6jVtMPt7kfr+WKkUq6KrmlU9BTlkXJkdEhyCbdpT2cArJaL
 y/0+9NCVmugPa3VOyVwUZA==;
Received: from [87.69.77.57] (helo=home-c4e4a596f7)
 by fencepost.gnu.org with esmtpsa (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256)
 (Exim 4.90_1) (envelope-from <eliz@HIDDEN>)
 id 1p5BUF-0002Ol-VY; Tue, 13 Dec 2022 15:02:50 -0500
Date: Tue, 13 Dec 2022 22:02:52 +0200
Message-Id: <83mt7rnkb7.fsf@HIDDEN>
From: Eli Zaretskii <eliz@HIDDEN>
To: Ihor Radchenko <yantar92@HIDDEN>
In-Reply-To: <878rjb89kq.fsf@localhost> (message from Ihor Radchenko on Tue,
 13 Dec 2022 18:03:49 +0000)
Subject: Re: bug#58558: 29.0.50; re-search-forward is slow in some buffers
References: <877d10r21x.fsf@localhost> <87ilkk6ri5.fsf@localhost>
 <87v8okjei9.fsf@HIDDEN> <87tu44jdce.fsf@localhost>
 <87czasjd9j.fsf@HIDDEN> <87k050nio5.fsf@localhost>
 <87zgdwhw0z.fsf@HIDDEN> <83sfjo3tfw.fsf@HIDDEN>
 <jwvbkqbhnu8.fsf-monnier+emacs@HIDDEN> <878rlfjmjh.fsf@localhost>
 <87mt9tbbbp.fsf@HIDDEN> <8335bl18lo.fsf@HIDDEN>
 <87wn8x9eqb.fsf@HIDDEN> <87tu1zd2c6.fsf@localhost>
 <83h6xzphxm.fsf@HIDDEN> <87wn6vbfaa.fsf@localhost>
 <838rjbpecw.fsf@HIDDEN> <87fsdjwb4e.fsf@localhost>
 <83zgbrnv53.fsf@HIDDEN> <87bko78aif.fsf@localhost>
 <83o7s7nqch.fsf@HIDDEN> <878rjb89kq.fsf@localhost>
X-Spam-Score: -2.3 (--)
X-Debbugs-Envelope-To: 58558
Cc: 58558 <at> debbugs.gnu.org, larsi@HIDDEN, monnier@HIDDEN
X-BeenThere: debbugs-submit <at> debbugs.gnu.org
X-Mailman-Version: 2.1.18
Precedence: list
List-Id: <debbugs-submit.debbugs.gnu.org>
List-Unsubscribe: <https://debbugs.gnu.org/cgi-bin/mailman/options/debbugs-submit>, 
 <mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=unsubscribe>
List-Archive: <https://debbugs.gnu.org/cgi-bin/mailman/private/debbugs-submit/>
List-Post: <mailto:debbugs-submit <at> debbugs.gnu.org>
List-Help: <mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=help>
List-Subscribe: <https://debbugs.gnu.org/cgi-bin/mailman/listinfo/debbugs-submit>, 
 <mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=subscribe>
Errors-To: debbugs-submit-bounces <at> debbugs.gnu.org
Sender: "Debbugs-submit" <debbugs-submit-bounces <at> debbugs.gnu.org>
X-Spam-Score: -3.3 (---)

> From: Ihor Radchenko <yantar92@HIDDEN>
> Cc: larsi@HIDDEN, monnier@HIDDEN, 58558 <at> debbugs.gnu.org
> Date: Tue, 13 Dec 2022 18:03:49 +0000
> 
> > Calling xbacktrace will show a Lisp backtrace, which could be
> > educational here.
> 
> (gdb) xbacktrace
> Undefined command: "xbacktrace".  Try "help".
> 
> I am not sure what you mean by xbacktrace.

It's a command we define in src/.gdbinit.  Try this:

  (gdb) source /path/to/emacs/src/.gdbinit
  (gdb) xbacktrace

But do that after catching Fmake_marker call from Fmatch_data, like
you did before.




Information forwarded to bug-gnu-emacs@HIDDEN:
bug#58558; Package emacs. Full text available.

Message received at 58558 <at> debbugs.gnu.org:


Received: (at 58558) by debbugs.gnu.org; 13 Dec 2022 19:55:41 +0000
From debbugs-submit-bounces <at> debbugs.gnu.org Tue Dec 13 14:55:41 2022
Received: from localhost ([127.0.0.1]:34278 helo=debbugs.gnu.org)
	by debbugs.gnu.org with esmtp (Exim 4.84_2)
	(envelope-from <debbugs-submit-bounces <at> debbugs.gnu.org>)
	id 1p5BNM-0006lY-VZ
	for submit <at> debbugs.gnu.org; Tue, 13 Dec 2022 14:55:41 -0500
Received: from mailscanner.iro.umontreal.ca ([132.204.25.50]:59203)
 by debbugs.gnu.org with esmtp (Exim 4.84_2)
 (envelope-from <monnier@HIDDEN>) id 1p5BNK-0006lS-Li
 for 58558 <at> debbugs.gnu.org; Tue, 13 Dec 2022 14:55:39 -0500
Received: from pmg1.iro.umontreal.ca (localhost.localdomain [127.0.0.1])
 by pmg1.iro.umontreal.ca (Proxmox) with ESMTP id EFB1510011C;
 Tue, 13 Dec 2022 14:55:32 -0500 (EST)
Received: from mail01.iro.umontreal.ca (unknown [172.31.2.1])
 by pmg1.iro.umontreal.ca (Proxmox) with ESMTP id 34BC61000FB;
 Tue, 13 Dec 2022 14:55:31 -0500 (EST)
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=iro.umontreal.ca;
 s=mail; t=1670961331;
 bh=IO344PVPrLpvX/3rFHaAcEyLwfsJpntlnOSoPPUyidk=;
 h=From:To:Cc:Subject:In-Reply-To:References:Date:From;
 b=UvYxQ9eG1nZJLBcnJYltYhAVvcnoqilDwtjec01O2/TOz0WQCqZ7ebdFhCv8AOT/N
 hpVOes14ZSSssxr2Tc+uqao6Tw9LtMrc9uddP7tMON61uC2EsnheVdZQxlsttKxUzX
 ryTcrLZhEEHhmUpuCVNLmz0yh6cbBES+zqp/K1idI7oFyjQ+fjJbvI2exe9e0DK0xg
 kpFvcNGJ3hMXTCT/Fs10jZcc1IXkCLba0yfKdzXr+B57RuPXTmnWWyQqE7j+JxFVBS
 5ovqFSeuF6Bl6ZnMWVxoAXrqgiWKvP/eJvDY5vUeFLQHRDoaN7zAA8NgwUu0m7TN7W
 meVpoQm6YRXlA==
Received: from pastel (unknown [45.72.193.52])
 by mail01.iro.umontreal.ca (Postfix) with ESMTPSA id 7DF1A120409;
 Tue, 13 Dec 2022 14:55:30 -0500 (EST)
From: Stefan Monnier <monnier@HIDDEN>
To: Ihor Radchenko <yantar92@HIDDEN>
Subject: Re: bug#58558: 29.0.50; re-search-forward is slow in some buffers
In-Reply-To: <875yef87vy.fsf@localhost> (Ihor Radchenko's message of "Tue, 13
 Dec 2022 18:40:17 +0000")
Message-ID: <jwvcz8n9j3i.fsf-monnier+emacs@HIDDEN>
References: <877d10r21x.fsf@localhost> <87v8okjei9.fsf@HIDDEN>
 <87tu44jdce.fsf@localhost> <87czasjd9j.fsf@HIDDEN>
 <87k050nio5.fsf@localhost> <87zgdwhw0z.fsf@HIDDEN>
 <83sfjo3tfw.fsf@HIDDEN> <jwvbkqbhnu8.fsf-monnier+emacs@HIDDEN>
 <878rlfjmjh.fsf@localhost> <87mt9tbbbp.fsf@HIDDEN>
 <8335bl18lo.fsf@HIDDEN> <87wn8x9eqb.fsf@HIDDEN>
 <87tu1zd2c6.fsf@localhost> <83h6xzphxm.fsf@HIDDEN>
 <87wn6vbfaa.fsf@localhost> <838rjbpecw.fsf@HIDDEN>
 <87fsdjwb4e.fsf@localhost> <83zgbrnv53.fsf@HIDDEN>
 <87bko78aif.fsf@localhost> <jwvtu1z9nxc.fsf-monnier+emacs@HIDDEN>
 <875yef87vy.fsf@localhost>
User-Agent: Gnus/5.13 (Gnus v5.13)
Date: Tue, 13 Dec 2022 14:55:20 -0500
MIME-Version: 1.0
Content-Type: text/plain
X-SPAM-INFO: Spam detection results:  0
 ALL_TRUSTED                -1 Passed through trusted hosts only via SMTP
 AWL -0.409 Adjusted score from AWL reputation of From: address
 BAYES_00                 -1.9 Bayes spam probability is 0 to 1%
 DKIM_SIGNED               0.1 Message has a DKIM or DK signature,
 not necessarily valid
 DKIM_VALID -0.1 Message has at least one valid DKIM or DK signature
 DKIM_VALID_AU -0.1 Message has a valid DKIM or DK signature from author's
 domain
X-SPAM-LEVEL: 
X-Spam-Score: -2.3 (--)
X-Debbugs-Envelope-To: 58558
Cc: 58558 <at> debbugs.gnu.org, Eli Zaretskii <eliz@HIDDEN>, larsi@HIDDEN
X-BeenThere: debbugs-submit <at> debbugs.gnu.org
X-Mailman-Version: 2.1.18
Precedence: list
List-Id: <debbugs-submit.debbugs.gnu.org>
List-Unsubscribe: <https://debbugs.gnu.org/cgi-bin/mailman/options/debbugs-submit>, 
 <mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=unsubscribe>
List-Archive: <https://debbugs.gnu.org/cgi-bin/mailman/private/debbugs-submit/>
List-Post: <mailto:debbugs-submit <at> debbugs.gnu.org>
List-Help: <mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=help>
List-Subscribe: <https://debbugs.gnu.org/cgi-bin/mailman/listinfo/debbugs-submit>, 
 <mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=subscribe>
Errors-To: debbugs-submit-bounces <at> debbugs.gnu.org
Sender: "Debbugs-submit" <debbugs-submit-bounces <at> debbugs.gnu.org>
X-Spam-Score: -3.3 (---)

>> The most common calls to `match-data` are from `save-match-data`.
>> And most uses of `save-match-data` are ill-advised (as the docstring
>> explains `save-match-data' should be used to save *your* match data
>> rather than your caller's match data), so you might like to double check
>> whether that call to `match-data` can be eliminated altogether.
>
> This is coming from s.el. In any case, this implementation detail did
> not change as I switched from Emacs 28 to Emacs 29. It is Emacs doing
> something less efficiently here.
>
> What I can try to do is replacing s-* functions in my mode-line with
> built-ins. Will it help debugging this issue?

I suspect these marker allocations for the mode-line are unrelated to the
actual problem.


        Stefan





Information forwarded to bug-gnu-emacs@HIDDEN:
bug#58558; Package emacs. Full text available.

Message received at 58558 <at> debbugs.gnu.org:


Received: (at 58558) by debbugs.gnu.org; 13 Dec 2022 18:40:33 +0000
From debbugs-submit-bounces <at> debbugs.gnu.org Tue Dec 13 13:40:33 2022
Received: from localhost ([127.0.0.1]:33947 helo=debbugs.gnu.org)
	by debbugs.gnu.org with esmtp (Exim 4.84_2)
	(envelope-from <debbugs-submit-bounces <at> debbugs.gnu.org>)
	id 1p5ACe-0003jO-Qk
	for submit <at> debbugs.gnu.org; Tue, 13 Dec 2022 13:40:33 -0500
Received: from mout02.posteo.de ([185.67.36.66]:43141)
 by debbugs.gnu.org with esmtp (Exim 4.84_2)
 (envelope-from <yantar92@HIDDEN>) id 1p5ACc-0003jI-DZ
 for 58558 <at> debbugs.gnu.org; Tue, 13 Dec 2022 13:40:31 -0500
Received: from submission (posteo.de [185.67.36.169]) 
 by mout02.posteo.de (Postfix) with ESMTPS id 47810240103
 for <58558 <at> debbugs.gnu.org>; Tue, 13 Dec 2022 19:40:23 +0100 (CET)
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=posteo.net; s=2017;
 t=1670956824; bh=2XWdsOVIGMW1J+rsD+t5LEyT1DOHct44/be7ioukd9Q=;
 h=From:To:Cc:Subject:Date:From;
 b=UlNSm495CzyNlBwBZ7DswywOkCwdI5zAA5JcZbIwqSUZYnNyX2L9OA7w2eoYiBluB
 OM+i/CACjUjDAFlfWRYXWIDohsZHZjH9Xk4daj/pHtBwlT+jRpKQO/81oh0B2vWi5r
 NZLE4Zt+l/aUXxGVC5K5+DfaelwDGVesT6iv/+M/vIGb7guStH7/BPj2I1sYvgMBQo
 SIp9SeMRlt9seHlCHDED3vW0EpG6mt9xFZ4k6T48n7MjKvcK0A2HlkFUoxCn++iZsr
 ahe2fyaCH50Rd1fE0cQx369TJYSf/VdntlDtfcLl/iMnRZpbhlXQISkG4B9fYKG4vp
 74kA1lr9Ezgcg==
Received: from customer (localhost [127.0.0.1])
 by submission (posteo.de) with ESMTPSA id 4NWnP2462Jz6tqC;
 Tue, 13 Dec 2022 19:40:22 +0100 (CET)
From: Ihor Radchenko <yantar92@HIDDEN>
To: Stefan Monnier <monnier@HIDDEN>
Subject: Re: bug#58558: 29.0.50; re-search-forward is slow in some buffers
In-Reply-To: <jwvtu1z9nxc.fsf-monnier+emacs@HIDDEN>
References: <877d10r21x.fsf@localhost> <87ilkk6ri5.fsf@localhost>
 <87v8okjei9.fsf@HIDDEN> <87tu44jdce.fsf@localhost>
 <87czasjd9j.fsf@HIDDEN> <87k050nio5.fsf@localhost>
 <87zgdwhw0z.fsf@HIDDEN> <83sfjo3tfw.fsf@HIDDEN>
 <jwvbkqbhnu8.fsf-monnier+emacs@HIDDEN> <878rlfjmjh.fsf@localhost>
 <87mt9tbbbp.fsf@HIDDEN> <8335bl18lo.fsf@HIDDEN>
 <87wn8x9eqb.fsf@HIDDEN> <87tu1zd2c6.fsf@localhost>
 <83h6xzphxm.fsf@HIDDEN> <87wn6vbfaa.fsf@localhost>
 <838rjbpecw.fsf@HIDDEN> <87fsdjwb4e.fsf@localhost>
 <83zgbrnv53.fsf@HIDDEN> <87bko78aif.fsf@localhost>
 <jwvtu1z9nxc.fsf-monnier+emacs@HIDDEN>
Date: Tue, 13 Dec 2022 18:40:17 +0000
Message-ID: <875yef87vy.fsf@localhost>
MIME-Version: 1.0
Content-Type: text/plain
X-Spam-Score: -2.3 (--)
X-Debbugs-Envelope-To: 58558
Cc: 58558 <at> debbugs.gnu.org, Eli Zaretskii <eliz@HIDDEN>, larsi@HIDDEN
X-BeenThere: debbugs-submit <at> debbugs.gnu.org
X-Mailman-Version: 2.1.18
Precedence: list
List-Id: <debbugs-submit.debbugs.gnu.org>
List-Unsubscribe: <https://debbugs.gnu.org/cgi-bin/mailman/options/debbugs-submit>, 
 <mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=unsubscribe>
List-Archive: <https://debbugs.gnu.org/cgi-bin/mailman/private/debbugs-submit/>
List-Post: <mailto:debbugs-submit <at> debbugs.gnu.org>
List-Help: <mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=help>
List-Subscribe: <https://debbugs.gnu.org/cgi-bin/mailman/listinfo/debbugs-submit>, 
 <mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=subscribe>
Errors-To: debbugs-submit-bounces <at> debbugs.gnu.org
Sender: "Debbugs-submit" <debbugs-submit-bounces <at> debbugs.gnu.org>
X-Spam-Score: -3.3 (---)

Stefan Monnier <monnier@HIDDEN> writes:

>> The benchmark itself does not trigger the breakpoint.
>
> Does that mean that `Fmatch_data` is not called during a single
> `re-search-forward` (not a surprise: you'd need to put a breakpoint on
> `build_marker` to see the markers built by `buf_bytepos_to_charpos`)
> but is called between `re-search-forward`, or that it's not called at
> all during the whole benchmark where you perform several
> `re-search-forward` which grow progressively slower?

I do the benchmark via
M-:
(benchmark-progn (goto-char (point-min)) (while (re-search-forward yant/re nil t))) 
<RET>

The breakpoint triggers after the minibuffer outputs the elapsed time.
During redisplay, AFAIU.

> If it's the latter, then those calls can't explain the slowdown, right?

The slowdown manifests by increasing elapsed time upon subsequent
benchmark calls like the above. So, redisplay may or may not be a part
of it.

I tried to run 

(progn (benchmark-progn (goto-char (point-min)) (while (re-search-forward yant/re nil t))) (benchmark-progn (goto-char (point-min)) (while (re-search-forward yant/re nil t))))

4 times:

Elapsed time: 16.399824s
Elapsed time: 17.009694s
nil
Elapsed time: 18.187187s
Elapsed time: 18.597610s
nil
Elapsed time: 18.851388s
Elapsed time: 19.593968s
nil
Elapsed time: 20.194616s
Elapsed time: 20.414686s
nil

Though message may still trigger the redisplay. Not sure if this small
test really reveals anything useful.

Now, with (garbage-collect):

(progn (benchmark-progn (goto-char (point-min)) (while (re-search-forward yant/re nil t))) (garbage-collect) (benchmark-progn (goto-char (point-min)) (while (re-search-forward yant/re nil t))))

Elapsed time: 20.576637s
<GC>
Elapsed time: 15.734101s
Elapsed time: 16.101646s
<GC>
Elapsed time: 16.179796s
Elapsed time: 16.545040s
<GC>
Elapsed time: 16.365847s
Elapsed time: 16.842143s
<GC>
Elapsed time: 16.726615s

So, GC does help somewhat.

Then, if I kill and re-open the Org buffer:

Elapsed time: 72.847256s ;; <- Org just did a bunch of re-search for initial folding and setup
<GC>
Elapsed time: 4.864642s

re-open again, but GC before running the benchmark:

<GC>
Elapsed time: 4.884221s
<GC>
Elapsed time: 4.368755s

>> If I read the backtrace correctly, something in my custom mode-line is
>> triggering Fmatch_data that creates markers.
>
> The most common calls to `match-data` are from `save-match-data`.
> And most uses of `save-match-data` are ill-advised (as the docstring
> explains `save-match-data' should be used to save *your* match data
> rather than your caller's match data), so you might like to double check
> whether that call to `match-data` can be eliminated altogether.

This is coming from s.el. In any case, this implementation detail did
not change as I switched from Emacs 28 to Emacs 29. It is Emacs doing
something less efficiently here.

What I can try to do is replacing s-* functions in my mode-line with
built-ins. Will it help debugging this issue?

-- 
Ihor Radchenko // yantar92,
Org mode contributor,
Learn more about Org mode at <https://orgmode.org/>.
Support Org development at <https://liberapay.com/org-mode>,
or support my work at <https://liberapay.com/yantar92>




Information forwarded to bug-gnu-emacs@HIDDEN:
bug#58558; Package emacs. Full text available.

Message received at 58558 <at> debbugs.gnu.org:


Received: (at 58558) by debbugs.gnu.org; 13 Dec 2022 18:15:15 +0000
From debbugs-submit-bounces <at> debbugs.gnu.org Tue Dec 13 13:15:15 2022
Received: from localhost ([127.0.0.1]:33792 helo=debbugs.gnu.org)
	by debbugs.gnu.org with esmtp (Exim 4.84_2)
	(envelope-from <debbugs-submit-bounces <at> debbugs.gnu.org>)
	id 1p59oB-0003Oj-5V
	for submit <at> debbugs.gnu.org; Tue, 13 Dec 2022 13:15:15 -0500
Received: from mailscanner.iro.umontreal.ca ([132.204.25.50]:64847)
 by debbugs.gnu.org with esmtp (Exim 4.84_2)
 (envelope-from <monnier@HIDDEN>) id 1p59o9-0003OZ-Mb
 for 58558 <at> debbugs.gnu.org; Tue, 13 Dec 2022 13:15:14 -0500
Received: from pmg3.iro.umontreal.ca (localhost [127.0.0.1])
 by pmg3.iro.umontreal.ca (Proxmox) with ESMTP id 42A6744226B;
 Tue, 13 Dec 2022 13:15:08 -0500 (EST)
Received: from mail01.iro.umontreal.ca (unknown [172.31.2.1])
 by pmg3.iro.umontreal.ca (Proxmox) with ESMTP id ED813442260;
 Tue, 13 Dec 2022 13:15:06 -0500 (EST)
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=iro.umontreal.ca;
 s=mail; t=1670955307;
 bh=lB4F2stHapsDNdbRbG9AJQMdWe/GOW0VpBrSWLBVkd4=;
 h=From:To:Cc:Subject:In-Reply-To:References:Date:From;
 b=Juj//3/8VM9PWgWMR4fUVI/qr2rOgsD63Sb5gfkuS21F9CpuYC/ak7bbzFArsdWBb
 73UvLzHPOoFR1a2zkZ1LrTTCohzyku25Ye0u2WS3G9mzfriHteRgVtYg/Y0JxnkTqg
 tEfL1ZqR1vL2WltlP/+S9qJ6JnSQ1QqVo0CCyHv4UIpOKAUz/qXW4k04iR4C2ClmLl
 ZTcJ/mCCQVybh1lY8LgXM2hx4/ACZK469QDbrcfVNOpOh8AwurYot5I606RQrcrGGu
 uWr2qcLkcHxTdB8FW4E0jPocXi0Jskd8eCXFnIc0Bjsu5ohdRHSEFW7qYUTqOatdjK
 EdsiQI/V3jkAw==
Received: from pastel (unknown [45.72.193.52])
 by mail01.iro.umontreal.ca (Postfix) with ESMTPSA id B173F12022B;
 Tue, 13 Dec 2022 13:15:06 -0500 (EST)
From: Stefan Monnier <monnier@HIDDEN>
To: Ihor Radchenko <yantar92@HIDDEN>
Subject: Re: bug#58558: 29.0.50; re-search-forward is slow in some buffers
In-Reply-To: <87bko78aif.fsf@localhost> (Ihor Radchenko's message of "Tue, 13
 Dec 2022 17:43:36 +0000")
Message-ID: <jwvtu1z9nxc.fsf-monnier+emacs@HIDDEN>
References: <877d10r21x.fsf@localhost> <87zgdwyvkt.fsf@HIDDEN>
 <87ilkk6ri5.fsf@localhost> <87v8okjei9.fsf@HIDDEN>
 <87tu44jdce.fsf@localhost> <87czasjd9j.fsf@HIDDEN>
 <87k050nio5.fsf@localhost> <87zgdwhw0z.fsf@HIDDEN>
 <83sfjo3tfw.fsf@HIDDEN> <jwvbkqbhnu8.fsf-monnier+emacs@HIDDEN>
 <878rlfjmjh.fsf@localhost> <87mt9tbbbp.fsf@HIDDEN>
 <8335bl18lo.fsf@HIDDEN> <87wn8x9eqb.fsf@HIDDEN>
 <87tu1zd2c6.fsf@localhost> <83h6xzphxm.fsf@HIDDEN>
 <87wn6vbfaa.fsf@localhost> <838rjbpecw.fsf@HIDDEN>
 <87fsdjwb4e.fsf@localhost> <83zgbrnv53.fsf@HIDDEN>
 <87bko78aif.fsf@localhost>
Date: Tue, 13 Dec 2022 13:15:05 -0500
User-Agent: Gnus/5.13 (Gnus v5.13)
MIME-Version: 1.0
Content-Type: text/plain
X-SPAM-INFO: Spam detection results:  0
 ALL_TRUSTED                -1 Passed through trusted hosts only via SMTP
 AWL -0.378 Adjusted score from AWL reputation of From: address
 BAYES_00                 -1.9 Bayes spam probability is 0 to 1%
 DKIM_SIGNED               0.1 Message has a DKIM or DK signature,
 not necessarily valid
 DKIM_VALID -0.1 Message has at least one valid DKIM or DK signature
 DKIM_VALID_AU -0.1 Message has a valid DKIM or DK signature from author's
 domain
X-SPAM-LEVEL: 
X-Spam-Score: -2.3 (--)
X-Debbugs-Envelope-To: 58558
Cc: 58558 <at> debbugs.gnu.org, Eli Zaretskii <eliz@HIDDEN>, larsi@HIDDEN
X-BeenThere: debbugs-submit <at> debbugs.gnu.org
X-Mailman-Version: 2.1.18
Precedence: list
List-Id: <debbugs-submit.debbugs.gnu.org>
List-Unsubscribe: <https://debbugs.gnu.org/cgi-bin/mailman/options/debbugs-submit>, 
 <mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=unsubscribe>
List-Archive: <https://debbugs.gnu.org/cgi-bin/mailman/private/debbugs-submit/>
List-Post: <mailto:debbugs-submit <at> debbugs.gnu.org>
List-Help: <mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=help>
List-Subscribe: <https://debbugs.gnu.org/cgi-bin/mailman/listinfo/debbugs-submit>, 
 <mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=subscribe>
Errors-To: debbugs-submit-bounces <at> debbugs.gnu.org
Sender: "Debbugs-submit" <debbugs-submit-bounces <at> debbugs.gnu.org>
X-Spam-Score: -3.3 (---)

> The benchmark itself does not trigger the breakpoint.

Does that mean that `Fmatch_data` is not called during a single
`re-search-forward` (not a surprise: you'd need to put a breakpoint on
`build_marker` to see the markers built by `buf_bytepos_to_charpos`)
but is called between `re-search-forward`, or that it's not called at
all during the whole benchmark where you perform several
`re-search-forward` which grow progressively slower?

If it's the latter, then those calls can't explain the slowdown, right?

> If I read the backtrace correctly, something in my custom mode-line is
> triggering Fmatch_data that creates markers.

The most common calls to `match-data` are from `save-match-data`.
And most uses of `save-match-data` are ill-advised (as the docstring
explains `save-match-data' should be used to save *your* match data
rather than your caller's match data), so you might like to double check
whether that call to `match-data` can be eliminated altogether.


        Stefan





Information forwarded to bug-gnu-emacs@HIDDEN:
bug#58558; Package emacs. Full text available.

Message received at 58558 <at> debbugs.gnu.org:


Received: (at 58558) by debbugs.gnu.org; 13 Dec 2022 18:04:16 +0000
From debbugs-submit-bounces <at> debbugs.gnu.org Tue Dec 13 13:04:16 2022
Received: from localhost ([127.0.0.1]:33725 helo=debbugs.gnu.org)
	by debbugs.gnu.org with esmtp (Exim 4.84_2)
	(envelope-from <debbugs-submit-bounces <at> debbugs.gnu.org>)
	id 1p59dX-0003Hz-S4
	for submit <at> debbugs.gnu.org; Tue, 13 Dec 2022 13:04:16 -0500
Received: from mout01.posteo.de ([185.67.36.65]:33697)
 by debbugs.gnu.org with esmtp (Exim 4.84_2)
 (envelope-from <yantar92@HIDDEN>) id 1p59dV-0003Ht-Cz
 for 58558 <at> debbugs.gnu.org; Tue, 13 Dec 2022 13:04:13 -0500
Received: from submission (posteo.de [185.67.36.169]) 
 by mout01.posteo.de (Postfix) with ESMTPS id D4ED424002A
 for <58558 <at> debbugs.gnu.org>; Tue, 13 Dec 2022 19:04:04 +0100 (CET)
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=posteo.net; s=2017;
 t=1670954646; bh=KNOLZB7jG5BVftkclFoHraBP+Gy9bYwqFrfxPXr4x/M=;
 h=From:To:Cc:Subject:Date:From;
 b=P17rh/trmMFIDIYmzk8hCu7V0PPulbh23ayFz0CzvRSGQA22m0d0n4Q0+to0EvR5W
 L4Our/mQwPBZNXtfGlzBTinBCya14JDn5rRxXx/fU267AIuj83ixXQ0PX+1XDKjgiu
 q9O612vAGLwXCT+zYQj4KUkXrNp98Nvs+DO7zqLQo5sXNL1PepC6HhFfJ1DgPuSmtR
 Lctdo8SBauMxu086/0IE91Dcv2l3wporcsy02emNkFx95J/0e0dNnEKVhb1aTmtVor
 0T8fRbCL3a6RcNubSrGcfRTTMalDTnDKmTPhn8TKMR0eig4wCJXw15IlM1BG6RXEZe
 Ip+NIgdn6EdzA==
Received: from customer (localhost [127.0.0.1])
 by submission (posteo.de) with ESMTPSA id 4NWmb71w9sz6tm6;
 Tue, 13 Dec 2022 19:04:00 +0100 (CET)
From: Ihor Radchenko <yantar92@HIDDEN>
To: Eli Zaretskii <eliz@HIDDEN>
Subject: Re: bug#58558: 29.0.50; re-search-forward is slow in some buffers
In-Reply-To: <83o7s7nqch.fsf@HIDDEN>
References: <877d10r21x.fsf@localhost> <87ilkk6ri5.fsf@localhost>
 <87v8okjei9.fsf@HIDDEN> <87tu44jdce.fsf@localhost>
 <87czasjd9j.fsf@HIDDEN> <87k050nio5.fsf@localhost>
 <87zgdwhw0z.fsf@HIDDEN> <83sfjo3tfw.fsf@HIDDEN>
 <jwvbkqbhnu8.fsf-monnier+emacs@HIDDEN> <878rlfjmjh.fsf@localhost>
 <87mt9tbbbp.fsf@HIDDEN> <8335bl18lo.fsf@HIDDEN>
 <87wn8x9eqb.fsf@HIDDEN> <87tu1zd2c6.fsf@localhost>
 <83h6xzphxm.fsf@HIDDEN> <87wn6vbfaa.fsf@localhost>
 <838rjbpecw.fsf@HIDDEN> <87fsdjwb4e.fsf@localhost>
 <83zgbrnv53.fsf@HIDDEN> <87bko78aif.fsf@localhost>
 <83o7s7nqch.fsf@HIDDEN>
Date: Tue, 13 Dec 2022 18:03:49 +0000
Message-ID: <878rjb89kq.fsf@localhost>
MIME-Version: 1.0
Content-Type: text/plain
X-Spam-Score: -2.3 (--)
X-Debbugs-Envelope-To: 58558
Cc: 58558 <at> debbugs.gnu.org, larsi@HIDDEN, monnier@HIDDEN
X-BeenThere: debbugs-submit <at> debbugs.gnu.org
X-Mailman-Version: 2.1.18
Precedence: list
List-Id: <debbugs-submit.debbugs.gnu.org>
List-Unsubscribe: <https://debbugs.gnu.org/cgi-bin/mailman/options/debbugs-submit>, 
 <mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=unsubscribe>
List-Archive: <https://debbugs.gnu.org/cgi-bin/mailman/private/debbugs-submit/>
List-Post: <mailto:debbugs-submit <at> debbugs.gnu.org>
List-Help: <mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=help>
List-Subscribe: <https://debbugs.gnu.org/cgi-bin/mailman/listinfo/debbugs-submit>, 
 <mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=subscribe>
Errors-To: debbugs-submit-bounces <at> debbugs.gnu.org
Sender: "Debbugs-submit" <debbugs-submit-bounces <at> debbugs.gnu.org>
X-Spam-Score: -3.3 (---)

Eli Zaretskii <eliz@HIDDEN> writes:

>> If I read the backtrace correctly, something in my custom mode-line is
>> triggering Fmatch_data that creates markers.
>
> Yes, you have sone :eval form in the mode line, it seems?

Yes. For example, I call

(defun yant/vc-git-current-branch ()
    "Get current GIT branch."
    (and vc-mode
	 (cadr (s-match "Git.\\([^ ]+\\)" vc-mode))))

with s-match wrapping its code into save-match-data.         

> Calling xbacktrace will show a Lisp backtrace, which could be
> educational here.

(gdb) xbacktrace
Undefined command: "xbacktrace".  Try "help".

I am not sure what you mean by xbacktrace.

Also, as Stefan pointed, number of markers may or may not be a problem
here. However, I had a similar issue even with Emacs 28 when we tested
creating a huge number of markers in buffer + re-search-forward. I ended
up seeing similar perf logs that time.

-- 
Ihor Radchenko // yantar92,
Org mode contributor,
Learn more about Org mode at <https://orgmode.org/>.
Support Org development at <https://liberapay.com/org-mode>,
or support my work at <https://liberapay.com/yantar92>




Information forwarded to bug-gnu-emacs@HIDDEN:
bug#58558; Package emacs. Full text available.

Message received at 58558 <at> debbugs.gnu.org:


Received: (at 58558) by debbugs.gnu.org; 13 Dec 2022 17:52:34 +0000
From debbugs-submit-bounces <at> debbugs.gnu.org Tue Dec 13 12:52:34 2022
Received: from localhost ([127.0.0.1]:33654 helo=debbugs.gnu.org)
	by debbugs.gnu.org with esmtp (Exim 4.84_2)
	(envelope-from <debbugs-submit-bounces <at> debbugs.gnu.org>)
	id 1p59SE-0000rB-3v
	for submit <at> debbugs.gnu.org; Tue, 13 Dec 2022 12:52:34 -0500
Received: from eggs.gnu.org ([209.51.188.92]:50008)
 by debbugs.gnu.org with esmtp (Exim 4.84_2)
 (envelope-from <eliz@HIDDEN>) id 1p59SC-0000r2-1R
 for 58558 <at> debbugs.gnu.org; Tue, 13 Dec 2022 12:52:32 -0500
Received: from fencepost.gnu.org ([2001:470:142:3::e])
 by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256)
 (Exim 4.90_1) (envelope-from <eliz@HIDDEN>)
 id 1p59S6-0006Nw-Fk; Tue, 13 Dec 2022 12:52:26 -0500
DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; d=gnu.org;
 s=fencepost-gnu-org; h=References:Subject:In-Reply-To:To:From:Date:
 mime-version; bh=2DD9IS3LoWilYI3G5V4hpWKuRYYuWvIAg2wPB9J5Pu4=; b=jq02M56K/g35
 TJuKosyYOnlbo8K0ot1/dOsla9x4cLzkdDTVml/ufug9dDLgwT/llsvFenFEsM3UtoqV8WYKvc3rz
 /BRtS1NmHedguAJK5FLs6Md+EwUdCB3dh9bmb2OBF+GOSAiq5hVnWe4PaXVCU1z0QXkCFQ7ewATNs
 tAHHgL3wqZOmNMufbKVKuCHtYuFI5hch6JMNHvu0JFGOU+W6BPVdVs5hx0/pcfZGVHfmrmT/o12I9
 zeuGZuuZ2JnIqg6VuIpGhrW48pX6CNIZc5Gv1UDw5RE++7q/cu87bAemXZjRoXSvkNUdLjMuLjtuw
 45rlb9QXaxw3GFfEccHmnQ==;
Received: from [87.69.77.57] (helo=home-c4e4a596f7)
 by fencepost.gnu.org with esmtpsa (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256)
 (Exim 4.90_1) (envelope-from <eliz@HIDDEN>)
 id 1p59S5-0003LX-W5; Tue, 13 Dec 2022 12:52:26 -0500
Date: Tue, 13 Dec 2022 19:52:30 +0200
Message-Id: <83o7s7nqch.fsf@HIDDEN>
From: Eli Zaretskii <eliz@HIDDEN>
To: Ihor Radchenko <yantar92@HIDDEN>
In-Reply-To: <87bko78aif.fsf@localhost> (message from Ihor Radchenko on Tue,
 13 Dec 2022 17:43:36 +0000)
Subject: Re: bug#58558: 29.0.50; re-search-forward is slow in some buffers
References: <877d10r21x.fsf@localhost> <87zgdwyvkt.fsf@HIDDEN>
 <87ilkk6ri5.fsf@localhost> <87v8okjei9.fsf@HIDDEN>
 <87tu44jdce.fsf@localhost> <87czasjd9j.fsf@HIDDEN>
 <87k050nio5.fsf@localhost> <87zgdwhw0z.fsf@HIDDEN>
 <83sfjo3tfw.fsf@HIDDEN> <jwvbkqbhnu8.fsf-monnier+emacs@HIDDEN>
 <878rlfjmjh.fsf@localhost> <87mt9tbbbp.fsf@HIDDEN>
 <8335bl18lo.fsf@HIDDEN> <87wn8x9eqb.fsf@HIDDEN>
 <87tu1zd2c6.fsf@localhost> <83h6xzphxm.fsf@HIDDEN>
 <87wn6vbfaa.fsf@localhost> <838rjbpecw.fsf@HIDDEN>
 <87fsdjwb4e.fsf@localhost> <83zgbrnv53.fsf@HIDDEN> <87bko78aif.fsf@localhost>
X-Spam-Score: -2.3 (--)
X-Debbugs-Envelope-To: 58558
Cc: 58558 <at> debbugs.gnu.org, larsi@HIDDEN, monnier@HIDDEN
X-BeenThere: debbugs-submit <at> debbugs.gnu.org
X-Mailman-Version: 2.1.18
Precedence: list
List-Id: <debbugs-submit.debbugs.gnu.org>
List-Unsubscribe: <https://debbugs.gnu.org/cgi-bin/mailman/options/debbugs-submit>, 
 <mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=unsubscribe>
List-Archive: <https://debbugs.gnu.org/cgi-bin/mailman/private/debbugs-submit/>
List-Post: <mailto:debbugs-submit <at> debbugs.gnu.org>
List-Help: <mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=help>
List-Subscribe: <https://debbugs.gnu.org/cgi-bin/mailman/listinfo/debbugs-submit>, 
 <mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=subscribe>
Errors-To: debbugs-submit-bounces <at> debbugs.gnu.org
Sender: "Debbugs-submit" <debbugs-submit-bounces <at> debbugs.gnu.org>
X-Spam-Score: -3.3 (---)

> From: Ihor Radchenko <yantar92@HIDDEN>
> Cc: larsi@HIDDEN, monnier@HIDDEN, 58558 <at> debbugs.gnu.org
> Date: Tue, 13 Dec 2022 17:43:36 +0000
> 
> > If no other idea to find this out comes up, maybe run this with a
> > breakpoint in make-marker, look at the backtrace to see the callers.
> 
> I tried gdb now with break Fmake_marker.
> 
> The benchmark itself does not trigger the breakpoint.
> However, a huge number (hundreds) of breakpoint hits is generated upon
> finishing the benchmark execution.
> 
> bt:
> 
> #0  Fmake_marker () at alloc.c:3736
> #1  0x00005555557bb750 in Fmatch_data (integers=0x0, reuse=0x0, reseat=0x0) at search.c:2903

Ha-ha, shooting ourselves in the foot!

Great sleuthing job.  Now we need to think what to do with this.
Hmm...

> If I read the backtrace correctly, something in my custom mode-line is
> triggering Fmatch_data that creates markers.

Yes, you have sone :eval form in the mode line, it seems?

Calling xbacktrace will show a Lisp backtrace, which could be
educational here.

> But that code has not changes for years from git log.
> 
> One suspicious thing is that my code gets called that much frequently
> (100s of times) by redisplay. Not sure if it is normal.

You cannot predict when redisplay decides to redraw the mode line.




Information forwarded to bug-gnu-emacs@HIDDEN:
bug#58558; Package emacs. Full text available.

Message received at 58558 <at> debbugs.gnu.org:


Received: (at 58558) by debbugs.gnu.org; 13 Dec 2022 17:43:51 +0000
From debbugs-submit-bounces <at> debbugs.gnu.org Tue Dec 13 12:43:51 2022
Received: from localhost ([127.0.0.1]:33589 helo=debbugs.gnu.org)
	by debbugs.gnu.org with esmtp (Exim 4.84_2)
	(envelope-from <debbugs-submit-bounces <at> debbugs.gnu.org>)
	id 1p59Jm-0006qr-QB
	for submit <at> debbugs.gnu.org; Tue, 13 Dec 2022 12:43:51 -0500
Received: from mout01.posteo.de ([185.67.36.65]:50049)
 by debbugs.gnu.org with esmtp (Exim 4.84_2)
 (envelope-from <yantar92@HIDDEN>) id 1p59Jk-0006ql-Op
 for 58558 <at> debbugs.gnu.org; Tue, 13 Dec 2022 12:43:49 -0500
Received: from submission (posteo.de [185.67.36.169]) 
 by mout01.posteo.de (Postfix) with ESMTPS id 409C724002A
 for <58558 <at> debbugs.gnu.org>; Tue, 13 Dec 2022 18:43:43 +0100 (CET)
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=posteo.net; s=2017;
 t=1670953423; bh=JN4FACcjNLquCT1Ou+uKnj69OgFB2sUXuWaQYMzaJEo=;
 h=From:To:Cc:Subject:Date:From;
 b=QtMpGfymR3Wu8JHxA0fIfr5f9RpiRssNatXaxqCCbr3p8bFCDtGCDXi3M+Q+Gwv/w
 qb+IOBGC4/pesixjLnHPBbktTWiv8OAktHiVWanXj+gznu8ObcvsAyZHcOvMgrk4Cs
 QaVqHNuAJUZtCfJcm3eKTMyX8ydByszZNqZB1D6pENZ1JNQx7ZEZZlem/U3TLO/BRn
 0VWYZLz88oVk+mjDR4XCMw4B9HWW7XbhdAI7/1NMiks+E4m78dHyhsC3J02kYI3+ax
 LESuqQAqSSfP6B7+SQhw6fGN2/REHEEmoCPr02+9TnkS3hPzfwngjyojPUCz38J0iu
 fSSi9zUMC6+7g==
Received: from customer (localhost [127.0.0.1])
 by submission (posteo.de) with ESMTPSA id 4NWm7f0kySz9rxY;
 Tue, 13 Dec 2022 18:43:41 +0100 (CET)
From: Ihor Radchenko <yantar92@HIDDEN>
To: Eli Zaretskii <eliz@HIDDEN>
Subject: Re: bug#58558: 29.0.50; re-search-forward is slow in some buffers
In-Reply-To: <83zgbrnv53.fsf@HIDDEN>
References: <877d10r21x.fsf@localhost> <87zgdwyvkt.fsf@HIDDEN>
 <87ilkk6ri5.fsf@localhost> <87v8okjei9.fsf@HIDDEN>
 <87tu44jdce.fsf@localhost> <87czasjd9j.fsf@HIDDEN>
 <87k050nio5.fsf@localhost> <87zgdwhw0z.fsf@HIDDEN>
 <83sfjo3tfw.fsf@HIDDEN> <jwvbkqbhnu8.fsf-monnier+emacs@HIDDEN>
 <878rlfjmjh.fsf@localhost> <87mt9tbbbp.fsf@HIDDEN>
 <8335bl18lo.fsf@HIDDEN> <87wn8x9eqb.fsf@HIDDEN>
 <87tu1zd2c6.fsf@localhost> <83h6xzphxm.fsf@HIDDEN>
 <87wn6vbfaa.fsf@localhost> <838rjbpecw.fsf@HIDDEN>
 <87fsdjwb4e.fsf@localhost> <83zgbrnv53.fsf@HIDDEN>
Date: Tue, 13 Dec 2022 17:43:36 +0000
Message-ID: <87bko78aif.fsf@localhost>
MIME-Version: 1.0
Content-Type: text/plain
X-Spam-Score: -2.3 (--)
X-Debbugs-Envelope-To: 58558
Cc: 58558 <at> debbugs.gnu.org, larsi@HIDDEN, monnier@HIDDEN
X-BeenThere: debbugs-submit <at> debbugs.gnu.org
X-Mailman-Version: 2.1.18
Precedence: list
List-Id: <debbugs-submit.debbugs.gnu.org>
List-Unsubscribe: <https://debbugs.gnu.org/cgi-bin/mailman/options/debbugs-submit>, 
 <mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=unsubscribe>
List-Archive: <https://debbugs.gnu.org/cgi-bin/mailman/private/debbugs-submit/>
List-Post: <mailto:debbugs-submit <at> debbugs.gnu.org>
List-Help: <mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=help>
List-Subscribe: <https://debbugs.gnu.org/cgi-bin/mailman/listinfo/debbugs-submit>, 
 <mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=subscribe>
Errors-To: debbugs-submit-bounces <at> debbugs.gnu.org
Sender: "Debbugs-submit" <debbugs-submit-bounces <at> debbugs.gnu.org>
X-Spam-Score: -3.3 (---)

Eli Zaretskii <eliz@HIDDEN> writes:

>> My guess: number of markers is growing somehow?
>
> That was my guess, yeah.
>
> So now the question becomes: who creates all those additional markers
> if all you do is run the benchmark?
>
> If no other idea to find this out comes up, maybe run this with a
> breakpoint in make-marker, look at the backtrace to see the callers.

I tried gdb now with break Fmake_marker.

The benchmark itself does not trigger the breakpoint.
However, a huge number (hundreds) of breakpoint hits is generated upon
finishing the benchmark execution.

bt:

#0  Fmake_marker () at alloc.c:3736
#1  0x00005555557bb750 in Fmatch_data (integers=0x0, reuse=0x0, reseat=0x0) at search.c:2903
#2  0x000055555580eb6d in funcall_subr (subr=0x555555e0dc20 <Smatch_data>, numargs=0, args=0x7ffff0c02070) at eval.c:3038
#3  0x00005555558634c1 in exec_byte_code (fun=0x555557370195, args_template=0, nargs=0, args=0x0) at bytecode.c:809
#4  0x000055555580ee6b in fetch_and_exec_byte_code (fun=0x555557370195, args_template=0, nargs=0, args=0x0) at eval.c:3081
#5  0x000055555580f5a8 in funcall_lambda (fun=0x555557370195, nargs=1, arg_vector=0x7ffff0c02038) at eval.c:3242
#6  0x000055555580e688 in funcall_general (fun=0x555557370195, numargs=1, args=0x7ffff0c02038) at eval.c:2945
#7  0x00005555558634e1 in exec_byte_code (fun=0x55555734c7cd, args_template=0, nargs=0, args=0x0) at bytecode.c:811
#8  0x000055555580ee6b in fetch_and_exec_byte_code (fun=0x55555734c7cd, args_template=0, nargs=0, args=0x0) at eval.c:3081
#9  0x000055555580f5a8 in funcall_lambda (fun=0x55555734c7cd, nargs=1, arg_vector=0x7fffffff6ce0) at eval.c:3242
#10 0x000055555580f00c in apply_lambda (fun=0x55555734c7cd, args=0x555557f7a2c3, count=...) at eval.c:3103
#11 0x000055555580d591 in eval_sub (form=0x555557f7a2b3) at eval.c:2545
#12 0x00005555558084f0 in Fsetq (args=0x555557f7a2a3) at eval.c:483
#13 0x000055555580cfa8 in eval_sub (form=0x555557f7a293) at eval.c:2449
#14 0x00005555558083bc in Fprogn (body=0x555557f7a363) at eval.c:436
#15 0x0000555555809b4e in Flet (args=0x555557f7a283) at eval.c:1026
#16 0x000055555580cfa8 in eval_sub (form=0x555557f7a223) at eval.c:2449
#17 0x000055555580d151 in eval_sub (form=0x555557f712b3) at eval.c:2465
#18 0x000055555580efa6 in apply_lambda (fun=0x555557f8049d, args=0x555557f712a3, count=...) at eval.c:3098
#19 0x000055555580d591 in eval_sub (form=0x555557f71883) at eval.c:2545
#20 0x000055555580cac8 in Feval (form=0x555557f71883, lexical=0x0) at eval.c:2361
#21 0x000055555580eb37 in funcall_subr (subr=0x555555e11ea0 <Seval>, numargs=1, args=0x7fffffff7788) at eval.c:3036
#22 0x000055555580e63c in funcall_general (fun=0x555555e11ea5 <Seval+5>, numargs=1, args=0x7fffffff7788) at eval.c:2941
#23 0x000055555580e909 in Ffuncall (nargs=2, args=0x7fffffff7780) at eval.c:2995
#24 0x000055555580ab30 in internal_condition_case_n
     (bfun=0x55555580e7eb <Ffuncall>, nargs=2, args=0x7fffffff7780, handlers=0x30, hfun=0x5555555ccfe7 <safe_eval_handler>) at eval.c:1558
#25 0x00005555555cd24c in safe__call (inhibit_quit=true, nargs=2, func=0x6900, ap=0x7fffffff7840) at xdisp.c:3024
#26 0x00005555555cd450 in safe__call1 (inhibit_quit=true, fn=0x6900) at xdisp.c:3060
#27 0x00005555555cd4e0 in safe__eval (inhibit_quit=true, sexpr=0x555557f71883) at xdisp.c:3074
#28 0x000055555561367e in display_mode_element (it=0x7fffffff7d10, depth=2, field_width=0, precision=0, elt=0x555557f71873, props=0x0, risky=false)
    at xdisp.c:27228
#29 0x0000555555613a28 in display_mode_element (it=0x7fffffff7d10, depth=1, field_width=0, precision=0, elt=0x555557f79cd3, props=0x0, risky=false)
    at xdisp.c:27314
#30 0x0000555555612210 in display_mode_line (w=0x55555628c8c0, face_id=MODE_LINE_INACTIVE_FACE_ID, format=0x555557f79cd3) at xdisp.c:26740
#31 0x0000555555611efe in display_mode_lines (w=0x55555628c8c0) at xdisp.c:26653
#32 0x00005555555fcf67 in redisplay_window (window=0x55555628c8c5, just_this_one_p=false) at xdisp.c:20345
#33 0x00005555555f2e3f in redisplay_window_0 (window=0x55555628c8c5) at xdisp.c:17434
#34 0x000055555580a994 in internal_condition_case_1
    (bfun=0x5555555f2dfd <redisplay_window_0>, arg=0x55555628c8c5, handlers=0x7ffff1adb5a3, hfun=0x5555555f2d16 <redisplay_window_error>) at eval.c:1498
#35 0x00005555555f2cec in redisplay_windows (window=0x55555628c8c5) at xdisp.c:17404
#36 0x00005555555f1a9f in redisplay_internal () at xdisp.c:16854
--Type <RET> for more, q to quit, c to continue without paging--
#37 0x00005555555efb5e in redisplay () at xdisp.c:16043
#38 0x000055555574711a in read_char (commandflag=1, map=0x55556333fb33, prev_event=0x0, used_mouse_menu=0x7fffffffd2a9, end_time=0x0) at keyboard.c:2627
#39 0x0000555555758856 in read_key_sequence
    (keybuf=0x7fffffffd4e0, prompt=0x0, dont_downcase_last=false, can_return_switch_frame=true, fix_current_buffer=true, prevent_redisplay=false)
    at keyboard.c:10074
#40 0x00005555557438b0 in command_loop_1 () at keyboard.c:1376
#41 0x000055555580a8ed in internal_condition_case (bfun=0x5555557434a1 <command_loop_1>, handlers=0x90, hfun=0x555555742a7a <cmd_error>) at eval.c:1474
#42 0x0000555555743151 in command_loop_2 (handlers=0x90) at keyboard.c:1125
#43 0x0000555555809f61 in internal_catch (tag=0xff90, func=0x555555743127 <command_loop_2>, arg=0x90) at eval.c:1197
#44 0x00005555557430e3 in command_loop () at keyboard.c:1103
#45 0x000055555574261c in recursive_edit_1 () at keyboard.c:712
#46 0x00005555557427c8 in Frecursive_edit () at keyboard.c:795
#47 0x000055555573e88a in main (argc=1, argv=0x7fffffffd9a8) at emacs.c:2529

If I read the backtrace correctly, something in my custom mode-line is
triggering Fmatch_data that creates markers.

But that code has not changes for years from git log.

One suspicious thing is that my code gets called that much frequently
(100s of times) by redisplay. Not sure if it is normal.

-- 
Ihor Radchenko // yantar92,
Org mode contributor,
Learn more about Org mode at <https://orgmode.org/>.
Support Org development at <https://liberapay.com/org-mode>,
or support my work at <https://liberapay.com/yantar92>




Information forwarded to bug-gnu-emacs@HIDDEN:
bug#58558; Package emacs. Full text available.

Message received at 58558 <at> debbugs.gnu.org:


Received: (at 58558) by debbugs.gnu.org; 13 Dec 2022 17:38:25 +0000
From debbugs-submit-bounces <at> debbugs.gnu.org Tue Dec 13 12:38:25 2022
Received: from localhost ([127.0.0.1]:33555 helo=debbugs.gnu.org)
	by debbugs.gnu.org with esmtp (Exim 4.84_2)
	(envelope-from <debbugs-submit-bounces <at> debbugs.gnu.org>)
	id 1p59EX-0006nG-AX
	for submit <at> debbugs.gnu.org; Tue, 13 Dec 2022 12:38:25 -0500
Received: from mailscanner.iro.umontreal.ca ([132.204.25.50]:36670)
 by debbugs.gnu.org with esmtp (Exim 4.84_2)
 (envelope-from <monnier@HIDDEN>) id 1p59EU-0006nA-RX
 for 58558 <at> debbugs.gnu.org; Tue, 13 Dec 2022 12:38:23 -0500
Received: from pmg2.iro.umontreal.ca (localhost.localdomain [127.0.0.1])
 by pmg2.iro.umontreal.ca (Proxmox) with ESMTP id 7376280853;
 Tue, 13 Dec 2022 12:38:17 -0500 (EST)
Received: from mail01.iro.umontreal.ca (unknown [172.31.2.1])
 by pmg2.iro.umontreal.ca (Proxmox) with ESMTP id B28C880323;
 Tue, 13 Dec 2022 12:38:15 -0500 (EST)
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=iro.umontreal.ca;
 s=mail; t=1670953095;
 bh=LuSLwFWlH4cw8QxkNfWqybRWu39xFWELx8oMzqaOawg=;
 h=From:To:Cc:Subject:In-Reply-To:References:Date:From;
 b=lK1gNCB5/Uv+oknPhQ3AKbyVW7p1hUQoAu4qOLdWE+RFjwbU20RcnB7TQ2F8Ir98W
 91Qs9O+VZ1IR2oA2QZa+urWda2jVRgYiKR9po2uuG6PqcF3Rk6jRWmiLJnQQ3frOm9
 iPZwghq/za+BKSqBjup5F0KSVP8zTjMhDBDOXGnuNkrh+0aEuzD/ioZLhLECL9LWJP
 ATbc1eXNBv0yciiPE9qzlJ4zpHcuDFkXQW3GP+3lWPxzUfuuWxfYi3897LHf3yyZnH
 NLTOg03Jdgda/xwYqJfjEAXCi4vr38lgnKGqVOxrkLroABAEobFZSUMun7A0vCJF/L
 OpPebpzW62ekA==
Received: from pastel (unknown [45.72.193.52])
 by mail01.iro.umontreal.ca (Postfix) with ESMTPSA id 71B641201E4;
 Tue, 13 Dec 2022 12:38:15 -0500 (EST)
From: Stefan Monnier <monnier@HIDDEN>
To: Ihor Radchenko <yantar92@HIDDEN>
Subject: Re: bug#58558: 29.0.50; re-search-forward is slow in some buffers
In-Reply-To: <87fsdjwb4e.fsf@localhost> (Ihor Radchenko's message of "Tue, 13
 Dec 2022 15:56:33 +0000")
Message-ID: <jwv5yefb556.fsf-monnier+emacs@HIDDEN>
References: <877d10r21x.fsf@localhost> <87zgdwyvkt.fsf@HIDDEN>
 <87ilkk6ri5.fsf@localhost> <87v8okjei9.fsf@HIDDEN>
 <87tu44jdce.fsf@localhost> <87czasjd9j.fsf@HIDDEN>
 <87k050nio5.fsf@localhost> <87zgdwhw0z.fsf@HIDDEN>
 <83sfjo3tfw.fsf@HIDDEN> <jwvbkqbhnu8.fsf-monnier+emacs@HIDDEN>
 <878rlfjmjh.fsf@localhost> <87mt9tbbbp.fsf@HIDDEN>
 <8335bl18lo.fsf@HIDDEN> <87wn8x9eqb.fsf@HIDDEN>
 <87tu1zd2c6.fsf@localhost> <83h6xzphxm.fsf@HIDDEN>
 <87wn6vbfaa.fsf@localhost> <838rjbpecw.fsf@HIDDEN>
 <87fsdjwb4e.fsf@localhost>
Date: Tue, 13 Dec 2022 12:38:13 -0500
User-Agent: Gnus/5.13 (Gnus v5.13)
MIME-Version: 1.0
Content-Type: text/plain
X-SPAM-INFO: Spam detection results:  0
 ALL_TRUSTED                -1 Passed through trusted hosts only via SMTP
 AWL -0.307 Adjusted score from AWL reputation of From: address
 BAYES_00                 -1.9 Bayes spam probability is 0 to 1%
 DKIM_SIGNED               0.1 Message has a DKIM or DK signature,
 not necessarily valid
 DKIM_VALID -0.1 Message has at least one valid DKIM or DK signature
 DKIM_VALID_AU -0.1 Message has a valid DKIM or DK signature from author's
 domain
X-SPAM-LEVEL: 
X-Spam-Score: -2.3 (--)
X-Debbugs-Envelope-To: 58558
Cc: 58558 <at> debbugs.gnu.org, Eli Zaretskii <eliz@HIDDEN>, larsi@HIDDEN
X-BeenThere: debbugs-submit <at> debbugs.gnu.org
X-Mailman-Version: 2.1.18
Precedence: list
List-Id: <debbugs-submit.debbugs.gnu.org>
List-Unsubscribe: <https://debbugs.gnu.org/cgi-bin/mailman/options/debbugs-submit>, 
 <mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=unsubscribe>
List-Archive: <https://debbugs.gnu.org/cgi-bin/mailman/private/debbugs-submit/>
List-Post: <mailto:debbugs-submit <at> debbugs.gnu.org>
List-Help: <mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=help>
List-Subscribe: <https://debbugs.gnu.org/cgi-bin/mailman/listinfo/debbugs-submit>, 
 <mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=subscribe>
Errors-To: debbugs-submit-bounces <at> debbugs.gnu.org
Sender: "Debbugs-submit" <debbugs-submit-bounces <at> debbugs.gnu.org>
X-Spam-Score: -3.3 (---)

>>> I will look how to do it. Maybe perf probe.
>>> I guess, it will be useful to compile Emacs with debug symbols at this
>>> point.
>>
>> AFAIR, you can ask perf to profile a single function, and you can ask
>> it to annotate the profile with the source code.
>
> I now compiled Emacs with debug symbols, waited enough to see observable
> increase in the benchmark-run timing, and recorded the perf data.
>
> buf_bytepos_to_charpos is still on the top
>
>     78.06%  emacs         emacs                       [.] buf_bytepos_to_charpos
>      3.00%  emacs         emacs                       [.] re_match_2_internal
>      1.05%  emacs         emacs                       [.] find_interval
>      1.04%  emacs         emacs                       [.] CHAR_TABLE_REF_ASCII
>      0.85%  emacs         emacs                       [.] make_lisp_symbol
>      0.80%  emacs         emacs                       [.] re_search_2
>      0.76%  emacs         emacs                       [.] builtin_lisp_symbol
>      0.62%  emacs         emacs                       [.] PSEUDOVECTORP

AFAIK the main places where we call `buf_bytepos_to_charpos` from
`re_match_2_internal` is via the `SYNTAX_TABLE_BYTE_TO_CHAR` macro, used
for regexp elements that depend on syntax tables (i.e. \<, \>, \_<, ...).

But I'd expect those to be executed "frequently&closely" enough that the
`cached_(byte|char)pos` data should almost always be nearby, making the
call to `buf_bytepos_to_charpos` fairly cheap (more specifically
the `for (tail = BUF_MARKERS (b);...` loop should not iterate many
times, regardless how many markers there are).

> My guess: number of markers is growing somehow?

`buf_bytepos_to_charpos` itself creates markers (using them as a cache
of previous conversions), so that might be why.

But we only look at the first N markers where N*50 is the distance to
the closest marker found so far.  So growth is not sufficient (it's
clearly a part of the reason, tho).

Regarding growth: could you call `garbage-collect` between the calls to
`re-search-forward` to see if that avoids the accumulation?
[ I presume here that those markers are created/added by
  `buf_bytepos_to_charpos` itself, so they should be recovered by the GC
  because they're not referenced from anywhere else.  ]

I'd be interested to know how many iterations of the `for (tail =
BUF_MARKERS (b);...` loop are executed on average during your
`re-search-forward` (and how that average changes between runs of
`re-search-forward`).


        Stefan


PS: Of course, another approach would be to replace this code with
something else.  Using markers as a cache of bytepos/charpos conversions
has been a source of a few performance issues over the year.

Another approach could be to use a "vector with gap" managed alongside
the actual buffer text.  It could be indexed by "charpos divided by
1024", so conversion from charpos to bytepos could be a simple vector
lookup followed by scanning at most 1kB, and conversion in the other
direction would use a binary search in that same vector (or we could use
2 "vectors with gap", one per direction of conversion).





Information forwarded to bug-gnu-emacs@HIDDEN:
bug#58558; Package emacs. Full text available.

Message received at 58558 <at> debbugs.gnu.org:


Received: (at 58558) by debbugs.gnu.org; 13 Dec 2022 16:09:02 +0000
From debbugs-submit-bounces <at> debbugs.gnu.org Tue Dec 13 11:09:02 2022
Received: from localhost ([127.0.0.1]:33031 helo=debbugs.gnu.org)
	by debbugs.gnu.org with esmtp (Exim 4.84_2)
	(envelope-from <debbugs-submit-bounces <at> debbugs.gnu.org>)
	id 1p57q1-0005jY-7U
	for submit <at> debbugs.gnu.org; Tue, 13 Dec 2022 11:09:02 -0500
Received: from eggs.gnu.org ([209.51.188.92]:48134)
 by debbugs.gnu.org with esmtp (Exim 4.84_2)
 (envelope-from <eliz@HIDDEN>) id 1p57pz-0005jL-3b
 for 58558 <at> debbugs.gnu.org; Tue, 13 Dec 2022 11:08:59 -0500
Received: from fencepost.gnu.org ([2001:470:142:3::e])
 by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256)
 (Exim 4.90_1) (envelope-from <eliz@HIDDEN>)
 id 1p57pt-0007GD-29; Tue, 13 Dec 2022 11:08:53 -0500
DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; d=gnu.org;
 s=fencepost-gnu-org; h=References:Subject:In-Reply-To:To:From:Date:
 mime-version; bh=NjqV095xFQPxSkx77Y9pQV9WUSDzXXsyMFn/Q2zzfj0=; b=jt9eweHYTtYh
 +DWdGy7yBem5rmBsSwOuWSpHW/KENny7nS9AFsaj1RS6HALXhVeJjT1hwOs5FC3syCBsePY7uPaiP
 6LqsQEtWtM+6F/XiRxwD/3pAT8PtYjpnPZXhk68GpPsM9+IKe0SpDDUrQSKiBinFJ2CQyUk4hKXnf
 aFR9f/pZf4lN8vcj+/NIAh2xD6h9w1F1o9X3PjcLTDQIOHHYDb1PCbW8gyiyVfx+1O0QKURaC/krd
 Zcj4i0Bv+cUOQfEWF9i3oQIk1PRIaf7nnZ1p6KJRd+AaANR/SQEkmeC8AOEJigI9ncS/YdU3DBK4L
 gSrhfZYstQWULRYFiUbLFQ==;
Received: from [87.69.77.57] (helo=home-c4e4a596f7)
 by fencepost.gnu.org with esmtpsa (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256)
 (Exim 4.90_1) (envelope-from <eliz@HIDDEN>)
 id 1p57ps-0007vW-GW; Tue, 13 Dec 2022 11:08:52 -0500
Date: Tue, 13 Dec 2022 18:08:56 +0200
Message-Id: <83zgbrnv53.fsf@HIDDEN>
From: Eli Zaretskii <eliz@HIDDEN>
To: Ihor Radchenko <yantar92@HIDDEN>
In-Reply-To: <87fsdjwb4e.fsf@localhost> (message from Ihor Radchenko on Tue,
 13 Dec 2022 15:56:33 +0000)
Subject: Re: bug#58558: 29.0.50; re-search-forward is slow in some buffers
References: <877d10r21x.fsf@localhost> <87zgdwyvkt.fsf@HIDDEN>
 <87ilkk6ri5.fsf@localhost> <87v8okjei9.fsf@HIDDEN>
 <87tu44jdce.fsf@localhost> <87czasjd9j.fsf@HIDDEN>
 <87k050nio5.fsf@localhost> <87zgdwhw0z.fsf@HIDDEN>
 <83sfjo3tfw.fsf@HIDDEN> <jwvbkqbhnu8.fsf-monnier+emacs@HIDDEN>
 <878rlfjmjh.fsf@localhost> <87mt9tbbbp.fsf@HIDDEN>
 <8335bl18lo.fsf@HIDDEN> <87wn8x9eqb.fsf@HIDDEN>
 <87tu1zd2c6.fsf@localhost> <83h6xzphxm.fsf@HIDDEN>
 <87wn6vbfaa.fsf@localhost> <838rjbpecw.fsf@HIDDEN> <87fsdjwb4e.fsf@localhost>
X-Spam-Score: -2.3 (--)
X-Debbugs-Envelope-To: 58558
Cc: 58558 <at> debbugs.gnu.org, larsi@HIDDEN, monnier@HIDDEN
X-BeenThere: debbugs-submit <at> debbugs.gnu.org
X-Mailman-Version: 2.1.18
Precedence: list
List-Id: <debbugs-submit.debbugs.gnu.org>
List-Unsubscribe: <https://debbugs.gnu.org/cgi-bin/mailman/options/debbugs-submit>, 
 <mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=unsubscribe>
List-Archive: <https://debbugs.gnu.org/cgi-bin/mailman/private/debbugs-submit/>
List-Post: <mailto:debbugs-submit <at> debbugs.gnu.org>
List-Help: <mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=help>
List-Subscribe: <https://debbugs.gnu.org/cgi-bin/mailman/listinfo/debbugs-submit>, 
 <mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=subscribe>
Errors-To: debbugs-submit-bounces <at> debbugs.gnu.org
Sender: "Debbugs-submit" <debbugs-submit-bounces <at> debbugs.gnu.org>
X-Spam-Score: -3.3 (---)

> From: Ihor Radchenko <yantar92@HIDDEN>
> Cc: larsi@HIDDEN, monnier@HIDDEN, 58558 <at> debbugs.gnu.org
> Date: Tue, 13 Dec 2022 15:56:33 +0000
> 
> My guess: number of markers is growing somehow?

That was my guess, yeah.

So now the question becomes: who creates all those additional markers
if all you do is run the benchmark?

If no other idea to find this out comes up, maybe run this with a
breakpoint in make-marker, look at the backtrace to see the callers.




Information forwarded to bug-gnu-emacs@HIDDEN:
bug#58558; Package emacs. Full text available.

Message received at 58558 <at> debbugs.gnu.org:


Received: (at 58558) by debbugs.gnu.org; 13 Dec 2022 15:56:49 +0000
From debbugs-submit-bounces <at> debbugs.gnu.org Tue Dec 13 10:56:49 2022
Received: from localhost ([127.0.0.1]:32973 helo=debbugs.gnu.org)
	by debbugs.gnu.org with esmtp (Exim 4.84_2)
	(envelope-from <debbugs-submit-bounces <at> debbugs.gnu.org>)
	id 1p57eD-0005b2-AT
	for submit <at> debbugs.gnu.org; Tue, 13 Dec 2022 10:56:49 -0500
Received: from mout01.posteo.de ([185.67.36.65]:60995)
 by debbugs.gnu.org with esmtp (Exim 4.84_2)
 (envelope-from <yantar92@HIDDEN>) id 1p57eB-0005au-Dd
 for 58558 <at> debbugs.gnu.org; Tue, 13 Dec 2022 10:56:48 -0500
Received: from submission (posteo.de [185.67.36.169]) 
 by mout01.posteo.de (Postfix) with ESMTPS id 78CF324002D
 for <58558 <at> debbugs.gnu.org>; Tue, 13 Dec 2022 16:56:40 +0100 (CET)
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=posteo.net; s=2017;
 t=1670947001; bh=NL7qAAIR2xFz0H7RcjOtFBE6YQ4dM6GLuO3slMd9f/4=;
 h=From:To:Cc:Subject:Date:From;
 b=LzmnlhT3kP+ht5tOsUIBznTp9ckrPqI6KLZwGdxLvmtE1oSy7JZb3Ru9ZjI/XBPH3
 S7H8yyyY6NiY5hEgBK6YGz+jQvctJAm6wkqb8ulf3TaCgj8yhlIn0acvLFBD9kmKeC
 Vhk+onbU/pauDm0e5tkSaYfF5vPCM4PBbuDv4jeDwRrrrGv2XhyNPn60IrCyO1/3XA
 hi+soUyhXpdLEIfjejbu1VwaVWdodfctu6Ab4DjVmCXfacJjMP52k6c/yoOFqnNlOQ
 RU/9jr3LCQdVTHYzZf6HRAo5E8V8nkTcaSW+zXdM7vUFMED2opt9pUgjf6DPK3FHPP
 SG8y3XXvHRmuw==
Received: from customer (localhost [127.0.0.1])
 by submission (posteo.de) with ESMTPSA id 4NWjm74g38z6tm9;
 Tue, 13 Dec 2022 16:56:39 +0100 (CET)
From: Ihor Radchenko <yantar92@HIDDEN>
To: Eli Zaretskii <eliz@HIDDEN>
Subject: Re: bug#58558: 29.0.50; re-search-forward is slow in some buffers
In-Reply-To: <838rjbpecw.fsf@HIDDEN>
References: <877d10r21x.fsf@localhost> <87zgdwyvkt.fsf@HIDDEN>
 <87ilkk6ri5.fsf@localhost> <87v8okjei9.fsf@HIDDEN>
 <87tu44jdce.fsf@localhost> <87czasjd9j.fsf@HIDDEN>
 <87k050nio5.fsf@localhost> <87zgdwhw0z.fsf@HIDDEN>
 <83sfjo3tfw.fsf@HIDDEN> <jwvbkqbhnu8.fsf-monnier+emacs@HIDDEN>
 <878rlfjmjh.fsf@localhost> <87mt9tbbbp.fsf@HIDDEN>
 <8335bl18lo.fsf@HIDDEN> <87wn8x9eqb.fsf@HIDDEN>
 <87tu1zd2c6.fsf@localhost> <83h6xzphxm.fsf@HIDDEN>
 <87wn6vbfaa.fsf@localhost> <838rjbpecw.fsf@HIDDEN>
Date: Tue, 13 Dec 2022 15:56:33 +0000
Message-ID: <87fsdjwb4e.fsf@localhost>
MIME-Version: 1.0
Content-Type: text/plain
X-Spam-Score: -2.3 (--)
X-Debbugs-Envelope-To: 58558
Cc: 58558 <at> debbugs.gnu.org, larsi@HIDDEN, monnier@HIDDEN
X-BeenThere: debbugs-submit <at> debbugs.gnu.org
X-Mailman-Version: 2.1.18
Precedence: list
List-Id: <debbugs-submit.debbugs.gnu.org>
List-Unsubscribe: <https://debbugs.gnu.org/cgi-bin/mailman/options/debbugs-submit>, 
 <mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=unsubscribe>
List-Archive: <https://debbugs.gnu.org/cgi-bin/mailman/private/debbugs-submit/>
List-Post: <mailto:debbugs-submit <at> debbugs.gnu.org>
List-Help: <mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=help>
List-Subscribe: <https://debbugs.gnu.org/cgi-bin/mailman/listinfo/debbugs-submit>, 
 <mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=subscribe>
Errors-To: debbugs-submit-bounces <at> debbugs.gnu.org
Sender: "Debbugs-submit" <debbugs-submit-bounces <at> debbugs.gnu.org>
X-Spam-Score: -3.3 (---)

Eli Zaretskii <eliz@HIDDEN> writes:

>> I will look how to do it. Maybe perf probe.
>> I guess, it will be useful to compile Emacs with debug symbols at this
>> point.
>
> AFAIR, you can ask perf to profile a single function, and you can ask
> it to annotate the profile with the source code.

I now compiled Emacs with debug symbols, waited enough to see observable
increase in the benchmark-run timing, and recorded the perf data.

buf_bytepos_to_charpos is still on the top

    78.06%  emacs         emacs                       [.] buf_bytepos_to_charpos
     3.00%  emacs         emacs                       [.] re_match_2_internal
     1.05%  emacs         emacs                       [.] find_interval
     1.04%  emacs         emacs                       [.] CHAR_TABLE_REF_ASCII
     0.85%  emacs         emacs                       [.] make_lisp_symbol
     0.80%  emacs         emacs                       [.] re_search_2
     0.76%  emacs         emacs                       [.] builtin_lisp_symbol
     0.62%  emacs         emacs                       [.] PSEUDOVECTORP

The specific place in the code is:

perf annotate -s buf_bytepos_to_charpos 

        : 352    for (tail = BUF_MARKERS (b); tail; tail = tail->next)
    0.00 :   237e53: mov    -0xe8(%rbp),%rax
    0.00 :   237e5a: mov    0x2e8(%rax),%rax
    0.01 :   237e61: mov    0x80(%rax),%rax
    0.00 :   237e68: mov    %rax,-0xc0(%rbp)
    0.00 :   237e6f: jmp    237fc6 <buf_bytepos_to_charpos+0x7ba>
         : 353    {
         : 354    CONSIDER (tail->bytepos, tail->charpos);
    0.02 :   237e74: mov    -0xc0(%rbp),%rax
   47.07 :   237e7b: mov    0x28(%rax),%rax
    7.27 :   237e7f: mov    %rax,-0x38(%rbp)
    0.02 :   237e83: movl   $0x0,-0xc4(%rbp)
    9.05 :   237e8d: mov    -0x38(%rbp),%rax
    0.01 :   237e91: cmp    -0xf0(%rbp),%rax
    3.73 :   237e98: jne    237eb2 <buf_bytepos_to_charpos+0x6a6>
    0.00 :   237e9a: mov    -0xc0(%rbp),%rax
    0.00 :   237ea1: mov    0x20(%rax),%rax
    0.00 :   237ea5: mov    %rax,-0x28(%rbp)
    0.00 :   237ea9: mov    -0x28(%rbp),%rax
    0.00 :   237ead: jmp    2381cd <buf_bytepos_to_charpos+0x9c1>
    2.14 :   237eb2: mov    -0x38(%rbp),%rax
    1.87 :   237eb6: cmp    -0xf0(%rbp),%rax
    0.85 :   237ebd: jle    237ef5 <buf_bytepos_to_charpos+0x6e9>
    2.32 :   237ebf: mov    -0x38(%rbp),%rax
    0.04 :   237ec3: cmp    -0xb0(%rbp),%rax
    2.56 :   237eca: jge    237f29 <buf_bytepos_to_charpos+0x71d>

My guess: number of markers is growing somehow?

-- 
Ihor Radchenko // yantar92,
Org mode contributor,
Learn more about Org mode at <https://orgmode.org/>.
Support Org development at <https://liberapay.com/org-mode>,
or support my work at <https://liberapay.com/yantar92>




Information forwarded to bug-gnu-emacs@HIDDEN:
bug#58558; Package emacs. Full text available.

Message received at 58558 <at> debbugs.gnu.org:


Received: (at 58558) by debbugs.gnu.org; 13 Dec 2022 14:28:38 +0000
From debbugs-submit-bounces <at> debbugs.gnu.org Tue Dec 13 09:28:38 2022
Received: from localhost ([127.0.0.1]:60779 helo=debbugs.gnu.org)
	by debbugs.gnu.org with esmtp (Exim 4.84_2)
	(envelope-from <debbugs-submit-bounces <at> debbugs.gnu.org>)
	id 1p56Gs-0004VN-CS
	for submit <at> debbugs.gnu.org; Tue, 13 Dec 2022 09:28:38 -0500
Received: from eggs.gnu.org ([209.51.188.92]:40762)
 by debbugs.gnu.org with esmtp (Exim 4.84_2)
 (envelope-from <eliz@HIDDEN>) id 1p56Go-0004VH-Gl
 for 58558 <at> debbugs.gnu.org; Tue, 13 Dec 2022 09:28:36 -0500
Received: from fencepost.gnu.org ([2001:470:142:3::e])
 by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256)
 (Exim 4.90_1) (envelope-from <eliz@HIDDEN>)
 id 1p56Gj-0005Ga-0a; Tue, 13 Dec 2022 09:28:29 -0500
DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; d=gnu.org;
 s=fencepost-gnu-org; h=References:Subject:In-Reply-To:To:From:Date:
 mime-version; bh=859yxaXbHDYJSfgDb2aDvSV4GXNKFbBDk07vPpShR18=; b=kWKtqcmVVsW/
 Kq7o20MFikRSbAbeC2LNIA52blNpy0EtlnAmOEwNl+3T37xO0/Lq3UdUXY0DETrcKgVTL500zou/v
 hhtXQ7PE1H7uVR0vQQ6Y5x2aMfta3/uxTvPR6ljTXoDjnoyyhQtdTRlfxTNzPmpxt3IXss/lU5wMp
 YaQgok703W+XQa3u6R8fAU78l5ktMeRWOkbsxBhkhrRvF3qpi4yHwxJvWz/rf4EAsJweF7Yyks9p8
 cVNfBSf+ySdlK+piDMW4N+rrkM+ZNQOKqRm86MlYZ+HuOWgtKwjgDQrznr9GbFyzUWdt+4Ck49Jvh
 1kwMkdFbW8g4eUov41BGVw==;
Received: from [87.69.77.57] (helo=home-c4e4a596f7)
 by fencepost.gnu.org with esmtpsa (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256)
 (Exim 4.90_1) (envelope-from <eliz@HIDDEN>)
 id 1p56Gi-0000Uh-HS; Tue, 13 Dec 2022 09:28:28 -0500
Date: Tue, 13 Dec 2022 16:28:31 +0200
Message-Id: <838rjbpecw.fsf@HIDDEN>
From: Eli Zaretskii <eliz@HIDDEN>
To: Ihor Radchenko <yantar92@HIDDEN>
In-Reply-To: <87wn6vbfaa.fsf@localhost> (message from Ihor Radchenko on Tue,
 13 Dec 2022 13:32:13 +0000)
Subject: Re: bug#58558: 29.0.50; re-search-forward is slow in some buffers
References: <877d10r21x.fsf@localhost> <87zgdwyvkt.fsf@HIDDEN>
 <87ilkk6ri5.fsf@localhost> <87v8okjei9.fsf@HIDDEN>
 <87tu44jdce.fsf@localhost> <87czasjd9j.fsf@HIDDEN>
 <87k050nio5.fsf@localhost> <87zgdwhw0z.fsf@HIDDEN>
 <83sfjo3tfw.fsf@HIDDEN> <jwvbkqbhnu8.fsf-monnier+emacs@HIDDEN>
 <878rlfjmjh.fsf@localhost> <87mt9tbbbp.fsf@HIDDEN>
 <8335bl18lo.fsf@HIDDEN> <87wn8x9eqb.fsf@HIDDEN>
 <87tu1zd2c6.fsf@localhost> <83h6xzphxm.fsf@HIDDEN> <87wn6vbfaa.fsf@localhost>
X-Spam-Score: -2.3 (--)
X-Debbugs-Envelope-To: 58558
Cc: 58558 <at> debbugs.gnu.org, larsi@HIDDEN, monnier@HIDDEN
X-BeenThere: debbugs-submit <at> debbugs.gnu.org
X-Mailman-Version: 2.1.18
Precedence: list
List-Id: <debbugs-submit.debbugs.gnu.org>
List-Unsubscribe: <https://debbugs.gnu.org/cgi-bin/mailman/options/debbugs-submit>, 
 <mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=unsubscribe>
List-Archive: <https://debbugs.gnu.org/cgi-bin/mailman/private/debbugs-submit/>
List-Post: <mailto:debbugs-submit <at> debbugs.gnu.org>
List-Help: <mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=help>
List-Subscribe: <https://debbugs.gnu.org/cgi-bin/mailman/listinfo/debbugs-submit>, 
 <mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=subscribe>
Errors-To: debbugs-submit-bounces <at> debbugs.gnu.org
Sender: "Debbugs-submit" <debbugs-submit-bounces <at> debbugs.gnu.org>
X-Spam-Score: -3.3 (---)

> From: Ihor Radchenko <yantar92@HIDDEN>
> Cc: larsi@HIDDEN, monnier@HIDDEN, 58558 <at> debbugs.gnu.org
> Date: Tue, 13 Dec 2022 13:32:13 +0000
> 
> > or (b) because each call to
> > buf_bytepos_to_charpos becomes more and more expensive.  So I think
> > the first question is: how many times is buf_bytepos_to_charpos called
> > for each search, or, equivalently, is the CPU time per call used up by
> > buf_bytepos_to_charpos stays stable or goes up?  I think perf can
> > answer these questions if you ask nicely.
> 
> I will look how to do it. Maybe perf probe.
> I guess, it will be useful to compile Emacs with debug symbols at this
> point.

AFAIR, you can ask perf to profile a single function, and you can ask
it to annotate the profile with the source code.

> > Is the buffer in question being edited as time advances?  Or is buffer
> > text and everything else in the buffer left unchanged?
> 
> Not edited between benchmarks. Remember that I did sequence of
> benchmark-run calls and the time gradually increases.

OK, so it looks more and more like each call becomes more expensive
for some reason.  But let's see the numbers before jumping to
conclusions.




Information forwarded to bug-gnu-emacs@HIDDEN:
bug#58558; Package emacs. Full text available.

Message received at 58558 <at> debbugs.gnu.org:


Received: (at 58558) by debbugs.gnu.org; 13 Dec 2022 13:32:27 +0000
From debbugs-submit-bounces <at> debbugs.gnu.org Tue Dec 13 08:32:27 2022
Received: from localhost ([127.0.0.1]:60414 helo=debbugs.gnu.org)
	by debbugs.gnu.org with esmtp (Exim 4.84_2)
	(envelope-from <debbugs-submit-bounces <at> debbugs.gnu.org>)
	id 1p55OU-0003gk-Jf
	for submit <at> debbugs.gnu.org; Tue, 13 Dec 2022 08:32:26 -0500
Received: from mout01.posteo.de ([185.67.36.65]:33529)
 by debbugs.gnu.org with esmtp (Exim 4.84_2)
 (envelope-from <yantar92@HIDDEN>) id 1p55OT-0003gd-38
 for 58558 <at> debbugs.gnu.org; Tue, 13 Dec 2022 08:32:25 -0500
Received: from submission (posteo.de [185.67.36.169]) 
 by mout01.posteo.de (Postfix) with ESMTPS id D864C240027
 for <58558 <at> debbugs.gnu.org>; Tue, 13 Dec 2022 14:32:16 +0100 (CET)
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=posteo.net; s=2017;
 t=1670938338; bh=bT0/97tsQRd2FtcWFFn62dP+mG3cxGDdWH2lHfFDJ8E=;
 h=From:To:Cc:Subject:Date:From;
 b=SFHOFOLAxGTWgeAhGVPmNrYX/MzyluBv/A1efJYmMstwTZl/20eVppNSQ5AAz3O/J
 F4IBSwyd42Y3Edtl3NHj8sm1i0WBKbn4S1LqaUyPhCh0izFpgzCDB4eisyXmPCzD/2
 4HMvZR7Fmxsoz5Vn8ykjA3G1M1s44Dgizp/0kZ/ZAQwxmJNyKhtWWFEqoO+IhBUkzH
 6xvtA2vB1dJ5PoKKuM46WvDhEZPPg3VLsWYewLqxaV22pLlo63lZzkC2uWHrkMRTEu
 NuKfBWYiQ9HjKmYtRhaejhVqt5Rz0mQA+TdQmgpPBO0F2snxEybnn5+AjcXIF7pZe+
 GMkNNmwNJkZSQ==
Received: from customer (localhost [127.0.0.1])
 by submission (posteo.de) with ESMTPSA id 4NWfYW1WJDz6tmJ;
 Tue, 13 Dec 2022 14:32:15 +0100 (CET)
From: Ihor Radchenko <yantar92@HIDDEN>
To: Eli Zaretskii <eliz@HIDDEN>
Subject: Re: bug#58558: 29.0.50; re-search-forward is slow in some buffers
In-Reply-To: <83h6xzphxm.fsf@HIDDEN>
References: <877d10r21x.fsf@localhost> <87zgdwyvkt.fsf@HIDDEN>
 <87ilkk6ri5.fsf@localhost> <87v8okjei9.fsf@HIDDEN>
 <87tu44jdce.fsf@localhost> <87czasjd9j.fsf@HIDDEN>
 <87k050nio5.fsf@localhost> <87zgdwhw0z.fsf@HIDDEN>
 <83sfjo3tfw.fsf@HIDDEN> <jwvbkqbhnu8.fsf-monnier+emacs@HIDDEN>
 <878rlfjmjh.fsf@localhost> <87mt9tbbbp.fsf@HIDDEN>
 <8335bl18lo.fsf@HIDDEN> <87wn8x9eqb.fsf@HIDDEN>
 <87tu1zd2c6.fsf@localhost> <83h6xzphxm.fsf@HIDDEN>
Date: Tue, 13 Dec 2022 13:32:13 +0000
Message-ID: <87wn6vbfaa.fsf@localhost>
MIME-Version: 1.0
Content-Type: text/plain
X-Spam-Score: -2.3 (--)
X-Debbugs-Envelope-To: 58558
Cc: 58558 <at> debbugs.gnu.org, larsi@HIDDEN, monnier@HIDDEN
X-BeenThere: debbugs-submit <at> debbugs.gnu.org
X-Mailman-Version: 2.1.18
Precedence: list
List-Id: <debbugs-submit.debbugs.gnu.org>
List-Unsubscribe: <https://debbugs.gnu.org/cgi-bin/mailman/options/debbugs-submit>, 
 <mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=unsubscribe>
List-Archive: <https://debbugs.gnu.org/cgi-bin/mailman/private/debbugs-submit/>
List-Post: <mailto:debbugs-submit <at> debbugs.gnu.org>
List-Help: <mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=help>
List-Subscribe: <https://debbugs.gnu.org/cgi-bin/mailman/listinfo/debbugs-submit>, 
 <mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=subscribe>
Errors-To: debbugs-submit-bounces <at> debbugs.gnu.org
Sender: "Debbugs-submit" <debbugs-submit-bounces <at> debbugs.gnu.org>
X-Spam-Score: -3.3 (---)

Eli Zaretskii <eliz@HIDDEN> writes:

>> The fraction of buf_bytepos_to_charpos increases over repeated benchmark
>> runs.
>
> So buf_bytepos_to_charpos is the main suspect now, I guess.  This
> could happen because either (a) buf_bytepos_to_charpos is called more
> times as session uptime progresses,

Just to clarify. The perf records I did are roughly for the duration of
benchmark-run calls. Nothing more.

> or (b) because each call to
> buf_bytepos_to_charpos becomes more and more expensive.  So I think
> the first question is: how many times is buf_bytepos_to_charpos called
> for each search, or, equivalently, is the CPU time per call used up by
> buf_bytepos_to_charpos stays stable or goes up?  I think perf can
> answer these questions if you ask nicely.

I will look how to do it. Maybe perf probe.
I guess, it will be useful to compile Emacs with debug symbols at this
point.

> Is the buffer in question being edited as time advances?  Or is buffer
> text and everything else in the buffer left unchanged?

Not edited between benchmarks. Remember that I did sequence of
benchmark-run calls and the time gradually increases.

-- 
Ihor Radchenko // yantar92,
Org mode contributor,
Learn more about Org mode at <https://orgmode.org/>.
Support Org development at <https://liberapay.com/org-mode>,
or support my work at <https://liberapay.com/yantar92>




Information forwarded to bug-gnu-emacs@HIDDEN:
bug#58558; Package emacs. Full text available.

Message received at 58558 <at> debbugs.gnu.org:


Received: (at 58558) by debbugs.gnu.org; 13 Dec 2022 13:27:45 +0000
From debbugs-submit-bounces <at> debbugs.gnu.org Tue Dec 13 08:27:45 2022
Received: from localhost ([127.0.0.1]:60380 helo=debbugs.gnu.org)
	by debbugs.gnu.org with esmtp (Exim 4.84_2)
	(envelope-from <debbugs-submit-bounces <at> debbugs.gnu.org>)
	id 1p55Jx-0001JB-1g
	for submit <at> debbugs.gnu.org; Tue, 13 Dec 2022 08:27:45 -0500
Received: from mailscanner.iro.umontreal.ca ([132.204.25.50]:19375)
 by debbugs.gnu.org with esmtp (Exim 4.84_2)
 (envelope-from <monnier@HIDDEN>) id 1p55Jv-0001J5-He
 for 58558 <at> debbugs.gnu.org; Tue, 13 Dec 2022 08:27:43 -0500
Received: from pmg3.iro.umontreal.ca (localhost [127.0.0.1])
 by pmg3.iro.umontreal.ca (Proxmox) with ESMTP id 4957544220F;
 Tue, 13 Dec 2022 08:27:37 -0500 (EST)
Received: from mail01.iro.umontreal.ca (unknown [172.31.2.1])
 by pmg3.iro.umontreal.ca (Proxmox) with ESMTP id BDF3E44221E;
 Tue, 13 Dec 2022 08:27:35 -0500 (EST)
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=iro.umontreal.ca;
 s=mail; t=1670938055;
 bh=Q7FBVUqjaY03YnxQjg0cUIWvTQoZXzPmDBGebUnbscg=;
 h=From:To:Cc:Subject:In-Reply-To:References:Date:From;
 b=i1HLel5N0AMI7eGR0SZO9x/1KEddDKU/k9SdoziLu3Sj1uctChFkTFBEcNExUNSY0
 EuxU7Q+0uQPBtWuSA6mJa/qMdE7N6ka0M7dqNlHQb4kZDmwHLE0PbjQ4M76dbLqpZb
 DIX/IIJdFE9hp+H2Eoq1fnxADfFEu0SwLXKOi4/Odofo6jBdlcbUmwL1nzyXlzB4nn
 yFaGD94RSZBZ0ymQvZ7Nb4QBXbAh9njl3oY3ZLmV7YcX3jMfRQAQWa7l9XF4cgz+dV
 eboYeSBxWYYnSeB9XsZhgA6qtJyFE0uCY+UZrBs1AoRt+2O8DJWUOns7GKzohOwV22
 SNABpQaBM7NZw==
Received: from pastel (unknown [45.72.193.52])
 by mail01.iro.umontreal.ca (Postfix) with ESMTPSA id 911331201E4;
 Tue, 13 Dec 2022 08:27:35 -0500 (EST)
From: Stefan Monnier <monnier@HIDDEN>
To: Ihor Radchenko <yantar92@HIDDEN>
Subject: Re: bug#58558: 29.0.50; re-search-forward is slow in some buffers
In-Reply-To: <87tu1zd2c6.fsf@localhost> (Ihor Radchenko's message of "Tue, 13
 Dec 2022 10:28:57 +0000")
Message-ID: <jwv359je9hr.fsf-monnier+emacs@HIDDEN>
References: <877d10r21x.fsf@localhost> <87zgdwyvkt.fsf@HIDDEN>
 <87ilkk6ri5.fsf@localhost> <87v8okjei9.fsf@HIDDEN>
 <87tu44jdce.fsf@localhost> <87czasjd9j.fsf@HIDDEN>
 <87k050nio5.fsf@localhost> <87zgdwhw0z.fsf@HIDDEN>
 <83sfjo3tfw.fsf@HIDDEN> <jwvbkqbhnu8.fsf-monnier+emacs@HIDDEN>
 <878rlfjmjh.fsf@localhost> <87mt9tbbbp.fsf@HIDDEN>
 <8335bl18lo.fsf@HIDDEN> <87wn8x9eqb.fsf@HIDDEN>
 <87tu1zd2c6.fsf@localhost>
Date: Tue, 13 Dec 2022 08:27:34 -0500
User-Agent: Gnus/5.13 (Gnus v5.13)
MIME-Version: 1.0
Content-Type: text/plain
X-SPAM-INFO: Spam detection results:  0
 ALL_TRUSTED                -1 Passed through trusted hosts only via SMTP
 AWL -0.350 Adjusted score from AWL reputation of From: address
 BAYES_00                 -1.9 Bayes spam probability is 0 to 1%
 DKIM_SIGNED               0.1 Message has a DKIM or DK signature,
 not necessarily valid
 DKIM_VALID -0.1 Message has at least one valid DKIM or DK signature
 DKIM_VALID_AU -0.1 Message has a valid DKIM or DK signature from author's
 domain
X-SPAM-LEVEL: 
X-Spam-Score: -2.3 (--)
X-Debbugs-Envelope-To: 58558
Cc: 58558 <at> debbugs.gnu.org, Lars Ingebrigtsen <larsi@HIDDEN>,
 Eli Zaretskii <eliz@HIDDEN>
X-BeenThere: debbugs-submit <at> debbugs.gnu.org
X-Mailman-Version: 2.1.18
Precedence: list
List-Id: <debbugs-submit.debbugs.gnu.org>
List-Unsubscribe: <https://debbugs.gnu.org/cgi-bin/mailman/options/debbugs-submit>, 
 <mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=unsubscribe>
List-Archive: <https://debbugs.gnu.org/cgi-bin/mailman/private/debbugs-submit/>
List-Post: <mailto:debbugs-submit <at> debbugs.gnu.org>
List-Help: <mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=help>
List-Subscribe: <https://debbugs.gnu.org/cgi-bin/mailman/listinfo/debbugs-submit>, 
 <mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=subscribe>
Errors-To: debbugs-submit-bounces <at> debbugs.gnu.org
Sender: "Debbugs-submit" <debbugs-submit-bounces <at> debbugs.gnu.org>
X-Spam-Score: -3.3 (---)

> The fraction of buf_bytepos_to_charpos increases over repeated benchmark
> runs.
[...]
> Any ideas what I can do further?

As usual, the problem is either that we call this function too often or
that it takes too much time every time we call it so:

- Try and figure out who is the most frequent caller of
  `buf_bytepos_to_charpos` during your benchmark.  Most calls to this
  function can usually be eliminated by changing the code to keep track
  of both bytes and chars at the same time.  Actually, most of the time
  we already have the char info somewhere nearby, so it might be
  a simple change.
  `gprof` can often give that info.

- Try and figure out why `buf_bytepos_to_charpos` is so slow.
  Last time we tweaked that code, AFAIK, is commit
  b300052fb4ef1261519b0fd57f5eb186c2d10295.
  My debugging approach for those cases is the following:
  DEFVAR_LISP a new variable in which you put a vector of N integers
  (initialized to 0), and then at various "interesting" points in the
  `buf_bytepos_to_charpos`, increment one of the vector elements.
  This way you can see from ELisp how many times each "interesting"
  point was executed.
  IOW, I do the profiling counters by hand.


        Stefan





Information forwarded to bug-gnu-emacs@HIDDEN:
bug#58558; Package emacs. Full text available.

Message received at 58558 <at> debbugs.gnu.org:


Received: (at 58558) by debbugs.gnu.org; 13 Dec 2022 13:11:33 +0000
From debbugs-submit-bounces <at> debbugs.gnu.org Tue Dec 13 08:11:33 2022
Received: from localhost ([127.0.0.1]:60278 helo=debbugs.gnu.org)
	by debbugs.gnu.org with esmtp (Exim 4.84_2)
	(envelope-from <debbugs-submit-bounces <at> debbugs.gnu.org>)
	id 1p554H-000177-DB
	for submit <at> debbugs.gnu.org; Tue, 13 Dec 2022 08:11:33 -0500
Received: from eggs.gnu.org ([209.51.188.92]:40152)
 by debbugs.gnu.org with esmtp (Exim 4.84_2)
 (envelope-from <eliz@HIDDEN>) id 1p554F-000171-Ja
 for 58558 <at> debbugs.gnu.org; Tue, 13 Dec 2022 08:11:32 -0500
Received: from fencepost.gnu.org ([2001:470:142:3::e])
 by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256)
 (Exim 4.90_1) (envelope-from <eliz@HIDDEN>)
 id 1p5548-0000lp-OW; Tue, 13 Dec 2022 08:11:24 -0500
DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; d=gnu.org;
 s=fencepost-gnu-org; h=References:Subject:In-Reply-To:To:From:Date:
 mime-version; bh=gCljH7+Om63L5OJdWZcIgjOmbqC/CxP2mMJjmKhpTEM=; b=mFQ5AYTNLa3R
 xdnYIoF5az7tyXsOBTG3piuvXCVVHrSm1FPvn/2DvpEf9rHqwyg1RCMf9Oaee43a9laQl2ZfhVGAv
 jf5nXP1HlGwvdCh3PUOc+fuI9JKjATnYxWvue8QS24v+yswb2FRYc8UMEjgxoDhIZnWOTkirDFnYV
 GicpC39x094TFDgG5rLNp+KzVmBkFWQZqlGLnXaSLnbdbxUv0v9Zy66bhummHwBrAWDNPOv8J4a6t
 tr+1jI8WxdIwCs9P5y86fcyhaWQuOfldZAxl0sFhJpNZAmY3v8NyW4+ILA8zOV5+e1W3dwT3fjH7l
 MSnSOqMjPW1fMTz1U/NtVA==;
Received: from [87.69.77.57] (helo=home-c4e4a596f7)
 by fencepost.gnu.org with esmtpsa (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256)
 (Exim 4.90_1) (envelope-from <eliz@HIDDEN>)
 id 1p553x-0008QE-QZ; Tue, 13 Dec 2022 08:11:24 -0500
Date: Tue, 13 Dec 2022 15:11:17 +0200
Message-Id: <83h6xzphxm.fsf@HIDDEN>
From: Eli Zaretskii <eliz@HIDDEN>
To: Ihor Radchenko <yantar92@HIDDEN>
In-Reply-To: <87tu1zd2c6.fsf@localhost> (message from Ihor Radchenko on Tue,
 13 Dec 2022 10:28:57 +0000)
Subject: Re: bug#58558: 29.0.50; re-search-forward is slow in some buffers
References: <877d10r21x.fsf@localhost> <87zgdwyvkt.fsf@HIDDEN>
 <87ilkk6ri5.fsf@localhost> <87v8okjei9.fsf@HIDDEN>
 <87tu44jdce.fsf@localhost> <87czasjd9j.fsf@HIDDEN>
 <87k050nio5.fsf@localhost> <87zgdwhw0z.fsf@HIDDEN>
 <83sfjo3tfw.fsf@HIDDEN> <jwvbkqbhnu8.fsf-monnier+emacs@HIDDEN>
 <878rlfjmjh.fsf@localhost> <87mt9tbbbp.fsf@HIDDEN>
 <8335bl18lo.fsf@HIDDEN> <87wn8x9eqb.fsf@HIDDEN> <87tu1zd2c6.fsf@localhost>
X-Spam-Score: -2.3 (--)
X-Debbugs-Envelope-To: 58558
Cc: 58558 <at> debbugs.gnu.org, larsi@HIDDEN, monnier@HIDDEN
X-BeenThere: debbugs-submit <at> debbugs.gnu.org
X-Mailman-Version: 2.1.18
Precedence: list
List-Id: <debbugs-submit.debbugs.gnu.org>
List-Unsubscribe: <https://debbugs.gnu.org/cgi-bin/mailman/options/debbugs-submit>, 
 <mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=unsubscribe>
List-Archive: <https://debbugs.gnu.org/cgi-bin/mailman/private/debbugs-submit/>
List-Post: <mailto:debbugs-submit <at> debbugs.gnu.org>
List-Help: <mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=help>
List-Subscribe: <https://debbugs.gnu.org/cgi-bin/mailman/listinfo/debbugs-submit>, 
 <mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=subscribe>
Errors-To: debbugs-submit-bounces <at> debbugs.gnu.org
Sender: "Debbugs-submit" <debbugs-submit-bounces <at> debbugs.gnu.org>
X-Spam-Score: -3.3 (---)

> From: Ihor Radchenko <yantar92@HIDDEN>
> Cc: Eli Zaretskii <eliz@HIDDEN>, monnier@HIDDEN,
>  58558 <at> debbugs.gnu.org
> Date: Tue, 13 Dec 2022 10:28:57 +0000
> 
> Ok. I got around to try perf, and it turned out to be very easy to get
> started.
> 
> perf record -p <PID> + perf report already appear to give some clue:
> 
>     88.27%  emacs    emacs-30-vcs                      [.] buf_bytepos_to_charpos
>      3.75%  emacs    emacs-30-vcs                      [.] re_match_2_internal
>      1.35%  emacs    emacs-30-vcs                      [.] scan_sexps_forward
>      1.03%  emacs    emacs-30-vcs                      [.] re_search_2
>      0.65%  emacs    emacs-30-vcs                      [.] find_interval
>      0.56%  emacs    emacs-30-vcs                      [.] sub_char_table_ref
>      0.55%  emacs    emacs-30-vcs                      [.] lookup_char_property
> 
> The fraction of buf_bytepos_to_charpos increases over repeated benchmark
> runs.

So buf_bytepos_to_charpos is the main suspect now, I guess.  This
could happen because either (a) buf_bytepos_to_charpos is called more
times as session uptime progresses, or (b) because each call to
buf_bytepos_to_charpos becomes more and more expensive.  So I think
the first question is: how many times is buf_bytepos_to_charpos called
for each search, or, equivalently, is the CPU time per call used up by
buf_bytepos_to_charpos stays stable or goes up?  I think perf can
answer these questions if you ask nicely.

If the number of calls is the same, but each call becomes more and
more expensive, then the next step is to ask perf to produce a
detailed profile for each line of buf_bytepos_to_charpos, and see
which parts of it become more expensive.  I could think about a couple
of possible reasons for that, but I'd rather not speculate about
profiles, as that is known to produce wrong guesses.

Is the buffer in question being edited as time advances?  Or is buffer
text and everything else in the buffer left unchanged?

> In contrast, using find-file-literally produces
> 
>     34.44%  emacs    emacs-30-vcs                             [.] re_match_2_internal
>     25.55%  emacs    emacs-30-vcs                             [.] scan_sexps_forward
>     11.09%  emacs    emacs-30-vcs                             [.] re_search_2
>     ...
>     0.59%  emacs    emacs-30-vcs                             [.] buf_bytepos_to_charpos
> 
> with buf_bytepos_to_charpos taking diminishing cpu sample fraction.

That find-file-literally yields a buffer with a much faster
buf_bytepos_to_charpos is not surprising: when each character is a
single byte, the conversion is trivial, and buf_bytepos_to_charpos
returns immediately.  The puzzling part is not that
buf_bytepos_to_charpos is much more expensive in a buffer with
non-ASCII text, the puzzle is why it becomes more and more expensive
with time.

Thanks.




Information forwarded to bug-gnu-emacs@HIDDEN:
bug#58558; Package emacs. Full text available.

Message received at 58558 <at> debbugs.gnu.org:


Received: (at 58558) by debbugs.gnu.org; 13 Dec 2022 10:29:10 +0000
From debbugs-submit-bounces <at> debbugs.gnu.org Tue Dec 13 05:29:10 2022
Received: from localhost ([127.0.0.1]:59524 helo=debbugs.gnu.org)
	by debbugs.gnu.org with esmtp (Exim 4.84_2)
	(envelope-from <debbugs-submit-bounces <at> debbugs.gnu.org>)
	id 1p52X8-0002xL-EB
	for submit <at> debbugs.gnu.org; Tue, 13 Dec 2022 05:29:10 -0500
Received: from mout01.posteo.de ([185.67.36.65]:53747)
 by debbugs.gnu.org with esmtp (Exim 4.84_2)
 (envelope-from <yantar92@HIDDEN>) id 1p52X6-0002xD-1E
 for 58558 <at> debbugs.gnu.org; Tue, 13 Dec 2022 05:29:08 -0500
Received: from submission (posteo.de [185.67.36.169]) 
 by mout01.posteo.de (Postfix) with ESMTPS id 58AA5240026
 for <58558 <at> debbugs.gnu.org>; Tue, 13 Dec 2022 11:28:59 +0100 (CET)
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=posteo.net; s=2017;
 t=1670927342; bh=7P/1u2v+wAN/M36sPthhzZ9CiCu9n71LWYXYmGhrYks=;
 h=From:To:Cc:Subject:Date:From;
 b=lOhC0BKgAJvXHPVP42YL7UntmHz5Bw+HdkWSZ2qaij64+tEhc0ENg+w23uuNj/K4o
 dfjGyodS3/ho+8Qw693RuN5M0kOsAlE4MikYzJcnt1DY9q7M9c8gUuVA82Pcsb7D3h
 MDS4C/d23+grvGuiCOGzm+EH6ITYG1aP9Zwxxsf1oqx06h9MbNGOcYPeNCrj69g+fA
 ZYE23imMtjDncSI1HYT1xDnGWi+LNTQSEGdwQVSAUEyRabre+3X6TdduMywsyPhmrp
 TuD+RvpoLJbqWJwv0+QAIoNK/X3L2U1bbpGTE1CmdG4ja7z7dzPBuDa1qzS1Z8dN2U
 xYsceM2qSMeUw==
Received: from customer (localhost [127.0.0.1])
 by submission (posteo.de) with ESMTPSA id 4NWZV24qYWz6tmB;
 Tue, 13 Dec 2022 11:28:58 +0100 (CET)
From: Ihor Radchenko <yantar92@HIDDEN>
To: Lars Ingebrigtsen <larsi@HIDDEN>
Subject: Re: bug#58558: 29.0.50; re-search-forward is slow in some buffers
In-Reply-To: <87wn8x9eqb.fsf@HIDDEN>
References: <877d10r21x.fsf@localhost> <87zgdwyvkt.fsf@HIDDEN>
 <87ilkk6ri5.fsf@localhost> <87v8okjei9.fsf@HIDDEN>
 <87tu44jdce.fsf@localhost> <87czasjd9j.fsf@HIDDEN>
 <87k050nio5.fsf@localhost> <87zgdwhw0z.fsf@HIDDEN>
 <83sfjo3tfw.fsf@HIDDEN> <jwvbkqbhnu8.fsf-monnier+emacs@HIDDEN>
 <878rlfjmjh.fsf@localhost> <87mt9tbbbp.fsf@HIDDEN>
 <8335bl18lo.fsf@HIDDEN> <87wn8x9eqb.fsf@HIDDEN>
Date: Tue, 13 Dec 2022 10:28:57 +0000
Message-ID: <87tu1zd2c6.fsf@localhost>
MIME-Version: 1.0
Content-Type: text/plain
X-Spam-Score: -2.3 (--)
X-Debbugs-Envelope-To: 58558
Cc: 58558 <at> debbugs.gnu.org, Eli Zaretskii <eliz@HIDDEN>,
 monnier@HIDDEN
X-BeenThere: debbugs-submit <at> debbugs.gnu.org
X-Mailman-Version: 2.1.18
Precedence: list
List-Id: <debbugs-submit.debbugs.gnu.org>
List-Unsubscribe: <https://debbugs.gnu.org/cgi-bin/mailman/options/debbugs-submit>, 
 <mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=unsubscribe>
List-Archive: <https://debbugs.gnu.org/cgi-bin/mailman/private/debbugs-submit/>
List-Post: <mailto:debbugs-submit <at> debbugs.gnu.org>
List-Help: <mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=help>
List-Subscribe: <https://debbugs.gnu.org/cgi-bin/mailman/listinfo/debbugs-submit>, 
 <mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=subscribe>
Errors-To: debbugs-submit-bounces <at> debbugs.gnu.org
Sender: "Debbugs-submit" <debbugs-submit-bounces <at> debbugs.gnu.org>
X-Spam-Score: -3.3 (---)

Lars Ingebrigtsen <larsi@HIDDEN> writes:

> I thought it might be easier to see the differences in results if one
> first attached perf to a fresh (fast) Emacs and got the trace, and the
> waited until Emacs got slow, and repeated the same thing under another
> trace.
>
> perf is able to do this by:
>
> perf record -p <PID> -g
>
> and
>
> perf report
>
> then shows me stuff, but I don't even know what to look for when
> interpreting that.  Or whether perf is, indeed, the right too for this
> task.

Ok. I got around to try perf, and it turned out to be very easy to get
started.

perf record -p <PID> + perf report already appear to give some clue:

    88.27%  emacs    emacs-30-vcs                      [.] buf_bytepos_to_charpos
     3.75%  emacs    emacs-30-vcs                      [.] re_match_2_internal
     1.35%  emacs    emacs-30-vcs                      [.] scan_sexps_forward
     1.03%  emacs    emacs-30-vcs                      [.] re_search_2
     0.65%  emacs    emacs-30-vcs                      [.] find_interval
     0.56%  emacs    emacs-30-vcs                      [.] sub_char_table_ref
     0.55%  emacs    emacs-30-vcs                      [.] lookup_char_property

The fraction of buf_bytepos_to_charpos increases over repeated benchmark
runs.

In contrast, using find-file-literally produces

    34.44%  emacs    emacs-30-vcs                             [.] re_match_2_internal
    25.55%  emacs    emacs-30-vcs                             [.] scan_sexps_forward
    11.09%  emacs    emacs-30-vcs                             [.] re_search_2
    ...
    0.59%  emacs    emacs-30-vcs                             [.] buf_bytepos_to_charpos

with buf_bytepos_to_charpos taking diminishing cpu sample fraction.

Any ideas what I can do further?

-- 
Ihor Radchenko // yantar92,
Org mode contributor,
Learn more about Org mode at <https://orgmode.org/>.
Support Org development at <https://liberapay.com/org-mode>,
or support my work at <https://liberapay.com/yantar92>




Information forwarded to bug-gnu-emacs@HIDDEN:
bug#58558; Package emacs. Full text available.

Message received at 58558 <at> debbugs.gnu.org:


Received: (at 58558) by debbugs.gnu.org; 18 Oct 2022 18:39:00 +0000
From debbugs-submit-bounces <at> debbugs.gnu.org Tue Oct 18 14:39:00 2022
Received: from localhost ([127.0.0.1]:54123 helo=debbugs.gnu.org)
	by debbugs.gnu.org with esmtp (Exim 4.84_2)
	(envelope-from <debbugs-submit-bounces <at> debbugs.gnu.org>)
	id 1okrUS-0000jm-9C
	for submit <at> debbugs.gnu.org; Tue, 18 Oct 2022 14:39:00 -0400
Received: from eggs.gnu.org ([209.51.188.92]:32926)
 by debbugs.gnu.org with esmtp (Exim 4.84_2)
 (envelope-from <eliz@HIDDEN>) id 1okrUP-0000jS-Fv
 for 58558 <at> debbugs.gnu.org; Tue, 18 Oct 2022 14:38:58 -0400
Received: from fencepost.gnu.org ([2001:470:142:3::e]:34458)
 by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256)
 (Exim 4.90_1) (envelope-from <eliz@HIDDEN>)
 id 1okrUH-00052y-1C; Tue, 18 Oct 2022 14:38:49 -0400
DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; d=gnu.org;
 s=fencepost-gnu-org; h=References:Subject:In-Reply-To:To:From:Date:
 mime-version; bh=Jxv66cXJXtKwPSfju0Oi72YtIbQ1bsNRA+jabmZktjs=; b=o9Fjbt+I80CA
 eVO2pVNsjQzxtK1F1/gLXWvRfCKkp3z+AfgOEd9I2oEpkQ3gTgXMsCWJf/ZGkPeVQQDm2pPGuBK//
 PEADRsgG+ZFIUE+GSKZ7p1lUBFzCldTU/k+E61lXVvQeJ7yur09D/z85JTr65ucxZLjq8kAfYV15J
 /Jz+vHtAkPoC/Rf62t6orwjYe1lYrOD5DTJlj6C3olHw16HVo00rUfFyMSDEooLdjHjwgTf1kIFA8
 GysByxph3Rr1cDh7bGLoK6PuC4XXt0KFLiOvVSKWhEfxIVZnE6M31JwJWIlk7c3vrkx/Q4gMOX0ao
 HZo/667loabwXastxDaVMQ==;
Received: from [87.69.77.57] (port=4994 helo=home-c4e4a596f7)
 by fencepost.gnu.org with esmtpsa (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256)
 (Exim 4.90_1) (envelope-from <eliz@HIDDEN>)
 id 1okrUG-000458-CN; Tue, 18 Oct 2022 14:38:48 -0400
Date: Tue, 18 Oct 2022 21:38:39 +0300
Message-Id: <83pmepyo28.fsf@HIDDEN>
From: Eli Zaretskii <eliz@HIDDEN>
To: Lars Ingebrigtsen <larsi@HIDDEN>
In-Reply-To: <87wn8x9eqb.fsf@HIDDEN> (message from Lars Ingebrigtsen on Tue, 
 18 Oct 2022 20:19:24 +0200)
Subject: Re: bug#58558: 29.0.50; re-search-forward is slow in some buffers
References: <877d10r21x.fsf@localhost> <87zgdwyvkt.fsf@HIDDEN>
 <87ilkk6ri5.fsf@localhost> <87v8okjei9.fsf@HIDDEN>
 <87tu44jdce.fsf@localhost> <87czasjd9j.fsf@HIDDEN>
 <87k050nio5.fsf@localhost> <87zgdwhw0z.fsf@HIDDEN>
 <83sfjo3tfw.fsf@HIDDEN> <jwvbkqbhnu8.fsf-monnier+emacs@HIDDEN>
 <878rlfjmjh.fsf@localhost> <87mt9tbbbp.fsf@HIDDEN>
 <8335bl18lo.fsf@HIDDEN> <87wn8x9eqb.fsf@HIDDEN>
X-Spam-Score: -2.3 (--)
X-Debbugs-Envelope-To: 58558
Cc: 58558 <at> debbugs.gnu.org, yantar92@HIDDEN, monnier@HIDDEN
X-BeenThere: debbugs-submit <at> debbugs.gnu.org
X-Mailman-Version: 2.1.18
Precedence: list
List-Id: <debbugs-submit.debbugs.gnu.org>
List-Unsubscribe: <https://debbugs.gnu.org/cgi-bin/mailman/options/debbugs-submit>, 
 <mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=unsubscribe>
List-Archive: <https://debbugs.gnu.org/cgi-bin/mailman/private/debbugs-submit/>
List-Post: <mailto:debbugs-submit <at> debbugs.gnu.org>
List-Help: <mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=help>
List-Subscribe: <https://debbugs.gnu.org/cgi-bin/mailman/listinfo/debbugs-submit>, 
 <mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=subscribe>
Errors-To: debbugs-submit-bounces <at> debbugs.gnu.org
Sender: "Debbugs-submit" <debbugs-submit-bounces <at> debbugs.gnu.org>
X-Spam-Score: -3.3 (---)

> From: Lars Ingebrigtsen <larsi@HIDDEN>
> Cc: yantar92@HIDDEN,  monnier@HIDDEN,  58558 <at> debbugs.gnu.org
> Date: Tue, 18 Oct 2022 20:19:24 +0200
> 
> > What did you try?  It was quite simple, AFAIR, last time I tried.
> 
> I thought it might be easier to see the differences in results if one
> first attached perf to a fresh (fast) Emacs and got the trace, and the
> waited until Emacs got slow, and repeated the same thing under another
> trace.
> 
> perf is able to do this by:
> 
> perf record -p <PID> -g

I never tried that, always started Emacs under perf to begin with.

> and
> 
> perf report
> 
> then shows me stuff, but I don't even know what to look for when
> interpreting that.

I thought you wanted to compare two or more profiles taken at
different times?  Then looking at percentages of the same functions
could tell something.  Since the complaint is about regexp search, I
guess re_compile_pattern and re_match_2_internal and their subroutines
would be the immediate suspects.  Or maybe re-search-forward, which is
a couple of levels higher.




Information forwarded to bug-gnu-emacs@HIDDEN:
bug#58558; Package emacs. Full text available.

Message received at 58558 <at> debbugs.gnu.org:


Received: (at 58558) by debbugs.gnu.org; 18 Oct 2022 18:19:37 +0000
From debbugs-submit-bounces <at> debbugs.gnu.org Tue Oct 18 14:19:37 2022
Received: from localhost ([127.0.0.1]:54093 helo=debbugs.gnu.org)
	by debbugs.gnu.org with esmtp (Exim 4.84_2)
	(envelope-from <debbugs-submit-bounces <at> debbugs.gnu.org>)
	id 1okrBg-0000EM-VL
	for submit <at> debbugs.gnu.org; Tue, 18 Oct 2022 14:19:37 -0400
Received: from quimby.gnus.org ([95.216.78.240]:41596)
 by debbugs.gnu.org with esmtp (Exim 4.84_2)
 (envelope-from <larsi@HIDDEN>) id 1okrBf-0000E8-Cm
 for 58558 <at> debbugs.gnu.org; Tue, 18 Oct 2022 14:19:36 -0400
DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; d=gnus.org;
 s=20200322; h=Content-Type:MIME-Version:Message-ID:Date:References:
 In-Reply-To:Subject:Cc:To:From:Sender:Reply-To:Content-Transfer-Encoding:
 Content-ID:Content-Description:Resent-Date:Resent-From:Resent-Sender:
 Resent-To:Resent-Cc:Resent-Message-ID:List-Id:List-Help:List-Unsubscribe:
 List-Subscribe:List-Post:List-Owner:List-Archive;
 bh=u1CoVgVvBECV8wRDRZlJgVJgy0k7vaincSvs+f2BHGI=; b=fG4CMoZtDCGn1RLZnfcI3YmxMY
 xTKNkDm5Y/IWtlP/HZGqXJV8t51nsx6K4NMjhXsK3yP3nnAV0/pfY834WeSc9GZvhSMV02ShVvFZo
 e4cS2bSML8cYvNhlXS/7dGAmVOKZy372WzgzokAjco/hdhWmclkAULw4aQ4CaaqLdeeM=;
Received: from [84.212.220.105] (helo=downe)
 by quimby.gnus.org with esmtpsa (TLS1.3:ECDHE_RSA_AES_256_GCM_SHA384:256)
 (Exim 4.92) (envelope-from <larsi@HIDDEN>)
 id 1okrBV-0005SL-EP; Tue, 18 Oct 2022 20:19:27 +0200
From: Lars Ingebrigtsen <larsi@HIDDEN>
To: Eli Zaretskii <eliz@HIDDEN>
Subject: Re: bug#58558: 29.0.50; re-search-forward is slow in some buffers
In-Reply-To: <8335bl18lo.fsf@HIDDEN> (Eli Zaretskii's message of "Tue, 18 Oct
 2022 17:58:59 +0300")
References: <877d10r21x.fsf@localhost> <87zgdwyvkt.fsf@HIDDEN>
 <87ilkk6ri5.fsf@localhost> <87v8okjei9.fsf@HIDDEN>
 <87tu44jdce.fsf@localhost> <87czasjd9j.fsf@HIDDEN>
 <87k050nio5.fsf@localhost> <87zgdwhw0z.fsf@HIDDEN>
 <83sfjo3tfw.fsf@HIDDEN> <jwvbkqbhnu8.fsf-monnier+emacs@HIDDEN>
 <878rlfjmjh.fsf@localhost> <87mt9tbbbp.fsf@HIDDEN>
 <8335bl18lo.fsf@HIDDEN>
Face: iVBORw0KGgoAAAANSUhEUgAAADAAAAAwBAMAAAClLOS0AAAABGdBTUEAALGPC/xhBQAAACBj
 SFJNAAB6JgAAgIQAAPoAAACA6AAAdTAAAOpgAAA6mAAAF3CculE8AAAAJFBMVEULCgshHh5QT08v
 Li+Pj4/Q0ND4+Pign55wcHCxsbE/Pj/////9TU4gAAAAAWJLR0QLH9fEwAAAAAd0SU1FB+YKEgsY
 IudH49YAAAGvSURBVDjLrZJLT8JAEICnLZDiadGIHCsEordWItFbYyJnYkKRGyId4IbxdW2iEI8m
 RIz/1t3u7HZBuDmH7WS+eXQeAFpKmVRrpcwOVgaagQm4MAoEi2XGg2YgSQo1sK8RsfeWJSV7JcL+
 6xfiI8WoVC6Oj0W2OT5YWTXOVxPyqMeeCc6nulZ7Yvykg6HWbUwycGh6tYaZvgoNYKOvVHfKnxNd
 ZfGptMK9iJJ+RwkUda5FSMAKWKsDTqxAxOgpYhzxPCtqZW+qaC5CnAE0ZhLkhjosj6KjckeCoqgN
 KJ4yj2Bk4G4DMa20YouP3qMUFEmg99P1wKVBlEVD1ncK0uy2CaTse2ugA+uiUhU2gSqev9sA6e8y
 6VD3DVAYSGCPjVG7SxqJGAQyyKsdiv29eATaCd+63LQTJTR2Acq8emOcbnAx4rUnCrhj4ToKwJmL
 wEZHAeDxkEPsIi7FLfkapBdTeca+uGm6JSYvJtFNOFGYfmVjjZEGSvXJ7YbslyqYRpHDW5HUOhXl
 TcA946eP9whVpAZwwU8H4yv4A8A6q9YYbAEbsgtY/wrYLhCUtiHH/wX511YbTcUDIgAAACV0RVh0
 ZGF0ZTpjcmVhdGUAMjAyMi0xMC0xOFQxMToyNDozNCswMDowMNjAwoAAAAAldEVYdGRhdGU6bW9k
 aWZ5ADIwMjItMTAtMThUMTE6MjQ6MzQrMDA6MDCpnXo8AAAAAElFTkSuQmCC
X-Now-Playing: Tuff City Kids's _#savefabric (10) (Mixed by Terry Francis)_:
 "Edlost"
Date: Tue, 18 Oct 2022 20:19:24 +0200
Message-ID: <87wn8x9eqb.fsf@HIDDEN>
User-Agent: Gnus/5.13 (Gnus v5.13)
MIME-Version: 1.0
Content-Type: text/plain
X-Spam-Report: Spam detection software, running on the system "quimby.gnus.org",
 has NOT identified this incoming email as spam.  The original
 message has been attached to this so you can view it or label
 similar future email.  If you have any questions, see
 @@CONTACT_ADDRESS@@ for details.
 Content preview:  Eli Zaretskii <eliz@HIDDEN> writes: >> I briefly tried to
 use "perf" under Linux to connect to a running >> Emacs and get some data
 out of it, but... er... I've never used it >> before, and... >> >> Does anybody
 have a recipe for how to [...] 
 Content analysis details:   (-2.9 points, 5.0 required)
 pts rule name              description
 ---- ---------------------- --------------------------------------------------
 -1.0 ALL_TRUSTED            Passed through trusted hosts only via SMTP
 -1.9 BAYES_00               BODY: Bayes spam probability is 0 to 1%
 [score: 0.0000]
X-Spam-Score: -2.3 (--)
X-Debbugs-Envelope-To: 58558
Cc: 58558 <at> debbugs.gnu.org, yantar92@HIDDEN, monnier@HIDDEN
X-BeenThere: debbugs-submit <at> debbugs.gnu.org
X-Mailman-Version: 2.1.18
Precedence: list
List-Id: <debbugs-submit.debbugs.gnu.org>
List-Unsubscribe: <https://debbugs.gnu.org/cgi-bin/mailman/options/debbugs-submit>, 
 <mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=unsubscribe>
List-Archive: <https://debbugs.gnu.org/cgi-bin/mailman/private/debbugs-submit/>
List-Post: <mailto:debbugs-submit <at> debbugs.gnu.org>
List-Help: <mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=help>
List-Subscribe: <https://debbugs.gnu.org/cgi-bin/mailman/listinfo/debbugs-submit>, 
 <mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=subscribe>
Errors-To: debbugs-submit-bounces <at> debbugs.gnu.org
Sender: "Debbugs-submit" <debbugs-submit-bounces <at> debbugs.gnu.org>
X-Spam-Score: -3.3 (---)

Eli Zaretskii <eliz@HIDDEN> writes:

>> I briefly tried to use "perf" under Linux to connect to a running
>> Emacs and get some data out of it, but...  er...  I've never used it
>> before, and...
>> 
>> Does anybody have a recipe for how to do runtime function tracing for a
>> running process?
>
> The way I run perf is to start Emacs under perf to begin with.
>
> What did you try?  It was quite simple, AFAIR, last time I tried.

I thought it might be easier to see the differences in results if one
first attached perf to a fresh (fast) Emacs and got the trace, and the
waited until Emacs got slow, and repeated the same thing under another
trace.

perf is able to do this by:

perf record -p <PID> -g

and

perf report

then shows me stuff, but I don't even know what to look for when
interpreting that.  Or whether perf is, indeed, the right too for this
task.




Information forwarded to bug-gnu-emacs@HIDDEN:
bug#58558; Package emacs. Full text available.

Message received at 58558 <at> debbugs.gnu.org:


Received: (at 58558) by debbugs.gnu.org; 18 Oct 2022 14:59:21 +0000
From debbugs-submit-bounces <at> debbugs.gnu.org Tue Oct 18 10:59:21 2022
Received: from localhost ([127.0.0.1]:53741 helo=debbugs.gnu.org)
	by debbugs.gnu.org with esmtp (Exim 4.84_2)
	(envelope-from <debbugs-submit-bounces <at> debbugs.gnu.org>)
	id 1oko3t-0007AW-4E
	for submit <at> debbugs.gnu.org; Tue, 18 Oct 2022 10:59:21 -0400
Received: from eggs.gnu.org ([209.51.188.92]:46130)
 by debbugs.gnu.org with esmtp (Exim 4.84_2)
 (envelope-from <eliz@HIDDEN>) id 1oko3m-0007A9-OP
 for 58558 <at> debbugs.gnu.org; Tue, 18 Oct 2022 10:59:19 -0400
Received: from fencepost.gnu.org ([2001:470:142:3::e]:55976)
 by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256)
 (Exim 4.90_1) (envelope-from <eliz@HIDDEN>)
 id 1oko3g-0003AO-O8; Tue, 18 Oct 2022 10:59:08 -0400
DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; d=gnu.org;
 s=fencepost-gnu-org; h=References:Subject:In-Reply-To:To:From:Date:
 mime-version; bh=RSnOL5uL1vkaapRINDibAocUHxIlkwzvCNT9wSLgGtY=; b=rSzo+mnvhFYp
 zEW22LOZlz54Mekvkqvz1O567ihvUguygf+CZd3hZKyqF2RQdIL3GG5jmUzzjiUSzz5x6F4WaIvDT
 zKq3UVX2Jr3adoPdjFyM0MITidTN+bsO3Uhg86TeJjoPfOWv3r+7xbYjqSzrtWVYMKY4wye8Z8E2b
 a+GD1eAWJNyTdcaE05kqNCHx8MRBMYKejYuw4rqeWRpMyjYIz/n5QIXf5j1dfOGe5l+ozAwKn5eiv
 Hw/uJxmAblPgraC9PkosaN4JTu+ye+qKVjvCEheancGfVCe5aTMG7GsITr0CZgGeLm/N1skB6r2KT
 POUTrABcVpK3WW4kkoXe1g==;
Received: from [87.69.77.57] (port=2977 helo=home-c4e4a596f7)
 by fencepost.gnu.org with esmtpsa (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256)
 (Exim 4.90_1) (envelope-from <eliz@HIDDEN>)
 id 1oko3f-0001BC-69; Tue, 18 Oct 2022 10:59:08 -0400
Date: Tue, 18 Oct 2022 17:58:59 +0300
Message-Id: <8335bl18lo.fsf@HIDDEN>
From: Eli Zaretskii <eliz@HIDDEN>
To: Lars Ingebrigtsen <larsi@HIDDEN>
In-Reply-To: <87mt9tbbbp.fsf@HIDDEN> (message from Lars Ingebrigtsen on Tue, 
 18 Oct 2022 13:50:02 +0200)
Subject: Re: bug#58558: 29.0.50; re-search-forward is slow in some buffers
References: <877d10r21x.fsf@localhost> <87zgdwyvkt.fsf@HIDDEN>
 <87ilkk6ri5.fsf@localhost> <87v8okjei9.fsf@HIDDEN>
 <87tu44jdce.fsf@localhost> <87czasjd9j.fsf@HIDDEN>
 <87k050nio5.fsf@localhost> <87zgdwhw0z.fsf@HIDDEN>
 <83sfjo3tfw.fsf@HIDDEN> <jwvbkqbhnu8.fsf-monnier+emacs@HIDDEN>
 <878rlfjmjh.fsf@localhost> <87mt9tbbbp.fsf@HIDDEN>
X-Spam-Score: -2.3 (--)
X-Debbugs-Envelope-To: 58558
Cc: 58558 <at> debbugs.gnu.org, yantar92@HIDDEN, monnier@HIDDEN
X-BeenThere: debbugs-submit <at> debbugs.gnu.org
X-Mailman-Version: 2.1.18
Precedence: list
List-Id: <debbugs-submit.debbugs.gnu.org>
List-Unsubscribe: <https://debbugs.gnu.org/cgi-bin/mailman/options/debbugs-submit>, 
 <mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=unsubscribe>
List-Archive: <https://debbugs.gnu.org/cgi-bin/mailman/private/debbugs-submit/>
List-Post: <mailto:debbugs-submit <at> debbugs.gnu.org>
List-Help: <mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=help>
List-Subscribe: <https://debbugs.gnu.org/cgi-bin/mailman/listinfo/debbugs-submit>, 
 <mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=subscribe>
Errors-To: debbugs-submit-bounces <at> debbugs.gnu.org
Sender: "Debbugs-submit" <debbugs-submit-bounces <at> debbugs.gnu.org>
X-Spam-Score: -3.3 (---)

> From: Lars Ingebrigtsen <larsi@HIDDEN>
> Cc: Stefan Monnier <monnier@HIDDEN>,  58558 <at> debbugs.gnu.org,  Eli
>  Zaretskii <eliz@HIDDEN>
> Date: Tue, 18 Oct 2022 13:50:02 +0200
> 
> The slowdowns are so dramatic that they should show up on a profiler --
> which might give us a clue which parts of Emacs is slowing down.

Right.

> I briefly tried to use "perf" under Linux to connect to a running
> Emacs and get some data out of it, but...  er...  I've never used it
> before, and...
> 
> Does anybody have a recipe for how to do runtime function tracing for a
> running process?

The way I run perf is to start Emacs under perf to begin with.

What did you try?  It was quite simple, AFAIR, last time I tried.




Information forwarded to bug-gnu-emacs@HIDDEN:
bug#58558; Package emacs. Full text available.

Message received at 58558 <at> debbugs.gnu.org:


Received: (at 58558) by debbugs.gnu.org; 18 Oct 2022 11:50:32 +0000
From debbugs-submit-bounces <at> debbugs.gnu.org Tue Oct 18 07:50:32 2022
Received: from localhost ([127.0.0.1]:51388 helo=debbugs.gnu.org)
	by debbugs.gnu.org with esmtp (Exim 4.84_2)
	(envelope-from <debbugs-submit-bounces <at> debbugs.gnu.org>)
	id 1okl78-0007rx-Qt
	for submit <at> debbugs.gnu.org; Tue, 18 Oct 2022 07:50:32 -0400
Received: from quimby.gnus.org ([95.216.78.240]:37528)
 by debbugs.gnu.org with esmtp (Exim 4.84_2)
 (envelope-from <larsi@HIDDEN>) id 1okl6r-0007r2-B9
 for 58558 <at> debbugs.gnu.org; Tue, 18 Oct 2022 07:50:28 -0400
DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; d=gnus.org;
 s=20200322; h=Content-Type:MIME-Version:Message-ID:Date:References:
 In-Reply-To:Subject:Cc:To:From:Sender:Reply-To:Content-Transfer-Encoding:
 Content-ID:Content-Description:Resent-Date:Resent-From:Resent-Sender:
 Resent-To:Resent-Cc:Resent-Message-ID:List-Id:List-Help:List-Unsubscribe:
 List-Subscribe:List-Post:List-Owner:List-Archive;
 bh=nrVJ4knk7rQ0dadzw+qvOU8JsDqaNEiraM2Iu44Jyrs=; b=OUGkKY6knNIng5plhr/cB4C+bw
 fGe5zLB2fLQISqctcbWc3XHF7K7/5jhzwsdh03nI1LI2J6Czzbn5NE07tWdkF1ZZcbijLSTjV4Dlr
 +W54KSFPrQAZM1zvl2psgSd5H5slo3bggtNIMhhFGQg5n6sI5KT7qbjkBZ8eh/I8+DrI=;
Received: from [84.212.220.105] (helo=downe)
 by quimby.gnus.org with esmtpsa (TLS1.3:ECDHE_RSA_AES_256_GCM_SHA384:256)
 (Exim 4.92) (envelope-from <larsi@HIDDEN>)
 id 1okl6g-0002L7-JU; Tue, 18 Oct 2022 13:50:04 +0200
From: Lars Ingebrigtsen <larsi@HIDDEN>
To: Ihor Radchenko <yantar92@HIDDEN>
Subject: Re: bug#58558: 29.0.50; re-search-forward is slow in some buffers
In-Reply-To: <878rlfjmjh.fsf@localhost> (Ihor Radchenko's message of "Mon, 17
 Oct 2022 00:56:02 +0000")
References: <877d10r21x.fsf@localhost> <87zgdwyvkt.fsf@HIDDEN>
 <87ilkk6ri5.fsf@localhost> <87v8okjei9.fsf@HIDDEN>
 <87tu44jdce.fsf@localhost> <87czasjd9j.fsf@HIDDEN>
 <87k050nio5.fsf@localhost> <87zgdwhw0z.fsf@HIDDEN>
 <83sfjo3tfw.fsf@HIDDEN> <jwvbkqbhnu8.fsf-monnier+emacs@HIDDEN>
 <878rlfjmjh.fsf@localhost>
X-Now-Playing: Bruce's _#savefabric (10) (Mixed by Terry Francis)_: "Cables"
Date: Tue, 18 Oct 2022 13:50:02 +0200
Message-ID: <87mt9tbbbp.fsf@HIDDEN>
User-Agent: Gnus/5.13 (Gnus v5.13)
MIME-Version: 1.0
Content-Type: text/plain
X-Spam-Report: Spam detection software, running on the system "quimby.gnus.org",
 has NOT identified this incoming email as spam.  The original
 message has been attached to this so you can view it or label
 similar future email.  If you have any questions, see
 @@CONTACT_ADDRESS@@ for details.
 Content preview: Ihor Radchenko <yantar92@HIDDEN> writes: > After 11 hours
 of Emacs uptime and some edits in the buffer (actually, > just a few hours;
 mostly idle), running the benchmark-progn > repetitively: > > ;; Elapsed
 time: 8.339753s > ;; Elapsed time: [...] 
 Content analysis details:   (-2.9 points, 5.0 required)
 pts rule name              description
 ---- ---------------------- --------------------------------------------------
 -1.0 ALL_TRUSTED            Passed through trusted hosts only via SMTP
 -1.9 BAYES_00               BODY: Bayes spam probability is 0 to 1%
 [score: 0.0000]
X-Spam-Score: 0.0 (/)
X-Debbugs-Envelope-To: 58558
Cc: 58558 <at> debbugs.gnu.org, Eli Zaretskii <eliz@HIDDEN>,
 Stefan Monnier <monnier@HIDDEN>
X-BeenThere: debbugs-submit <at> debbugs.gnu.org
X-Mailman-Version: 2.1.18
Precedence: list
List-Id: <debbugs-submit.debbugs.gnu.org>
List-Unsubscribe: <https://debbugs.gnu.org/cgi-bin/mailman/options/debbugs-submit>, 
 <mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=unsubscribe>
List-Archive: <https://debbugs.gnu.org/cgi-bin/mailman/private/debbugs-submit/>
List-Post: <mailto:debbugs-submit <at> debbugs.gnu.org>
List-Help: <mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=help>
List-Subscribe: <https://debbugs.gnu.org/cgi-bin/mailman/listinfo/debbugs-submit>, 
 <mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=subscribe>
Errors-To: debbugs-submit-bounces <at> debbugs.gnu.org
Sender: "Debbugs-submit" <debbugs-submit-bounces <at> debbugs.gnu.org>
X-Spam-Score: -3.3 (---)

Ihor Radchenko <yantar92@HIDDEN> writes:

> After 11 hours of Emacs uptime and some edits in the buffer (actually,
> just a few hours; mostly idle), running the benchmark-progn
> repetitively:
>
> ;; Elapsed time: 8.339753s
> ;; Elapsed time: 9.243140s
> ;; Elapsed time: 9.868761s
> ;; Elapsed time: 10.330362s
> ;; Elapsed time: 11.279218s
> ;; Elapsed time: 13.581893s
> ;; Elapsed time: 13.675609s
> ;; Elapsed time: 14.553157s
> ;; Elapsed time: 14.651782s
> ;; Elapsed time: 17.253983s
>
> The elapsed time gradually increases. It is definitely a clue, but very
> odd one.

The slowdowns are so dramatic that they should show up on a profiler --
which might give us a clue which parts of Emacs is slowing down.  I
briefly tried to use "perf" under Linux to connect to a running Emacs
and get some data out of it, but...  er...  I've never used it before,
and...

Does anybody have a recipe for how to do runtime function tracing for a
running process?




Information forwarded to bug-gnu-emacs@HIDDEN:
bug#58558; Package emacs. Full text available.

Message received at 58558 <at> debbugs.gnu.org:


Received: (at 58558) by debbugs.gnu.org; 17 Oct 2022 00:55:29 +0000
From debbugs-submit-bounces <at> debbugs.gnu.org Sun Oct 16 20:55:29 2022
Received: from localhost ([127.0.0.1]:46540 helo=debbugs.gnu.org)
	by debbugs.gnu.org with esmtp (Exim 4.84_2)
	(envelope-from <debbugs-submit-bounces <at> debbugs.gnu.org>)
	id 1okEPg-000413-KS
	for submit <at> debbugs.gnu.org; Sun, 16 Oct 2022 20:55:29 -0400
Received: from mout02.posteo.de ([185.67.36.66]:52851)
 by debbugs.gnu.org with esmtp (Exim 4.84_2)
 (envelope-from <yantar92@HIDDEN>) id 1okEPe-00040o-CO
 for 58558 <at> debbugs.gnu.org; Sun, 16 Oct 2022 20:55:27 -0400
Received: from submission (posteo.de [185.67.36.169]) 
 by mout02.posteo.de (Postfix) with ESMTPS id 80B1C240101
 for <58558 <at> debbugs.gnu.org>; Mon, 17 Oct 2022 02:55:17 +0200 (CEST)
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=posteo.net; s=2017;
 t=1665968120; bh=Ua1uNSRgC02dkCsGFpT4g+jpofzuKo8ga72BiMSbOfA=;
 h=From:To:Cc:Subject:Date:From;
 b=ORA6VovbEmrO0UC7NOHPqntH0qGQNWLBxIFm0CB3IMSbKi5KMaCtxL0XZwEuGCThi
 IvIt7OmWBDHf4FdbyXT276KLWtJIjQQ8GmS5TCHhh6RmI8eRtptJmt13wyn4F9MFtw
 yrG0OgYd2aYsWmtbZbLxfzefNq7nCAmNlIg5XO2+EZIEjUitr1taLxOhPacf9wxNJj
 54f17VIWS4rKACEQh1ZXTSJM7mgPMYPsJ0N8nrwoVFxRNS08ZrLbfxCpe6etU3ibuQ
 xgLgPqOzG/xeWeWZ0ADokkbf134wMgJS+2ZIsvy9MMEaDbqqRA3PeV0tIheh8CS4FX
 vdqfx8XyqnIZg==
Received: from customer (localhost [127.0.0.1])
 by submission (posteo.de) with ESMTPSA id 4MrJSM35ZDz6tmX;
 Mon, 17 Oct 2022 02:55:14 +0200 (CEST)
From: Ihor Radchenko <yantar92@HIDDEN>
To: Stefan Monnier <monnier@HIDDEN>
Subject: Re: bug#58558: 29.0.50; re-search-forward is slow in some buffers
In-Reply-To: <jwvbkqbhnu8.fsf-monnier+emacs@HIDDEN>
References: <877d10r21x.fsf@localhost> <87zgdwyvkt.fsf@HIDDEN>
 <87ilkk6ri5.fsf@localhost> <87v8okjei9.fsf@HIDDEN>
 <87tu44jdce.fsf@localhost> <87czasjd9j.fsf@HIDDEN>
 <87k050nio5.fsf@localhost> <87zgdwhw0z.fsf@HIDDEN>
 <83sfjo3tfw.fsf@HIDDEN> <jwvbkqbhnu8.fsf-monnier+emacs@HIDDEN>
Date: Mon, 17 Oct 2022 00:56:02 +0000
Message-ID: <878rlfjmjh.fsf@localhost>
MIME-Version: 1.0
Content-Type: text/plain
X-Spam-Score: -0.0 (/)
X-Debbugs-Envelope-To: 58558
Cc: 58558 <at> debbugs.gnu.org, Eli Zaretskii <eliz@HIDDEN>,
 Lars Ingebrigtsen <larsi@HIDDEN>
X-BeenThere: debbugs-submit <at> debbugs.gnu.org
X-Mailman-Version: 2.1.18
Precedence: list
List-Id: <debbugs-submit.debbugs.gnu.org>
List-Unsubscribe: <https://debbugs.gnu.org/cgi-bin/mailman/options/debbugs-submit>, 
 <mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=unsubscribe>
List-Archive: <https://debbugs.gnu.org/cgi-bin/mailman/private/debbugs-submit/>
List-Post: <mailto:debbugs-submit <at> debbugs.gnu.org>
List-Help: <mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=help>
List-Subscribe: <https://debbugs.gnu.org/cgi-bin/mailman/listinfo/debbugs-submit>, 
 <mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=subscribe>
Errors-To: debbugs-submit-bounces <at> debbugs.gnu.org
Sender: "Debbugs-submit" <debbugs-submit-bounces <at> debbugs.gnu.org>
X-Spam-Score: -1.0 (-)

Stefan Monnier <monnier@HIDDEN> writes:

> IIUC a summary of what we know so far:
> - the "yant/re" benchmark is ~20x slower in Emacs-29 than in Emacs-28.
> - removing all text properties reduces the factor down to about ~15x.
> - that difference is absent after a fresh start: it only appears over time.
>
> Since this benchmark always matches the same regexp, I can't imagine how
> the regexp cache could thrash, so it definitely seems to come from
> something else.
>
> I'd curious to know the result of the following tests:
>
> - Run the same benchmark twice in a row: does the second run take the
>   same time as the first, or is the second run significantly faster?
>   [ if it's faster it might be due to something like the on-the-fly
>     `syntax-propertize`ation.

After 11 hours of Emacs uptime and some edits in the buffer (actually,
just a few hours; mostly idle), running the benchmark-progn
repetitively:

;; Elapsed time: 8.339753s
;; Elapsed time: 9.243140s
;; Elapsed time: 9.868761s
;; Elapsed time: 10.330362s
;; Elapsed time: 11.279218s
;; Elapsed time: 13.581893s
;; Elapsed time: 13.675609s
;; Elapsed time: 14.553157s
;; Elapsed time: 14.651782s
;; Elapsed time: 17.253983s

The elapsed time gradually increases. It is definitely a clue, but very
odd one.

>     BTW, what does the profiler-start/report say?
>     Is the time 100% spent in `re-search-forward`?  ]

;; w CPU profiler
;; Elapsed time: 19.628828s

;; profiler:
;; 19954  99% - command-execute
;; 19926  99%  - funcall-interactively
;; 19627  98%   - eval-expression
;; 19627  98%    - let
;; 19627  98%     - progn
;; 19627  98%        while
;; ------------ no more data inside while ---------

Nothing useful. It's like while loop is doing something bad, but how so
in (benchmark-progn (while (re-search-forward yant/re nil t))) ??

I also tried find-file-literally and the timing gets back to fresh Emacs
(even faster):

;; find-file-literally
;; Elapsed time: 0.592935s

Then, I re-opened the file normally.

;; re-open the file
;; Elapsed time: 7.348727s

Note how the time is back to 7-8 seconds, but not same as fresh Emacs.

> - Try to reduce the number of "features" used in the regexp to see how
>   it affects the slow down.  Maybe try a "binary search" where you try
>   to reduce the regexp to something much simpler and see if some regexps
>   exhibit the slowdown while others don't?

Hmm. I tried a very simple regexp "^\\*+ " 10 times in a row:

;; Elapsed time: 0.267681s
;; Elapsed time: 0.381607s
;; Elapsed time: 0.342378s
;; Elapsed time: 0.350618s
;; Elapsed time: 0.376871s
;; Elapsed time: 0.446346s
;; Elapsed time: 0.472543s
;; Elapsed time: 0.529925s
;; Elapsed time: 0.604101s
;; Elapsed time: 0.665601s

It is generally faster, but still relatively slow and gets worse over
time.

-- 
Ihor Radchenko // yantar92,
Org mode contributor,
Learn more about Org mode at <https://orgmode.org/>.
Support Org development at <https://liberapay.com/org-mode>,
or support my work at <https://liberapay.com/yantar92>




Information forwarded to bug-gnu-emacs@HIDDEN:
bug#58558; Package emacs. Full text available.

Message received at 58558 <at> debbugs.gnu.org:


Received: (at 58558) by debbugs.gnu.org; 16 Oct 2022 14:23:55 +0000
From debbugs-submit-bounces <at> debbugs.gnu.org Sun Oct 16 10:23:55 2022
Received: from localhost ([127.0.0.1]:45849 helo=debbugs.gnu.org)
	by debbugs.gnu.org with esmtp (Exim 4.84_2)
	(envelope-from <debbugs-submit-bounces <at> debbugs.gnu.org>)
	id 1ok4YU-0003h5-SX
	for submit <at> debbugs.gnu.org; Sun, 16 Oct 2022 10:23:55 -0400
Received: from mailscanner.iro.umontreal.ca ([132.204.25.50]:16352)
 by debbugs.gnu.org with esmtp (Exim 4.84_2)
 (envelope-from <monnier@HIDDEN>) id 1ok4YT-0003gt-Ny
 for 58558 <at> debbugs.gnu.org; Sun, 16 Oct 2022 10:23:54 -0400
Received: from pmg2.iro.umontreal.ca (localhost.localdomain [127.0.0.1])
 by pmg2.iro.umontreal.ca (Proxmox) with ESMTP id 6266B807E9;
 Sun, 16 Oct 2022 10:23:48 -0400 (EDT)
Received: from mail01.iro.umontreal.ca (unknown [172.31.2.1])
 by pmg2.iro.umontreal.ca (Proxmox) with ESMTP id 0B1F9805B2;
 Sun, 16 Oct 2022 10:23:47 -0400 (EDT)
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=iro.umontreal.ca;
 s=mail; t=1665930227;
 bh=FKAjNhuF/pOAdEquOPHAUmV4pabgPbyDhTHbdeM6zx0=;
 h=From:To:Cc:Subject:In-Reply-To:References:Date:From;
 b=BzqzeYqjrhsZgjlYUA4wDAmn4pe7cdCBPkDKbOcUoDI0q1tla57aGAT4Q+FimSJzF
 XaUJ06G5dVS/lVwfG9SOKj/Cnu3uH63WHsqzg33SpP0EQb1g/+1KS7jQe+eibN/rw/
 P0h+RJml8W1NpM7dqJRaVT/IH5HhKw8cx4zuS5WIat/qazRGc8pTXRSVNsceq6IyLO
 5DnNyh7PGtvcVB1k4JQ/UYFRKU6NcuFHdChN0ZbdMWT11gcskmU/JrT8NPzD8scAsR
 UhxTL2hiZHXJBd2y/OG/BsZu1wY93TmA4fFYZmvNTAFJskxMppbkAdly287HK33ERn
 RDj5D80XAGq+w==
Received: from pastel (65-110-220-202.cpe.pppoe.ca [65.110.220.202])
 by mail01.iro.umontreal.ca (Postfix) with ESMTPSA id BFABD120F05;
 Sun, 16 Oct 2022 10:23:46 -0400 (EDT)
From: Stefan Monnier <monnier@HIDDEN>
To: Eli Zaretskii <eliz@HIDDEN>
Subject: Re: bug#58558: 29.0.50; re-search-forward is slow in some buffers
In-Reply-To: <83sfjo3tfw.fsf@HIDDEN> (Eli Zaretskii's message of "Sun, 16 Oct
 2022 14:21:23 +0300")
Message-ID: <jwvbkqbhnu8.fsf-monnier+emacs@HIDDEN>
References: <877d10r21x.fsf@localhost> <87zgdwyvkt.fsf@HIDDEN>
 <87ilkk6ri5.fsf@localhost> <87v8okjei9.fsf@HIDDEN>
 <87tu44jdce.fsf@localhost> <87czasjd9j.fsf@HIDDEN>
 <87k050nio5.fsf@localhost> <87zgdwhw0z.fsf@HIDDEN>
 <83sfjo3tfw.fsf@HIDDEN>
Date: Sun, 16 Oct 2022 10:23:45 -0400
User-Agent: Gnus/5.13 (Gnus v5.13) Emacs/29.0.50 (gnu/linux)
MIME-Version: 1.0
Content-Type: text/plain
X-SPAM-INFO: Spam detection results:  0
 ALL_TRUSTED                -1 Passed through trusted hosts only via SMTP
 AWL -0.125 Adjusted score from AWL reputation of From: address
 BAYES_00                 -1.9 Bayes spam probability is 0 to 1%
 DKIM_SIGNED               0.1 Message has a DKIM or DK signature,
 not necessarily valid
 DKIM_VALID -0.1 Message has at least one valid DKIM or DK signature
 DKIM_VALID_AU -0.1 Message has a valid DKIM or DK signature from author's
 domain
X-SPAM-LEVEL: 
X-Spam-Score: -2.3 (--)
X-Debbugs-Envelope-To: 58558
Cc: 58558 <at> debbugs.gnu.org, Lars Ingebrigtsen <larsi@HIDDEN>,
 yantar92@HIDDEN
X-BeenThere: debbugs-submit <at> debbugs.gnu.org
X-Mailman-Version: 2.1.18
Precedence: list
List-Id: <debbugs-submit.debbugs.gnu.org>
List-Unsubscribe: <https://debbugs.gnu.org/cgi-bin/mailman/options/debbugs-submit>, 
 <mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=unsubscribe>
List-Archive: <https://debbugs.gnu.org/cgi-bin/mailman/private/debbugs-submit/>
List-Post: <mailto:debbugs-submit <at> debbugs.gnu.org>
List-Help: <mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=help>
List-Subscribe: <https://debbugs.gnu.org/cgi-bin/mailman/listinfo/debbugs-submit>, 
 <mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=subscribe>
Errors-To: debbugs-submit-bounces <at> debbugs.gnu.org
Sender: "Debbugs-submit" <debbugs-submit-bounces <at> debbugs.gnu.org>
X-Spam-Score: -3.3 (---)

>> Huh, very odd.  Almost as something is...  fragmenting in the buffer?
>> We do have many caches and stuff -- perhaps something is...  degrading?
>> 
>> I guess some C-level perf measurements would be handy here, but that's
>> not something I know much about.  Anybody?
>
> AFAIU, we use elaborate caching for regular expressions, so maybe that
> is related.  Stefan, any ideas?

The regexp cache hasn't changed between 28 and 29, so that seems
unlikely to be the source of the problem.  But that cache is fairly
simple-minded, so it's possible that for some reason it thrashes in
Emacs-29 but not in Emacs-28 (but see below).

IIUC a summary of what we know so far:
- the "yant/re" benchmark is ~20x slower in Emacs-29 than in Emacs-28.
- removing all text properties reduces the factor down to about ~15x.
- that difference is absent after a fresh start: it only appears over time.

Since this benchmark always matches the same regexp, I can't imagine how
the regexp cache could thrash, so it definitely seems to come from
something else.

I'd curious to know the result of the following tests:

- Run the same benchmark twice in a row: does the second run take the
  same time as the first, or is the second run significantly faster?
  [ if it's faster it might be due to something like the on-the-fly
    `syntax-propertize`ation.
    BTW, what does the profiler-start/report say?
    Is the time 100% spent in `re-search-forward`?  ]
- Try to reduce the number of "features" used in the regexp to see how
  it affects the slow down.  Maybe try a "binary search" where you try
  to reduce the regexp to something much simpler and see if some regexps
  exhibit the slowdown while others don't?


        Stefan





Information forwarded to bug-gnu-emacs@HIDDEN:
bug#58558; Package emacs. Full text available.

Message received at 58558 <at> debbugs.gnu.org:


Received: (at 58558) by debbugs.gnu.org; 16 Oct 2022 11:21:45 +0000
From debbugs-submit-bounces <at> debbugs.gnu.org Sun Oct 16 07:21:45 2022
Received: from localhost ([127.0.0.1]:43547 helo=debbugs.gnu.org)
	by debbugs.gnu.org with esmtp (Exim 4.84_2)
	(envelope-from <debbugs-submit-bounces <at> debbugs.gnu.org>)
	id 1ok1iD-0008VD-3H
	for submit <at> debbugs.gnu.org; Sun, 16 Oct 2022 07:21:45 -0400
Received: from eggs.gnu.org ([209.51.188.92]:50224)
 by debbugs.gnu.org with esmtp (Exim 4.84_2)
 (envelope-from <eliz@HIDDEN>) id 1ok1iB-0008Uz-KG
 for 58558 <at> debbugs.gnu.org; Sun, 16 Oct 2022 07:21:43 -0400
Received: from fencepost.gnu.org ([2001:470:142:3::e]:50250)
 by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256)
 (Exim 4.90_1) (envelope-from <eliz@HIDDEN>)
 id 1ok1i6-0006YY-19; Sun, 16 Oct 2022 07:21:38 -0400
DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; d=gnu.org;
 s=fencepost-gnu-org; h=References:Subject:In-Reply-To:To:From:Date:
 mime-version; bh=lT+M0Q1bR44RiIEdLMtuBpLd26mtuSXxLK9lEGa0Pxk=; b=JbS2Pn3q8jAC
 FY3aGsm79LtdAbi39UkzSOajNH91D+DOAkKKd4l+T9mw/Jve8ePWf7K0IbAdGQRKAWtrVf+q3I3B+
 /xVgc+LUzKZ1q75ZGYh3U5SjUTSO4ocCv7A8BereMRxgr6gWkQwev9fma7W4c1tLZS0Ju1q1UWNJ1
 3ngUS6bEypH9D1RnBOHfF1ZzyYXfUPrk7IZdMR8LUVL/2IQ33VtCL6ArZeyTv+lJlG+dCe8Vo+hpn
 K5I8v5TGkbX0P6FJYVd8CYvyoNX2ioF3wb2MZQFEbyApAAAmKx9UEH0Zk+SJ3yVlp83jZDIWJYmzn
 sgJnuSVp4WDvw0Y1Z18zbw==;
Received: from [87.69.77.57] (port=4500 helo=home-c4e4a596f7)
 by fencepost.gnu.org with esmtpsa (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256)
 (Exim 4.90_1) (envelope-from <eliz@HIDDEN>)
 id 1ok1i4-0005co-7c; Sun, 16 Oct 2022 07:21:37 -0400
Date: Sun, 16 Oct 2022 14:21:23 +0300
Message-Id: <83sfjo3tfw.fsf@HIDDEN>
From: Eli Zaretskii <eliz@HIDDEN>
To: Lars Ingebrigtsen <larsi@HIDDEN>,
 Stefan Monnier <monnier@HIDDEN>
In-Reply-To: <87zgdwhw0z.fsf@HIDDEN> (message from Lars Ingebrigtsen on Sun, 
 16 Oct 2022 13:01:48 +0200)
Subject: Re: bug#58558: 29.0.50; re-search-forward is slow in some buffers
References: <877d10r21x.fsf@localhost> <87zgdwyvkt.fsf@HIDDEN>
 <87ilkk6ri5.fsf@localhost> <87v8okjei9.fsf@HIDDEN>
 <87tu44jdce.fsf@localhost> <87czasjd9j.fsf@HIDDEN>
 <87k050nio5.fsf@localhost> <87zgdwhw0z.fsf@HIDDEN>
X-Spam-Score: -2.3 (--)
X-Debbugs-Envelope-To: 58558
Cc: 58558 <at> debbugs.gnu.org, yantar92@HIDDEN
X-BeenThere: debbugs-submit <at> debbugs.gnu.org
X-Mailman-Version: 2.1.18
Precedence: list
List-Id: <debbugs-submit.debbugs.gnu.org>
List-Unsubscribe: <https://debbugs.gnu.org/cgi-bin/mailman/options/debbugs-submit>, 
 <mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=unsubscribe>
List-Archive: <https://debbugs.gnu.org/cgi-bin/mailman/private/debbugs-submit/>
List-Post: <mailto:debbugs-submit <at> debbugs.gnu.org>
List-Help: <mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=help>
List-Subscribe: <https://debbugs.gnu.org/cgi-bin/mailman/listinfo/debbugs-submit>, 
 <mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=subscribe>
Errors-To: debbugs-submit-bounces <at> debbugs.gnu.org
Sender: "Debbugs-submit" <debbugs-submit-bounces <at> debbugs.gnu.org>
X-Spam-Score: -3.3 (---)

> Cc: 58558 <at> debbugs.gnu.org
> From: Lars Ingebrigtsen <larsi@HIDDEN>
> Date: Sun, 16 Oct 2022 13:01:48 +0200
> 
> > I just switched between Emacs 28 and Emacs 29 and I do note that
> > right after loading Emacs and the Org file, Emacs 29 takes similar time
> > with Emacs 28.
> 
> Huh, very odd.  Almost as something is...  fragmenting in the buffer?
> We do have many caches and stuff -- perhaps something is...  degrading?
> 
> I guess some C-level perf measurements would be handy here, but that's
> not something I know much about.  Anybody?

AFAIU, we use elaborate caching for regular expressions, so maybe that
is related.  Stefan, any ideas?




Information forwarded to bug-gnu-emacs@HIDDEN:
bug#58558; Package emacs. Full text available.

Message received at 58558 <at> debbugs.gnu.org:


Received: (at 58558) by debbugs.gnu.org; 16 Oct 2022 11:02:01 +0000
From debbugs-submit-bounces <at> debbugs.gnu.org Sun Oct 16 07:02:01 2022
Received: from localhost ([127.0.0.1]:43522 helo=debbugs.gnu.org)
	by debbugs.gnu.org with esmtp (Exim 4.84_2)
	(envelope-from <debbugs-submit-bounces <at> debbugs.gnu.org>)
	id 1ok1P7-0007wf-4d
	for submit <at> debbugs.gnu.org; Sun, 16 Oct 2022 07:02:01 -0400
Received: from quimby.gnus.org ([95.216.78.240]:43110)
 by debbugs.gnu.org with esmtp (Exim 4.84_2)
 (envelope-from <larsi@HIDDEN>) id 1ok1P5-0007wS-7Y
 for 58558 <at> debbugs.gnu.org; Sun, 16 Oct 2022 07:01:59 -0400
DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; d=gnus.org;
 s=20200322; h=Content-Type:MIME-Version:Message-ID:Date:References:
 In-Reply-To:Subject:Cc:To:From:Sender:Reply-To:Content-Transfer-Encoding:
 Content-ID:Content-Description:Resent-Date:Resent-From:Resent-Sender:
 Resent-To:Resent-Cc:Resent-Message-ID:List-Id:List-Help:List-Unsubscribe:
 List-Subscribe:List-Post:List-Owner:List-Archive;
 bh=4BMJTS2Acxj+6Gwjye9oE+tyTZFwKSoxJWnjmTRvlk8=; b=bxKiR/e8YIJ15pIFyOK4TOSoPD
 8wAJ19+jaKtyzQvuQ3NR+cGlzOnY7PkF/PVkrSOhj9kc2TjuYoT3JgtNa8oQhf79ll0+ylwqwszfe
 yjJ0H8MTlwSDJyxLKouggsUs/VOGertlsQH0op4ByAAISWyhDNZ/QQ4HD7nkzjI7xSe8=;
Received: from [84.212.220.105] (helo=downe)
 by quimby.gnus.org with esmtpsa (TLS1.3:ECDHE_RSA_AES_256_GCM_SHA384:256)
 (Exim 4.92) (envelope-from <larsi@HIDDEN>)
 id 1ok1Ow-0005L2-Rr; Sun, 16 Oct 2022 13:01:52 +0200
From: Lars Ingebrigtsen <larsi@HIDDEN>
To: Ihor Radchenko <yantar92@HIDDEN>
Subject: Re: bug#58558: 29.0.50; re-search-forward is slow in some buffers
In-Reply-To: <87k050nio5.fsf@localhost> (Ihor Radchenko's message of "Sun, 16
 Oct 2022 10:53:46 +0000")
References: <877d10r21x.fsf@localhost> <87zgdwyvkt.fsf@HIDDEN>
 <87ilkk6ri5.fsf@localhost> <87v8okjei9.fsf@HIDDEN>
 <87tu44jdce.fsf@localhost> <87czasjd9j.fsf@HIDDEN>
 <87k050nio5.fsf@localhost>
Face: iVBORw0KGgoAAAANSUhEUgAAADAAAAAwCAMAAABg3Am1AAAABGdBTUEAALGPC/xhBQAAACBj
 SFJNAAB6JgAAgIQAAPoAAACA6AAAdTAAAOpgAAA6mAAAF3CculE8AAAAM1BMVEUTDw4QDAwMCQgR
 Dg8TERIiHR8vKyyvra9xbm/Fw8aPjY5ST1CCf4FIPD+Bfn2Bf3////8DrupAAAAAAWJLR0QQlbIN
 LAAAAAd0SU1FB+YKEAo7D7f6an4AAAE6SURBVEjHtZXZkgMhCEVBcIk9mfn/vx3cOp3EBasSyhgf
 7hHEBgHQGESQKQ28GojlCepKBgFb5yyztXlg4rLhwMB5H4IXC7cYozuBimU00e0PXIxH8KIN/icI
 MLUE3L2/+WLRL/TJBdgj/IbwJ7/jCCugpGfDUkhPKVgD2x72APy6h6+HJOotQL6lPYD3QkK7eWi+
 8x5gHZMSyNUjLlgWpAGkggFLipBIAaSta4kT8Qx47wdT4CwOIh1wgk1Pol8BT+WYgdmhO11sAuBJ
 kA54i6cZqOQXApT6CYD4Kqd6BTK456HX5EtKBWDQ6aupANHNgMn2auCCaAFM6akErI6Q9SDCoidV
 lii9tyUiHt/DKzkG6vtu2oNb5+E99DYwDx/6Vpk/pw3AlOx+Bhg9v5loQF9DXJqqLCgDxP86uBKd
 yVnQMwAAACV0RVh0ZGF0ZTpjcmVhdGUAMjAyMi0xMC0xNlQxMDo1OToxNSswMDowMB1Df1QAAAAl
 dEVYdGRhdGU6bW9kaWZ5ADIwMjItMTAtMTZUMTA6NTk6MTUrMDA6MDBsHsfoAAAAAElFTkSuQmCC
X-Now-Playing: Pet Shop Boys's _Fundamental_: "I made my excuses and left"
Date: Sun, 16 Oct 2022 13:01:48 +0200
Message-ID: <87zgdwhw0z.fsf@HIDDEN>
User-Agent: Gnus/5.13 (Gnus v5.13)
MIME-Version: 1.0
Content-Type: text/plain
X-Spam-Report: Spam detection software, running on the system "quimby.gnus.org",
 has NOT identified this incoming email as spam.  The original
 message has been attached to this so you can view it or label
 similar future email.  If you have any questions, see
 @@CONTACT_ADDRESS@@ for details.
 Content preview: > I just switched between Emacs 28 and Emacs 29 and I do note
 that > right after loading Emacs and the Org file, Emacs 29 takes similar
 time > with Emacs 28. Huh, very odd. Almost as something is... fragmenting
 in the buffer? We do have many caches and stuff -- perhaps something is...
 degrading? 
 Content analysis details:   (-2.9 points, 5.0 required)
 pts rule name              description
 ---- ---------------------- --------------------------------------------------
 -1.0 ALL_TRUSTED            Passed through trusted hosts only via SMTP
 -1.9 BAYES_00               BODY: Bayes spam probability is 0 to 1%
 [score: 0.0000]
X-Spam-Score: -2.3 (--)
X-Debbugs-Envelope-To: 58558
Cc: 58558 <at> debbugs.gnu.org
X-BeenThere: debbugs-submit <at> debbugs.gnu.org
X-Mailman-Version: 2.1.18
Precedence: list
List-Id: <debbugs-submit.debbugs.gnu.org>
List-Unsubscribe: <https://debbugs.gnu.org/cgi-bin/mailman/options/debbugs-submit>, 
 <mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=unsubscribe>
List-Archive: <https://debbugs.gnu.org/cgi-bin/mailman/private/debbugs-submit/>
List-Post: <mailto:debbugs-submit <at> debbugs.gnu.org>
List-Help: <mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=help>
List-Subscribe: <https://debbugs.gnu.org/cgi-bin/mailman/listinfo/debbugs-submit>, 
 <mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=subscribe>
Errors-To: debbugs-submit-bounces <at> debbugs.gnu.org
Sender: "Debbugs-submit" <debbugs-submit-bounces <at> debbugs.gnu.org>
X-Spam-Score: -3.3 (---)

> I just switched between Emacs 28 and Emacs 29 and I do note that
> right after loading Emacs and the Org file, Emacs 29 takes similar time
> with Emacs 28.

Huh, very odd.  Almost as something is...  fragmenting in the buffer?
We do have many caches and stuff -- perhaps something is...  degrading?

I guess some C-level perf measurements would be handy here, but that's
not something I know much about.  Anybody?





Information forwarded to bug-gnu-emacs@HIDDEN:
bug#58558; Package emacs. Full text available.

Message received at 58558 <at> debbugs.gnu.org:


Received: (at 58558) by debbugs.gnu.org; 16 Oct 2022 10:53:08 +0000
From debbugs-submit-bounces <at> debbugs.gnu.org Sun Oct 16 06:53:08 2022
Received: from localhost ([127.0.0.1]:43500 helo=debbugs.gnu.org)
	by debbugs.gnu.org with esmtp (Exim 4.84_2)
	(envelope-from <debbugs-submit-bounces <at> debbugs.gnu.org>)
	id 1ok1GW-0007dz-9z
	for submit <at> debbugs.gnu.org; Sun, 16 Oct 2022 06:53:08 -0400
Received: from mout02.posteo.de ([185.67.36.66]:49343)
 by debbugs.gnu.org with esmtp (Exim 4.84_2)
 (envelope-from <yantar92@HIDDEN>) id 1ok1GT-0007d7-Ca
 for 58558 <at> debbugs.gnu.org; Sun, 16 Oct 2022 06:53:06 -0400
Received: from submission (posteo.de [185.67.36.169]) 
 by mout02.posteo.de (Postfix) with ESMTPS id D3F3E240101
 for <58558 <at> debbugs.gnu.org>; Sun, 16 Oct 2022 12:52:59 +0200 (CEST)
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=posteo.net; s=2017;
 t=1665917579; bh=n+t8HB0o5L05o3MlSrx1zLL/3F29aBhcUhLwbGVE/BE=;
 h=From:To:Cc:Subject:Date:From;
 b=nfyZM9f4T93rOXkEQ8PmyjFGAPhX50JfuCNEapEhM4PIbpxy5YXgBNpyfm8LDvNUe
 tiDD7XfeOzpQ+bXyRFbogmYyzypuqNh3NQFMQ7kq/nUa0tUtF/4g3AQ1vZ0/OR0z4g
 Y0+AYgE9unH90SAGsYR09BWBehXQabfCd1R/F0Zid9o5BgeZ80md30f/719XaLGtfd
 LYcTx3FSjbr6iOfV3OF4q1L0/qSJChP4yb4q1RDvYDri+oaPwMChpw4BCRzOXlLzoo
 hvfVeygGIEedj3vNUz3i8J2waAVHGizd1AIF+89p/obkiEuG+afTHdemDPA6xcUiBx
 4PGVMVKA7eqcQ==
Received: from customer (localhost [127.0.0.1])
 by submission (posteo.de) with ESMTPSA id 4MqxmV3dkYz6tn5;
 Sun, 16 Oct 2022 12:52:57 +0200 (CEST)
From: Ihor Radchenko <yantar92@HIDDEN>
To: Lars Ingebrigtsen <larsi@HIDDEN>
Subject: Re: bug#58558: 29.0.50; re-search-forward is slow in some buffers
In-Reply-To: <87czasjd9j.fsf@HIDDEN>
References: <877d10r21x.fsf@localhost> <87zgdwyvkt.fsf@HIDDEN>
 <87ilkk6ri5.fsf@localhost> <87v8okjei9.fsf@HIDDEN>
 <87tu44jdce.fsf@localhost> <87czasjd9j.fsf@HIDDEN>
Date: Sun, 16 Oct 2022 10:53:46 +0000
Message-ID: <87k050nio5.fsf@localhost>
MIME-Version: 1.0
Content-Type: text/plain
X-Spam-Score: -0.0 (/)
X-Debbugs-Envelope-To: 58558
Cc: 58558 <at> debbugs.gnu.org
X-BeenThere: debbugs-submit <at> debbugs.gnu.org
X-Mailman-Version: 2.1.18
Precedence: list
List-Id: <debbugs-submit.debbugs.gnu.org>
List-Unsubscribe: <https://debbugs.gnu.org/cgi-bin/mailman/options/debbugs-submit>, 
 <mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=unsubscribe>
List-Archive: <https://debbugs.gnu.org/cgi-bin/mailman/private/debbugs-submit/>
List-Post: <mailto:debbugs-submit <at> debbugs.gnu.org>
List-Help: <mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=help>
List-Subscribe: <https://debbugs.gnu.org/cgi-bin/mailman/listinfo/debbugs-submit>, 
 <mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=subscribe>
Errors-To: debbugs-submit-bounces <at> debbugs.gnu.org
Sender: "Debbugs-submit" <debbugs-submit-bounces <at> debbugs.gnu.org>
X-Spam-Score: -1.0 (-)

Lars Ingebrigtsen <larsi@HIDDEN> writes:

>> The slowdown becomes slightly better, but nowhere close to Emacs 28:
>>
>> ;; Emacs 29
>> ;; Elapsed time: 16.953404s
>> ;; Emacs 29 + clean-mode
>> ;; Elapsed time: 13.290568s
>> ;; Emacs 28
>> ;; Elapsed time: 0.869748s
>
> Hm...  Another test -- could you try `find-file-literally' on the Org
> file and repeat the search?

I just switched between Emacs 28 and Emacs 29 and I do note that
right after loading Emacs and the Org file, Emacs 29 takes similar time
with Emacs 28.

I do know that things will get back to slow after a while. This problem
has been around on my machine for a long time.

I will report once I use Emacs long enough to observe the slowdown.

-- 
Ihor Radchenko // yantar92,
Org mode contributor,
Learn more about Org mode at <https://orgmode.org/>.
Support Org development at <https://liberapay.com/org-mode>,
or support my work at <https://liberapay.com/yantar92>




Information forwarded to bug-gnu-emacs@HIDDEN:
bug#58558; Package emacs. Full text available.

Message received at 58558 <at> debbugs.gnu.org:


Received: (at 58558) by debbugs.gnu.org; 16 Oct 2022 10:36:49 +0000
From debbugs-submit-bounces <at> debbugs.gnu.org Sun Oct 16 06:36:49 2022
Received: from localhost ([127.0.0.1]:43485 helo=debbugs.gnu.org)
	by debbugs.gnu.org with esmtp (Exim 4.84_2)
	(envelope-from <debbugs-submit-bounces <at> debbugs.gnu.org>)
	id 1ok10j-0004z0-Ap
	for submit <at> debbugs.gnu.org; Sun, 16 Oct 2022 06:36:49 -0400
Received: from eggs.gnu.org ([209.51.188.92]:54164)
 by debbugs.gnu.org with esmtp (Exim 4.84_2)
 (envelope-from <eliz@HIDDEN>) id 1ok10f-0004ym-Nc
 for 58558 <at> debbugs.gnu.org; Sun, 16 Oct 2022 06:36:47 -0400
Received: from fencepost.gnu.org ([2001:470:142:3::e]:55466)
 by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256)
 (Exim 4.90_1) (envelope-from <eliz@HIDDEN>)
 id 1ok10a-0007s8-DT; Sun, 16 Oct 2022 06:36:40 -0400
DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; d=gnu.org;
 s=fencepost-gnu-org; h=References:Subject:In-Reply-To:To:From:Date:
 mime-version; bh=mPKtnQDEUCSAoeFftseRZZS+1NiIPlBh/kxG2IlvFbw=; b=MMMlhR4kgIEY
 RBnAEFEjkFIHSIcJpeE6Honliw/LHrLVtRe2K317IiWFB2BojYueMLSwPAE6ueEr+dvN8kYTiA0uR
 v8A8m9UCvesk+fUy4GMmf+QlF68c+2xi/vzYxavkIE8tD7Q5So49f3gEEIV4+Rvsfwz8seCUSdOTj
 BzEFb7SQWx6HyWHgv0znU3066bScS8S5Ljtb7VkO8Jr9w4xODISNScXq5CrrAl7Bl04pgV90qAHUf
 d+waGQDUXbuz/lcfY2m8c47TjrxHeD9CRygrSYwtlI7Nxm6FxtYeH3N5nvn6vj1wEe21A6vpOBl7X
 wMOANwD3XIdc/f4UmNpomQ==;
Received: from [87.69.77.57] (port=1751 helo=home-c4e4a596f7)
 by fencepost.gnu.org with esmtpsa (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256)
 (Exim 4.90_1) (envelope-from <eliz@HIDDEN>)
 id 1ok10Z-0004Kd-SY; Sun, 16 Oct 2022 06:36:40 -0400
Date: Sun, 16 Oct 2022 13:36:26 +0300
Message-Id: <83wn903vit.fsf@HIDDEN>
From: Eli Zaretskii <eliz@HIDDEN>
To: Ihor Radchenko <yantar92@HIDDEN>
In-Reply-To: <87tu44jdce.fsf@localhost> (message from Ihor Radchenko on Sun,
 16 Oct 2022 10:02:25 +0000)
Subject: Re: bug#58558: 29.0.50; re-search-forward is slow in some buffers
References: <877d10r21x.fsf@localhost> <87zgdwyvkt.fsf@HIDDEN>
 <87ilkk6ri5.fsf@localhost> <87v8okjei9.fsf@HIDDEN>
 <87tu44jdce.fsf@localhost>
X-Spam-Score: -2.3 (--)
X-Debbugs-Envelope-To: 58558
Cc: 58558 <at> debbugs.gnu.org, larsi@HIDDEN
X-BeenThere: debbugs-submit <at> debbugs.gnu.org
X-Mailman-Version: 2.1.18
Precedence: list
List-Id: <debbugs-submit.debbugs.gnu.org>
List-Unsubscribe: <https://debbugs.gnu.org/cgi-bin/mailman/options/debbugs-submit>, 
 <mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=unsubscribe>
List-Archive: <https://debbugs.gnu.org/cgi-bin/mailman/private/debbugs-submit/>
List-Post: <mailto:debbugs-submit <at> debbugs.gnu.org>
List-Help: <mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=help>
List-Subscribe: <https://debbugs.gnu.org/cgi-bin/mailman/listinfo/debbugs-submit>, 
 <mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=subscribe>
Errors-To: debbugs-submit-bounces <at> debbugs.gnu.org
Sender: "Debbugs-submit" <debbugs-submit-bounces <at> debbugs.gnu.org>
X-Spam-Score: -3.3 (---)

> Cc: 58558 <at> debbugs.gnu.org
> From: Ihor Radchenko <yantar92@HIDDEN>
> Date: Sun, 16 Oct 2022 10:02:25 +0000
> 
> Lars Ingebrigtsen <larsi@HIDDEN> writes:
> 
> > If you switch the buffer to `clean-mode' (which should remove all text
> > props), does the slowdown disappear?  In that case, it seems likely that
> > the slowdown is connected to text properties, somehow.
> 
> The slowdown becomes slightly better, but nowhere close to Emacs 28:
> 
> ;; Emacs 29
> ;; Elapsed time: 16.953404s
> ;; Emacs 29 + clean-mode
> ;; Elapsed time: 13.290568s
> ;; Emacs 28
> ;; Elapsed time: 0.869748s
> 
> I did
> 
> (setq yant/re "\\(?:\\(?:\\<DEADLINE: *\\(\\(?:<\\(?:[[:digit:]]\\{4\\}-[[:digit:]]\\{2\\}-[[:digit:]]\\{2\\}\\(?: [[:alpha:]]+\\)?\\)\\(?: [[:digit:]]\\{1,2\\}:[[:digit:]]\\{2\\}\\(?:-[[:digit:]]\\{1,2\\}:[[:digit:]]\\{2\\}\\)?\\)?\\(?:\\(?: [+.:-]\\{1,2\\}[[:digit:]]+[dhmwy]\\(?:/[[:digit:]]+[dhmwy]\\)?\\)\\{1,2\\}\\)?>\\)\\)\\)\\|\\(?:\\(?:<\\(?:[[:digit:]]\\{4\\}-[[:digit:]]\\{2\\}-[[:digit:]]\\{2\\}\\(?: [[:alpha:]]+\\)?\\)\\(?: [[:digit:]]\\{1,2\\}:[[:digit:]]\\{2\\}\\(?:-[[:digit:]]\\{1,2\\}:[[:digit:]]\\{2\\}\\)?\\)?\\(?:\\(?: [+.:-]\\{1,2\\}[[:digit:]]+[dhmwy]\\(?:/[[:digit:]]+[dhmwy]\\)?\\)\\{1,2\\}\\)?>\\)\\|^\\*+[[:blank:]]+\\(?:[[:upper:]]+[[:blank:]]+\\)?\\[#A]\\|^[[:space:]]*:STYLE:[[:space:]]+habit[[:space:]]*$\\)\\)")
> (benchmark-progn (goto-char (point-min)) (while (re-search-forward yant/re nil t)))

AFAICT, the changes in regex-emacs.c between these two versions are
very minor, almost non-existent.  So it sounds like the reason is
somewhere else, not in regexp search per se.  But to be absolutely
sure, could you please try building Emacs 29 with regex-emacs.c from
Emacs 28, and see if the slowdown disappears or not?

Thanks.




Information forwarded to bug-gnu-emacs@HIDDEN:
bug#58558; Package emacs. Full text available.

Message received at 58558 <at> debbugs.gnu.org:


Received: (at 58558) by debbugs.gnu.org; 16 Oct 2022 10:04:20 +0000
From debbugs-submit-bounces <at> debbugs.gnu.org Sun Oct 16 06:04:20 2022
Received: from localhost ([127.0.0.1]:43446 helo=debbugs.gnu.org)
	by debbugs.gnu.org with esmtp (Exim 4.84_2)
	(envelope-from <debbugs-submit-bounces <at> debbugs.gnu.org>)
	id 1ok0VI-0003wn-24
	for submit <at> debbugs.gnu.org; Sun, 16 Oct 2022 06:04:20 -0400
Received: from quimby.gnus.org ([95.216.78.240]:42616)
 by debbugs.gnu.org with esmtp (Exim 4.84_2)
 (envelope-from <larsi@HIDDEN>) id 1ok0VF-0003wW-Bw
 for 58558 <at> debbugs.gnu.org; Sun, 16 Oct 2022 06:04:17 -0400
DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; d=gnus.org;
 s=20200322; h=Content-Type:MIME-Version:Message-ID:Date:References:
 In-Reply-To:Subject:Cc:To:From:Sender:Reply-To:Content-Transfer-Encoding:
 Content-ID:Content-Description:Resent-Date:Resent-From:Resent-Sender:
 Resent-To:Resent-Cc:Resent-Message-ID:List-Id:List-Help:List-Unsubscribe:
 List-Subscribe:List-Post:List-Owner:List-Archive;
 bh=JBDnVdQL1+lCi4h1RvFsoSI/MuhN5OjR+i85ip7l++E=; b=ESWR1DQVH9qAiZM1bswaMIIsDQ
 IHNTPvGRy7zuNK9tP++urEneOpy7JXqzcQLTR/DAveLG1mvt892c2y0rahJhTGKGFxMBU8Rbx8hHQ
 6KFbQLC50ObQPT1Urfs06NxCD1gB+WaBrpxmHpQ+ISXmyjH1Vr0pLICLgrA20EUz5/Tg=;
Received: from [84.212.220.105] (helo=downe)
 by quimby.gnus.org with esmtpsa (TLS1.3:ECDHE_RSA_AES_256_GCM_SHA384:256)
 (Exim 4.92) (envelope-from <larsi@HIDDEN>)
 id 1ok0V7-0004tU-5F; Sun, 16 Oct 2022 12:04:11 +0200
From: Lars Ingebrigtsen <larsi@HIDDEN>
To: Ihor Radchenko <yantar92@HIDDEN>
Subject: Re: bug#58558: 29.0.50; re-search-forward is slow in some buffers
In-Reply-To: <87tu44jdce.fsf@localhost> (Ihor Radchenko's message of "Sun, 16
 Oct 2022 10:02:25 +0000")
References: <877d10r21x.fsf@localhost> <87zgdwyvkt.fsf@HIDDEN>
 <87ilkk6ri5.fsf@localhost> <87v8okjei9.fsf@HIDDEN>
 <87tu44jdce.fsf@localhost>
Face: iVBORw0KGgoAAAANSUhEUgAAADAAAAAwBAMAAAClLOS0AAAABGdBTUEAALGPC/xhBQAAACBj
 SFJNAAB6JgAAgIQAAPoAAACA6AAAdTAAAOpgAAA6mAAAF3CculE8AAAAHlBMVEUeHh4jIyceHiEf
 ICUlJzUfHyAgIB4nLkAoMEL///+GCEy2AAAAAWJLR0QJ8dml7AAAAAd0SU1FB+YKEAoDBUCwP5sA
 AAFlSURBVDjLbZRNbgIxDIUDEgd4YLVbSE/QI7iyNHMN7hAJDjCLHrvj2M4PxWIR8vnZjrFJB+yW
 jvmY8ZVzTjmpXZFQ7ZwBERLBEdfTTX0NgNiA4GwXDkQUVMMIqqtMJLmgK0ZAAagSDkAyKUyTLJAw
 g8kEeq6A3ItJXGvgw93AnkIieQAIB9m/pAM1QOfqRKyiBnC5kBXi4NRql1KiEgU3r52W5fkollAl
 6e4usixFr0KS3Adb1BDAPH5ody8a+3sGmnSpisvnCPYAvIMiK0eHXHE32fYUB+zAfhHa6pEHEG+M
 Z7wq4tgA38MzOsxDufLbTiN4iKzbJr3cGIXH4gDeRLC/8LfoB13hXZd1Lc/tX3ejmj6ObRhs4jWQ
 Pp3nKYEviVQQPdEOI8INc2Xv7tPbwWCarM1u1FmPw7QPldqCtP3ogNt+4EXB46oxvwPz1vK85w3w
 9AeADjADMKb7DjwR3oBQmv0Btv7fI1gQMg8AAAAldEVYdGRhdGU6Y3JlYXRlADIwMjItMTAtMTZU
 MTA6MDM6MDUrMDA6MDC3nENBAAAAJXRFWHRkYXRlOm1vZGlmeQAyMDIyLTEwLTE2VDEwOjAzOjA1
 KzAwOjAwxsH7/QAAAABJRU5ErkJggg==
X-Now-Playing: The Knife's _Silent Shout_: "Silent Shout"
Date: Sun, 16 Oct 2022 12:04:08 +0200
Message-ID: <87czasjd9j.fsf@HIDDEN>
User-Agent: Gnus/5.13 (Gnus v5.13)
MIME-Version: 1.0
Content-Type: text/plain
X-Spam-Report: Spam detection software, running on the system "quimby.gnus.org",
 has NOT identified this incoming email as spam.  The original
 message has been attached to this so you can view it or label
 similar future email.  If you have any questions, see
 @@CONTACT_ADDRESS@@ for details.
 Content preview: Ihor Radchenko <yantar92@HIDDEN> writes: >> If you switch
 the buffer to `clean-mode' (which should remove all text >> props), does
 the slowdown disappear? In that case, it seems likely that >> the slowdown
 is connected to text properties, so [...] 
 Content analysis details:   (-2.9 points, 5.0 required)
 pts rule name              description
 ---- ---------------------- --------------------------------------------------
 -1.0 ALL_TRUSTED            Passed through trusted hosts only via SMTP
 -1.9 BAYES_00               BODY: Bayes spam probability is 0 to 1%
 [score: 0.0000]
X-Spam-Score: -2.3 (--)
X-Debbugs-Envelope-To: 58558
Cc: 58558 <at> debbugs.gnu.org
X-BeenThere: debbugs-submit <at> debbugs.gnu.org
X-Mailman-Version: 2.1.18
Precedence: list
List-Id: <debbugs-submit.debbugs.gnu.org>
List-Unsubscribe: <https://debbugs.gnu.org/cgi-bin/mailman/options/debbugs-submit>, 
 <mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=unsubscribe>
List-Archive: <https://debbugs.gnu.org/cgi-bin/mailman/private/debbugs-submit/>
List-Post: <mailto:debbugs-submit <at> debbugs.gnu.org>
List-Help: <mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=help>
List-Subscribe: <https://debbugs.gnu.org/cgi-bin/mailman/listinfo/debbugs-submit>, 
 <mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=subscribe>
Errors-To: debbugs-submit-bounces <at> debbugs.gnu.org
Sender: "Debbugs-submit" <debbugs-submit-bounces <at> debbugs.gnu.org>
X-Spam-Score: -3.3 (---)

Ihor Radchenko <yantar92@HIDDEN> writes:

>> If you switch the buffer to `clean-mode' (which should remove all text
>> props), does the slowdown disappear?  In that case, it seems likely that
>> the slowdown is connected to text properties, somehow.
>
> The slowdown becomes slightly better, but nowhere close to Emacs 28:
>
> ;; Emacs 29
> ;; Elapsed time: 16.953404s
> ;; Emacs 29 + clean-mode
> ;; Elapsed time: 13.290568s
> ;; Emacs 28
> ;; Elapsed time: 0.869748s

Hm...  Another test -- could you try `find-file-literally' on the Org
file and repeat the search?




Information forwarded to bug-gnu-emacs@HIDDEN:
bug#58558; Package emacs. Full text available.

Message received at 58558 <at> debbugs.gnu.org:


Received: (at 58558) by debbugs.gnu.org; 16 Oct 2022 10:01:50 +0000
From debbugs-submit-bounces <at> debbugs.gnu.org Sun Oct 16 06:01:50 2022
Received: from localhost ([127.0.0.1]:43442 helo=debbugs.gnu.org)
	by debbugs.gnu.org with esmtp (Exim 4.84_2)
	(envelope-from <debbugs-submit-bounces <at> debbugs.gnu.org>)
	id 1ok0Ss-0003sq-EG
	for submit <at> debbugs.gnu.org; Sun, 16 Oct 2022 06:01:50 -0400
Received: from mout02.posteo.de ([185.67.36.66]:55599)
 by debbugs.gnu.org with esmtp (Exim 4.84_2)
 (envelope-from <yantar92@HIDDEN>) id 1ok0Sp-0003sY-Nk
 for 58558 <at> debbugs.gnu.org; Sun, 16 Oct 2022 06:01:49 -0400
Received: from submission (posteo.de [185.67.36.169]) 
 by mout02.posteo.de (Postfix) with ESMTPS id A28B5240101
 for <58558 <at> debbugs.gnu.org>; Sun, 16 Oct 2022 12:01:39 +0200 (CEST)
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=posteo.net; s=2017;
 t=1665914501; bh=ipn9M8U1q0IW4OneNNRPmTHmWM5My+AqVpZ6d9e6bxQ=;
 h=From:To:Cc:Subject:Date:From;
 b=iYYqrwldnuAJZkQeh9YaewHt5q1UQqj376aI3/IeMrVktq2S3GVHnsKBg8ckxfWQZ
 AJs5Lj6CtPpV8/Pp1pMTEdkq/l8nwjwf/IXV/Q4Wdk0xGIARPKjbJSDkHXalZ12xQ+
 pxQ45/gbmGRQj6VANi74W84sF1hTBmH76rNT6HmUyk2UgYAQuRA626HzLULWnvh/GP
 vXUACh7tfRl5/+h2KhiqVIfG9gl1QXaXojATXx3lSTMjretgRuvsF9JQKOYlxXR2b+
 qmmcZz/YJalqRgy/5W8g7bbP3TekZz+ApYg3kewzS+2AJr7GEnZuwRbIopJnO/ITrZ
 S2oZ7I5WCMDbA==
Received: from customer (localhost [127.0.0.1])
 by submission (posteo.de) with ESMTPSA id 4MqwdF64LTz6tnk;
 Sun, 16 Oct 2022 12:01:37 +0200 (CEST)
From: Ihor Radchenko <yantar92@HIDDEN>
To: Lars Ingebrigtsen <larsi@HIDDEN>
Subject: Re: bug#58558: 29.0.50; re-search-forward is slow in some buffers
In-Reply-To: <87v8okjei9.fsf@HIDDEN>
References: <877d10r21x.fsf@localhost> <87zgdwyvkt.fsf@HIDDEN>
 <87ilkk6ri5.fsf@localhost> <87v8okjei9.fsf@HIDDEN>
Date: Sun, 16 Oct 2022 10:02:25 +0000
Message-ID: <87tu44jdce.fsf@localhost>
MIME-Version: 1.0
Content-Type: text/plain
X-Spam-Score: -0.0 (/)
X-Debbugs-Envelope-To: 58558
Cc: 58558 <at> debbugs.gnu.org
X-BeenThere: debbugs-submit <at> debbugs.gnu.org
X-Mailman-Version: 2.1.18
Precedence: list
List-Id: <debbugs-submit.debbugs.gnu.org>
List-Unsubscribe: <https://debbugs.gnu.org/cgi-bin/mailman/options/debbugs-submit>, 
 <mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=unsubscribe>
List-Archive: <https://debbugs.gnu.org/cgi-bin/mailman/private/debbugs-submit/>
List-Post: <mailto:debbugs-submit <at> debbugs.gnu.org>
List-Help: <mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=help>
List-Subscribe: <https://debbugs.gnu.org/cgi-bin/mailman/listinfo/debbugs-submit>, 
 <mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=subscribe>
Errors-To: debbugs-submit-bounces <at> debbugs.gnu.org
Sender: "Debbugs-submit" <debbugs-submit-bounces <at> debbugs.gnu.org>
X-Spam-Score: -1.0 (-)

Lars Ingebrigtsen <larsi@HIDDEN> writes:

> If you switch the buffer to `clean-mode' (which should remove all text
> props), does the slowdown disappear?  In that case, it seems likely that
> the slowdown is connected to text properties, somehow.

The slowdown becomes slightly better, but nowhere close to Emacs 28:

;; Emacs 29
;; Elapsed time: 16.953404s
;; Emacs 29 + clean-mode
;; Elapsed time: 13.290568s
;; Emacs 28
;; Elapsed time: 0.869748s

I did

(setq yant/re "\\(?:\\(?:\\<DEADLINE: *\\(\\(?:<\\(?:[[:digit:]]\\{4\\}-[[:digit:]]\\{2\\}-[[:digit:]]\\{2\\}\\(?: [[:alpha:]]+\\)?\\)\\(?: [[:digit:]]\\{1,2\\}:[[:digit:]]\\{2\\}\\(?:-[[:digit:]]\\{1,2\\}:[[:digit:]]\\{2\\}\\)?\\)?\\(?:\\(?: [+.:-]\\{1,2\\}[[:digit:]]+[dhmwy]\\(?:/[[:digit:]]+[dhmwy]\\)?\\)\\{1,2\\}\\)?>\\)\\)\\)\\|\\(?:\\(?:<\\(?:[[:digit:]]\\{4\\}-[[:digit:]]\\{2\\}-[[:digit:]]\\{2\\}\\(?: [[:alpha:]]+\\)?\\)\\(?: [[:digit:]]\\{1,2\\}:[[:digit:]]\\{2\\}\\(?:-[[:digit:]]\\{1,2\\}:[[:digit:]]\\{2\\}\\)?\\)?\\(?:\\(?: [+.:-]\\{1,2\\}[[:digit:]]+[dhmwy]\\(?:/[[:digit:]]+[dhmwy]\\)?\\)\\{1,2\\}\\)?>\\)\\|^\\*+[[:blank:]]+\\(?:[[:upper:]]+[[:blank:]]+\\)?\\[#A]\\|^[[:space:]]*:STYLE:[[:space:]]+habit[[:space:]]*$\\)\\)")
(benchmark-progn (goto-char (point-min)) (while (re-search-forward yant/re nil t)))

-- 
Ihor Radchenko // yantar92,
Org mode contributor,
Learn more about Org mode at <https://orgmode.org/>.
Support Org development at <https://liberapay.com/org-mode>,
or support my work at <https://liberapay.com/yantar92>




Information forwarded to bug-gnu-emacs@HIDDEN:
bug#58558; Package emacs. Full text available.

Message received at 58558 <at> debbugs.gnu.org:


Received: (at 58558) by debbugs.gnu.org; 16 Oct 2022 09:37:31 +0000
From debbugs-submit-bounces <at> debbugs.gnu.org Sun Oct 16 05:37:31 2022
Received: from localhost ([127.0.0.1]:43415 helo=debbugs.gnu.org)
	by debbugs.gnu.org with esmtp (Exim 4.84_2)
	(envelope-from <debbugs-submit-bounces <at> debbugs.gnu.org>)
	id 1ok05K-0000zX-Rf
	for submit <at> debbugs.gnu.org; Sun, 16 Oct 2022 05:37:31 -0400
Received: from quimby.gnus.org ([95.216.78.240]:42430)
 by debbugs.gnu.org with esmtp (Exim 4.84_2)
 (envelope-from <larsi@HIDDEN>) id 1ok05H-0000zI-Pv
 for 58558 <at> debbugs.gnu.org; Sun, 16 Oct 2022 05:37:28 -0400
DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; d=gnus.org;
 s=20200322; h=Content-Type:MIME-Version:Message-ID:Date:References:
 In-Reply-To:Subject:Cc:To:From:Sender:Reply-To:Content-Transfer-Encoding:
 Content-ID:Content-Description:Resent-Date:Resent-From:Resent-Sender:
 Resent-To:Resent-Cc:Resent-Message-ID:List-Id:List-Help:List-Unsubscribe:
 List-Subscribe:List-Post:List-Owner:List-Archive;
 bh=Qy/Fr7Xx0QmwL02rLStljtX3+vqKZdOBuMeMf7UJFQ4=; b=p6rmUG5ZTjdxHZp+z5tJwKNrSb
 wNP+CnCjm8MCKVX5roarxXl/J3oTgGC7Pndstrft0gUmzdltMD3pkqlz0QHpPcpWnpmJswN8513jq
 JMsK6pxXJ0pOeSndUlv+Z3K+CqvMZq/X3ZsFvLB48Hl5GdAlAZZWXr/dcfvtk0lWRXko=;
Received: from [84.212.220.105] (helo=downe)
 by quimby.gnus.org with esmtpsa (TLS1.3:ECDHE_RSA_AES_256_GCM_SHA384:256)
 (Exim 4.92) (envelope-from <larsi@HIDDEN>)
 id 1ok058-0004ep-KH; Sun, 16 Oct 2022 11:37:20 +0200
From: Lars Ingebrigtsen <larsi@HIDDEN>
To: Ihor Radchenko <yantar92@HIDDEN>
Subject: Re: bug#58558: 29.0.50; re-search-forward is slow in some buffers
In-Reply-To: <87ilkk6ri5.fsf@localhost> (Ihor Radchenko's message of "Sun, 16
 Oct 2022 09:34:58 +0000")
References: <877d10r21x.fsf@localhost> <87zgdwyvkt.fsf@HIDDEN>
 <87ilkk6ri5.fsf@localhost>
Face: iVBORw0KGgoAAAANSUhEUgAAADAAAAAwBAMAAAClLOS0AAAABGdBTUEAALGPC/xhBQAAACBj
 SFJNAAB6JgAAgIQAAPoAAACA6AAAdTAAAOpgAAA6mAAAF3CculE8AAAAElBMVEUiGBFINiJfTS9Z
 U0OVfVr////xyjrFAAAAAWJLR0QF+G/pxwAAAAd0SU1FB+YKEAkfBj2IjSUAAAGlSURBVDjLhVQL
 ksMgCAV7ASA9QCQeYI09wDb1/mda0DbNb2adzmjeEx4gFAAA2ZZq8RXtCOtyQnQqqsonwhjVyHui
 O1sXHJjhAm/+7g2mA/xxRidwnjzarBuy37zWBqBut/WEnThr7ImNI6R/iaGUs7Qj6MkfCAvJLW+5
 ZNjXKnpAfLMUdzrU0rwgDDcAoxFdbk2EJyQGupmExbASAVSBzB8O5JGvfoQkYpPx0PBLsFmZXYzy
 0772L0Ws3AjaButK1lri2hrjtljtpHM0j7R8Cf4QaXSxras3kQ3UvEu9EXm07fHcxQShqBUSlR6/
 Dt2aRiAoBRacMVTtBH50hkJVnoh539VmIUuV3x7LPb6rKEYwaLJBsBNa6RoR2juJZV5Z55lE3+0l
 AhDLnBYbHCKUoQ5jt7CNx5BqzexjJfNbORARl0etdZRUNUuU7ipAeqLdr3XRWv2n3RUFe1k2JjVO
 lyjcCuuOQTQ+7KqvqL2FsG3Ekl4OaiRpCFqDup1o1aLzZ9q/RWGe7KYexqd9ptfxn6GPjEyvfDE6
 Vvdcn1fjaSrWgyv+B4kPPMqT/iDoAAAAJXRFWHRkYXRlOmNyZWF0ZQAyMDIyLTEwLTE2VDA5OjMx
 OjA1KzAwOjAwMBEe4wAAACV0RVh0ZGF0ZTptb2RpZnkAMjAyMi0xMC0xNlQwOTozMTowNSswMDow
 MEFMpl8AAAAASUVORK5CYII=
X-Now-Playing: Tracey Thorn's _Out Of The Woods_: "Easy"
Date: Sun, 16 Oct 2022 11:37:18 +0200
Message-ID: <87v8okjei9.fsf@HIDDEN>
User-Agent: Gnus/5.13 (Gnus v5.13)
MIME-Version: 1.0
Content-Type: text/plain
X-Spam-Report: Spam detection software, running on the system "quimby.gnus.org",
 has NOT identified this incoming email as spam.  The original
 message has been attached to this so you can view it or label
 similar future email.  If you have any questions, see
 @@CONTACT_ADDRESS@@ for details.
 Content preview: Ihor Radchenko <yantar92@HIDDEN> writes: >> Is there
 anything
 special about buffers where you see these slowdowns? > > This is a large
 complex Org buffer. > >> For instance, a large number of text properties or
 overlays? >> >> (length (objec [...] 
 Content analysis details:   (-2.9 points, 5.0 required)
 pts rule name              description
 ---- ---------------------- --------------------------------------------------
 -1.0 ALL_TRUSTED            Passed through trusted hosts only via SMTP
 -1.9 BAYES_00               BODY: Bayes spam probability is 0 to 1%
 [score: 0.0000]
X-Spam-Score: -2.3 (--)
X-Debbugs-Envelope-To: 58558
Cc: 58558 <at> debbugs.gnu.org
X-BeenThere: debbugs-submit <at> debbugs.gnu.org
X-Mailman-Version: 2.1.18
Precedence: list
List-Id: <debbugs-submit.debbugs.gnu.org>
List-Unsubscribe: <https://debbugs.gnu.org/cgi-bin/mailman/options/debbugs-submit>, 
 <mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=unsubscribe>
List-Archive: <https://debbugs.gnu.org/cgi-bin/mailman/private/debbugs-submit/>
List-Post: <mailto:debbugs-submit <at> debbugs.gnu.org>
List-Help: <mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=help>
List-Subscribe: <https://debbugs.gnu.org/cgi-bin/mailman/listinfo/debbugs-submit>, 
 <mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=subscribe>
Errors-To: debbugs-submit-bounces <at> debbugs.gnu.org
Sender: "Debbugs-submit" <debbugs-submit-bounces <at> debbugs.gnu.org>
X-Spam-Score: -3.3 (---)

Ihor Radchenko <yantar92@HIDDEN> writes:

>> Is there anything special about buffers where you see these slowdowns?
>
> This is a large complex Org buffer.
>
>> For instance, a large number of text properties or overlays?
>>
>> (length (object-intervals (current-buffer)))
>
> => 101075 (took over 10sec to complete the command)

If you switch the buffer to `clean-mode' (which should remove all text
props), does the slowdown disappear?  In that case, it seems likely that
the slowdown is connected to text properties, somehow.




Information forwarded to bug-gnu-emacs@HIDDEN:
bug#58558; Package emacs. Full text available.

Message received at 58558 <at> debbugs.gnu.org:


Received: (at 58558) by debbugs.gnu.org; 16 Oct 2022 09:34:22 +0000
From debbugs-submit-bounces <at> debbugs.gnu.org Sun Oct 16 05:34:22 2022
Received: from localhost ([127.0.0.1]:43405 helo=debbugs.gnu.org)
	by debbugs.gnu.org with esmtp (Exim 4.84_2)
	(envelope-from <debbugs-submit-bounces <at> debbugs.gnu.org>)
	id 1ok02H-0000uG-Px
	for submit <at> debbugs.gnu.org; Sun, 16 Oct 2022 05:34:22 -0400
Received: from mout02.posteo.de ([185.67.36.66]:36709)
 by debbugs.gnu.org with esmtp (Exim 4.84_2)
 (envelope-from <yantar92@HIDDEN>) id 1ok02E-0000u0-Ul
 for 58558 <at> debbugs.gnu.org; Sun, 16 Oct 2022 05:34:20 -0400
Received: from submission (posteo.de [185.67.36.169]) 
 by mout02.posteo.de (Postfix) with ESMTPS id 1A117240101
 for <58558 <at> debbugs.gnu.org>; Sun, 16 Oct 2022 11:34:12 +0200 (CEST)
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=posteo.net; s=2017;
 t=1665912853; bh=b1XP0s2pDMGhZ//qTG4aqVqCUsq0w93GeDGJByczsRU=;
 h=From:To:Cc:Subject:Date:From;
 b=UoFJw8UD6UD8V52g2b6hQuTJ0253l2aYLM5qEX1nExdVju0R1qISqWuiOS1y37v14
 b2D63QKnYGFZMwxQXuyBoGZXJHNL/T+Ci1QEGKoHlDu0aPsjAhUgNjKl9+BHj46uJ6
 I1wvsCttF+rHkYq1WkSMi7DzoT++sL31Z2DBIs4qTSot1EY6aXo5UVBn3D2UFj4DBz
 bWDHhGuQONrIW6DbvfqgLUr/knJDLFqrMy38p1vFLQWuquvcA2ndPQwUdktOrOJtW9
 HvsTxwA0ZG/eXQ+4X2Nhv/GgvMdKmh48gaBPn73dU5ZRpj+CRjikP/RoiaOmRuwlIv
 1QSkjNYS3YIUw==
Received: from customer (localhost [127.0.0.1])
 by submission (posteo.de) with ESMTPSA id 4Mqw1Z5bvvz9rxF;
 Sun, 16 Oct 2022 11:34:10 +0200 (CEST)
From: Ihor Radchenko <yantar92@HIDDEN>
To: Lars Ingebrigtsen <larsi@HIDDEN>
Subject: Re: bug#58558: 29.0.50; re-search-forward is slow in some buffers
In-Reply-To: <87zgdwyvkt.fsf@HIDDEN>
References: <877d10r21x.fsf@localhost> <87zgdwyvkt.fsf@HIDDEN>
Date: Sun, 16 Oct 2022 09:34:58 +0000
Message-ID: <87ilkk6ri5.fsf@localhost>
MIME-Version: 1.0
Content-Type: text/plain
X-Spam-Score: -0.0 (/)
X-Debbugs-Envelope-To: 58558
Cc: 58558 <at> debbugs.gnu.org
X-BeenThere: debbugs-submit <at> debbugs.gnu.org
X-Mailman-Version: 2.1.18
Precedence: list
List-Id: <debbugs-submit.debbugs.gnu.org>
List-Unsubscribe: <https://debbugs.gnu.org/cgi-bin/mailman/options/debbugs-submit>, 
 <mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=unsubscribe>
List-Archive: <https://debbugs.gnu.org/cgi-bin/mailman/private/debbugs-submit/>
List-Post: <mailto:debbugs-submit <at> debbugs.gnu.org>
List-Help: <mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=help>
List-Subscribe: <https://debbugs.gnu.org/cgi-bin/mailman/listinfo/debbugs-submit>, 
 <mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=subscribe>
Errors-To: debbugs-submit-bounces <at> debbugs.gnu.org
Sender: "Debbugs-submit" <debbugs-submit-bounces <at> debbugs.gnu.org>
X-Spam-Score: -1.0 (-)

Lars Ingebrigtsen <larsi@HIDDEN> writes:

>> It happens consistently in Emacs 29, but not in all buffers. Sometimes,
>> it only happens after some time after Emacs startup. The slowdown is not
>> there in Emacs 28.
>
> Is there anything special about buffers where you see these slowdowns?

This is a large complex Org buffer.

> For instance, a large number of text properties or overlays?
>
> (length (object-intervals (current-buffer)))

=> 101075 (took over 10sec to complete the command)

> will tell you how many text properties there are (sort of), and
>
> (length (overlays-in (point-min) (point-max)))
>
> should tell you the same for overlays.

=> 1

-- 
Ihor Radchenko // yantar92,
Org mode contributor,
Learn more about Org mode at <https://orgmode.org/>.
Support Org development at <https://liberapay.com/org-mode>,
or support my work at <https://liberapay.com/yantar92>




Information forwarded to bug-gnu-emacs@HIDDEN:
bug#58558; Package emacs. Full text available.

Message received at 58558 <at> debbugs.gnu.org:


Received: (at 58558) by debbugs.gnu.org; 16 Oct 2022 09:19:57 +0000
From debbugs-submit-bounces <at> debbugs.gnu.org Sun Oct 16 05:19:57 2022
Received: from localhost ([127.0.0.1]:43366 helo=debbugs.gnu.org)
	by debbugs.gnu.org with esmtp (Exim 4.84_2)
	(envelope-from <debbugs-submit-bounces <at> debbugs.gnu.org>)
	id 1ojzoK-0006gs-2z
	for submit <at> debbugs.gnu.org; Sun, 16 Oct 2022 05:19:57 -0400
Received: from quimby.gnus.org ([95.216.78.240]:42116)
 by debbugs.gnu.org with esmtp (Exim 4.84_2)
 (envelope-from <larsi@HIDDEN>) id 1ojzo3-0006gG-G0
 for 58558 <at> debbugs.gnu.org; Sun, 16 Oct 2022 05:19:54 -0400
DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; d=gnus.org;
 s=20200322; h=Content-Type:MIME-Version:Message-ID:Date:References:
 In-Reply-To:Subject:Cc:To:From:Sender:Reply-To:Content-Transfer-Encoding:
 Content-ID:Content-Description:Resent-Date:Resent-From:Resent-Sender:
 Resent-To:Resent-Cc:Resent-Message-ID:List-Id:List-Help:List-Unsubscribe:
 List-Subscribe:List-Post:List-Owner:List-Archive;
 bh=aas4gJX+/cufnPWpldS6PNn0jB5bcPHssMbfuo0oy3o=; b=nMWLMWIcqS/P7EoNpN3hTjSMFR
 o8/kXSZxkLph5mPuVXeJt13bEGZ13Qq7RvjW6MejgU63c7YByJ32NpXZqMq9B9vNev1v1+4EvfAko
 Q1E/5oi18sNyzEd+k9e7k3R0YUpTXH9UecgssdeJNo5GIt3+ku206lKQ2JD243ZD9rcM=;
Received: from [84.212.220.105] (helo=downe)
 by quimby.gnus.org with esmtpsa (TLS1.3:ECDHE_RSA_AES_256_GCM_SHA384:256)
 (Exim 4.92) (envelope-from <larsi@HIDDEN>)
 id 1ojznv-0004Uj-1c; Sun, 16 Oct 2022 11:19:33 +0200
From: Lars Ingebrigtsen <larsi@HIDDEN>
To: Ihor Radchenko <yantar92@HIDDEN>
Subject: Re: bug#58558: 29.0.50; re-search-forward is slow in some buffers
In-Reply-To: <877d10r21x.fsf@localhost> (Ihor Radchenko's message of "Sun, 16
 Oct 2022 01:26:50 +0000")
References: <877d10r21x.fsf@localhost>
X-Now-Playing: Tracey Thorn's _Out Of The Woods_: "Here It Comes Again"
Date: Sun, 16 Oct 2022 11:19:30 +0200
Message-ID: <87zgdwyvkt.fsf@HIDDEN>
User-Agent: Gnus/5.13 (Gnus v5.13)
MIME-Version: 1.0
Content-Type: text/plain
X-Spam-Report: Spam detection software, running on the system "quimby.gnus.org",
 has NOT identified this incoming email as spam.  The original
 message has been attached to this so you can view it or label
 similar future email.  If you have any questions, see
 @@CONTACT_ADDRESS@@ for details.
 Content preview:  Ihor Radchenko <yantar92@HIDDEN> writes: > It happens
 consistently in Emacs 29, but not in all buffers. Sometimes, > it only happens
 after some time after Emacs startup. The slowdown is not > there in Emacs
 28. Content analysis details:   (-2.9 points, 5.0 required)
 pts rule name              description
 ---- ---------------------- --------------------------------------------------
 -1.0 ALL_TRUSTED            Passed through trusted hosts only via SMTP
 -1.9 BAYES_00               BODY: Bayes spam probability is 0 to 1%
 [score: 0.0000]
X-Spam-Score: 0.0 (/)
X-Debbugs-Envelope-To: 58558
Cc: 58558 <at> debbugs.gnu.org
X-BeenThere: debbugs-submit <at> debbugs.gnu.org
X-Mailman-Version: 2.1.18
Precedence: list
List-Id: <debbugs-submit.debbugs.gnu.org>
List-Unsubscribe: <https://debbugs.gnu.org/cgi-bin/mailman/options/debbugs-submit>, 
 <mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=unsubscribe>
List-Archive: <https://debbugs.gnu.org/cgi-bin/mailman/private/debbugs-submit/>
List-Post: <mailto:debbugs-submit <at> debbugs.gnu.org>
List-Help: <mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=help>
List-Subscribe: <https://debbugs.gnu.org/cgi-bin/mailman/listinfo/debbugs-submit>, 
 <mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=subscribe>
Errors-To: debbugs-submit-bounces <at> debbugs.gnu.org
Sender: "Debbugs-submit" <debbugs-submit-bounces <at> debbugs.gnu.org>
X-Spam-Score: -3.3 (---)

Ihor Radchenko <yantar92@HIDDEN> writes:

> It happens consistently in Emacs 29, but not in all buffers. Sometimes,
> it only happens after some time after Emacs startup. The slowdown is not
> there in Emacs 28.

Is there anything special about buffers where you see these slowdowns?
For instance, a large number of text properties or overlays?

(length (object-intervals (current-buffer)))

will tell you how many text properties there are (sort of), and

(length (overlays-in (point-min) (point-max)))

should tell you the same for overlays.




Information forwarded to bug-gnu-emacs@HIDDEN:
bug#58558; Package emacs. Full text available.

Message received at submit <at> debbugs.gnu.org:


Received: (at submit) by debbugs.gnu.org; 16 Oct 2022 01:26:17 +0000
From debbugs-submit-bounces <at> debbugs.gnu.org Sat Oct 15 21:26:17 2022
Received: from localhost ([127.0.0.1]:42844 helo=debbugs.gnu.org)
	by debbugs.gnu.org with esmtp (Exim 4.84_2)
	(envelope-from <debbugs-submit-bounces <at> debbugs.gnu.org>)
	id 1ojsPv-0006VC-GN
	for submit <at> debbugs.gnu.org; Sat, 15 Oct 2022 21:26:17 -0400
Received: from lists.gnu.org ([209.51.188.17]:34750)
 by debbugs.gnu.org with esmtp (Exim 4.84_2)
 (envelope-from <yantar92@HIDDEN>) id 1ojsPs-0006Uz-6z
 for submit <at> debbugs.gnu.org; Sat, 15 Oct 2022 21:26:14 -0400
Received: from eggs.gnu.org ([2001:470:142:3::10]:46464)
 by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256)
 (Exim 4.90_1) (envelope-from <yantar92@HIDDEN>)
 id 1ojsPr-0000me-Ux
 for bug-gnu-emacs@HIDDEN; Sat, 15 Oct 2022 21:26:11 -0400
Received: from mout02.posteo.de ([185.67.36.66]:53107)
 by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256)
 (Exim 4.90_1) (envelope-from <yantar92@HIDDEN>)
 id 1ojsPn-0000Kw-6x
 for bug-gnu-emacs@HIDDEN; Sat, 15 Oct 2022 21:26:11 -0400
Received: from submission (posteo.de [185.67.36.169]) 
 by mout02.posteo.de (Postfix) with ESMTPS id E11F0240101
 for <bug-gnu-emacs@HIDDEN>; Sun, 16 Oct 2022 03:26:04 +0200 (CEST)
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=posteo.net; s=2017;
 t=1665883564; bh=O9pjmPNstAXhLxy/Dpk4/DZfOUDIbpZQTLUhKs2+IKQ=;
 h=From:To:Subject:Date:From;
 b=LhxRlymhOsQsDVxaub/M5z0kI2NzVc6zoT9jux84BoHzsNut3Yke8g1PDV0hHddWC
 rHRLMM91s7ZjpYDJJjxlmNcX1r+AnJeAxyPpOxev/K+ypk/p/r7zcJAkmUMfJNN7xk
 OvfvI76W99eGUJjSdfOQR+yWVGj/6NKcrNDok0KRe/tG0pYgkLk5pKvxGayfGztxZn
 j7e9JlYSfNcV6B4Unt5f+LCZf1hu5tDl4kP1duHj6jAIUxva2ye2L4P6SbDgJ5M5/U
 xtbCxioTsumdJAmXVI0YLEhVPOYld9lnRcsU6yipjiJiK9HyWkfx4oUWqivAX95UxR
 kVbVfWMhguGKQ==
Received: from customer (localhost [127.0.0.1])
 by submission (posteo.de) with ESMTPSA id 4MqjBL54Hzz9rxK
 for <bug-gnu-emacs@HIDDEN>; Sun, 16 Oct 2022 03:26:01 +0200 (CEST)
From: Ihor Radchenko <yantar92@HIDDEN>
To: bug-gnu-emacs@HIDDEN
Subject: 29.0.50; re-search-forward is slow in some buffers
Date: Sun, 16 Oct 2022 01:26:50 +0000
Message-ID: <877d10r21x.fsf@localhost>
MIME-Version: 1.0
Content-Type: text/plain
Content-Transfer-Encoding: quoted-printable
Received-SPF: pass client-ip=185.67.36.66; envelope-from=yantar92@HIDDEN;
 helo=mout02.posteo.de
X-Spam_score_int: -27
X-Spam_score: -2.8
X-Spam_bar: --
X-Spam_report: (-2.8 / 5.0 requ) BAYES_00=-1.9, DKIM_SIGNED=0.1,
 DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, DKIM_VALID_EF=-0.1,
 RCVD_IN_DNSWL_LOW=-0.7, RCVD_IN_MSPIKE_H2=-0.001, SPF_HELO_NONE=0.001,
 SPF_PASS=-0.001 autolearn=ham autolearn_force=no
X-Spam_action: no action
X-Spam-Score: -1.3 (-)
X-Debbugs-Envelope-To: submit
X-BeenThere: debbugs-submit <at> debbugs.gnu.org
X-Mailman-Version: 2.1.18
Precedence: list
List-Id: <debbugs-submit.debbugs.gnu.org>
List-Unsubscribe: <https://debbugs.gnu.org/cgi-bin/mailman/options/debbugs-submit>, 
 <mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=unsubscribe>
List-Archive: <https://debbugs.gnu.org/cgi-bin/mailman/private/debbugs-submit/>
List-Post: <mailto:debbugs-submit <at> debbugs.gnu.org>
List-Help: <mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=help>
List-Subscribe: <https://debbugs.gnu.org/cgi-bin/mailman/listinfo/debbugs-submit>, 
 <mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=subscribe>
Errors-To: debbugs-submit-bounces <at> debbugs.gnu.org
Sender: "Debbugs-submit" <debbugs-submit-bounces <at> debbugs.gnu.org>
X-Spam-Score: -2.3 (--)

Hi,

I am consistently experiencing a significant slowdown of regexp search
in large buffers in Emacs 29 (master and noverlay), but not on Emacs 28:

ELP data:

;; Emacs 29
;; re-search-forward  181593      10.090536098  5.556...e-05
;; re-search-forward  180625      8.7113028330  4.822...e-05
;; re-search-forward  177357      9.7315074570  5.486...e-05

;; Emacs 28
;; re-search-forward  171661      2.7219785009  1.585...e-05

(up to 4x slowdown)

It happens consistently in Emacs 29, but not in all buffers. Sometimes,
it only happens after some time after Emacs startup. The slowdown is not
there in Emacs 28.

The issue started long time ago (over a year), but all my attempts to
bisect the problem failed or landed on inconsistent bad commits.

The above slowdown should have nothing to do with ELP overheads.
I tested agenda generation times (agenda uses a huge number of regexp
searches) with the following results from manually wrapping
re-search-forward calls into time accumulator:

Emacs 29. Note re-search time
;; Mapped over elements in #<buffer notes.org>. 33/5592 predicate matches. =
Total time: 8.788400 sec. Pre-process time: 0.000000 sec. Predicate time: 0=
.604878 sec. Re-search time: 8.023365 sec.
;;        Calling parameters: :granularity headline+inlinetask :restrict-el=
ements (headline inlinetask) :next-re "\\(?:\\(?:\\<DEADLINE: *\\(\\(?:<\\(=
?:[[:digit:]]\\{4\\}-[[:digit:]]\\{2\\}-[[:digit:]]\\{2\\}\\(?: [[:alpha:]]=
+\\)?\\)\\(?: [[:digit:]]\\{1,2\\}:[[:digit:]]\\{2\\}\\(?:-[[:digit:]]\\{1,=
2\\}:[[:digit:]]\\{2\\}\\)?\\)?\\(?:\\(?: [+.:-]\\{1,2\\}[[:digit:]]+[dhmwy=
]\\(?:/[[:digit:]]+[dhmwy]\\)?\\)\\{1,2\\}\\)?>\\)\\)\\)\\|\\(?:\\(?:<\\(?:=
[[:digit:]]\\{4\\}-[[:digit:]]\\{2\\}-[[:digit:]]\\{2\\}\\(?: [[:alpha:]]+\=
\)?\\)\\(?: [[:digit:]]\\{1,2\\}:[[:digit:]]\\{2\\}\\(?:-[[:digit:]]\\{1,2\=
\}:[[:digit:]]\\{2\\}\\)?\\)?\\(?:\\(?: [+.:-]\\{1,2\\}[[:digit:]]+[dhmwy]\=
\(?:/[[:digit:]]+[dhmwy]\\)?\\)\\{1,2\\}\\)?>\\)\\|^\\*+[[:blank:]]+\\(?:[[=
:upper:]]+[[:blank:]]+\\)?\\[#A]\\|^[[:space:]]*:STYLE:[[:space:]]+habit[[:=
space:]]*$\\)\\)" :fail-re "\\(?:\\(?:\\<DEADLINE: *\\(\\(?:<\\(?:[[:digit:=
]]\\{4\\}-[[:digit:]]\\{2\\}-[[:digit:]]\\{2\\}\\(?: [[:alpha:]]+\\)?\\)\\(=
?: [[:digit:]]\\{1,2\\}:[[:digit:]]\\{2\\}\\(?:-[[:digit:]]\\{1,2\\}:[[:dig=
it:]]\\{2\\}\\)?\\)?\\(?:\\(?: [+.:-]\\{1,2\\}[[:digit:]]+[dhmwy]\\(?:/[[:d=
igit:]]+[dhmwy]\\)?\\)\\{1,2\\}\\)?>\\)\\)\\)\\|\\(?:\\(?:<\\(?:[[:digit:]]=
\\{4\\}-[[:digit:]]\\{2\\}-[[:digit:]]\\{2\\}\\(?: [[:alpha:]]+\\)?\\)\\(?:=
 [[:digit:]]\\{1,2\\}:[[:digit:]]\\{2\\}\\(?:-[[:digit:]]\\{1,2\\}:[[:digit=
:]]\\{2\\}\\)?\\)?\\(?:\\(?: [+.:-]\\{1,2\\}[[:digit:]]+[dhmwy]\\(?:/[[:dig=
it:]]+[dhmwy]\\)?\\)\\{1,2\\}\\)?>\\)\\|^\\*+[[:blank:]]+\\(?:[[:upper:]]+[=
[:blank:]]+\\)?\\[#A]\\|^[[:space:]]*:STYLE:[[:space:]]+habit[[:space:]]*$\=
\)\\)" :from-pos 321 :to-pos #<marker at 21071050 in notes.org> :limit-coun=
t nil :after-element nil

Emacs 28. Note re-search time=20
;; Mapped over elements in #<buffer notes.org>. 33/5592 predicate matches. =
Total time: 1.396713 sec. Pre-process time: 0.000000 sec. Predicate time: 0=
.544486 sec. Re-search time: 0.708682 sec.
;;        Calling parameters: :granularity headline+inlinetask :restrict-el=
ements (headline inlinetask) :next-re "\\(?:\\(?:\\<DEADLINE: *\\(\\(?:<\\(=
?:[[:digit:]]\\{4\\}-[[:digit:]]\\{2\\}-[[:digit:]]\\{2\\}\\(?: [[:alpha:]]=
+\\)?\\)\\(?: [[:digit:]]\\{1,2\\}:[[:digit:]]\\{2\\}\\(?:-[[:digit:]]\\{1,=
2\\}:[[:digit:]]\\{2\\}\\)?\\)?\\(?:\\(?: [+.:-]\\{1,2\\}[[:digit:]]+[dhmwy=
]\\(?:/[[:digit:]]+[dhmwy]\\)?\\)\\{1,2\\}\\)?>\\)\\)\\)\\|\\(?:\\(?:<\\(?:=
[[:digit:]]\\{4\\}-[[:digit:]]\\{2\\}-[[:digit:]]\\{2\\}\\(?: [[:alpha:]]+\=
\)?\\)\\(?: [[:digit:]]\\{1,2\\}:[[:digit:]]\\{2\\}\\(?:-[[:digit:]]\\{1,2\=
\}:[[:digit:]]\\{2\\}\\)?\\)?\\(?:\\(?: [+.:-]\\{1,2\\}[[:digit:]]+[dhmwy]\=
\(?:/[[:digit:]]+[dhmwy]\\)?\\)\\{1,2\\}\\)?>\\)\\|^\\*+[[:blank:]]+\\(?:[[=
:upper:]]+[[:blank:]]+\\)?\\[#A]\\|^[[:space:]]*:STYLE:[[:space:]]+habit[[:=
space:]]*$\\)\\)" :fail-re "\\(?:\\(?:\\<DEADLINE: *\\(\\(?:<\\(?:[[:digit:=
]]\\{4\\}-[[:digit:]]\\{2\\}-[[:digit:]]\\{2\\}\\(?: [[:alpha:]]+\\)?\\)\\(=
?: [[:digit:]]\\{1,2\\}:[[:digit:]]\\{2\\}\\(?:-[[:digit:]]\\{1,2\\}:[[:dig=
it:]]\\{2\\}\\)?\\)?\\(?:\\(?: [+.:-]\\{1,2\\}[[:digit:]]+[dhmwy]\\(?:/[[:d=
igit:]]+[dhmwy]\\)?\\)\\{1,2\\}\\)?>\\)\\)\\)\\|\\(?:\\(?:<\\(?:[[:digit:]]=
\\{4\\}-[[:digit:]]\\{2\\}-[[:digit:]]\\{2\\}\\(?: [[:alpha:]]+\\)?\\)\\(?:=
 [[:digit:]]\\{1,2\\}:[[:digit:]]\\{2\\}\\(?:-[[:digit:]]\\{1,2\\}:[[:digit=
:]]\\{2\\}\\)?\\)?\\(?:\\(?: [+.:-]\\{1,2\\}[[:digit:]]+[dhmwy]\\(?:/[[:dig=
it:]]+[dhmwy]\\)?\\)\\{1,2\\}\\)?>\\)\\|^\\*+[[:blank:]]+\\(?:[[:upper:]]+[=
[:blank:]]+\\)?\\[#A]\\|^[[:space:]]*:STYLE:[[:space:]]+habit[[:space:]]*$\=
\)\\)" :from-pos 321 :to-pos #<marker at 21071050 in notes.org> :limit-coun=
t nil :after-element nil

Any idea what might be going on or how to debug this further?

In GNU Emacs 29.0.50 (build 1, x86_64-pc-linux-gnu, GTK+ Version
 3.24.34, cairo version 1.16.0) of 2022-10-15 built on yantar92-laptop
Repository revision: b86505387480fed81629cbc81cef6b70098bd607
Repository branch: feature/noverlay
Windowing system distributor 'The X.Org Foundation', version 11.0.12101004
System Description: Gentoo Linux

Configured features:
ACL CAIRO DBUS FREETYPE GIF GLIB GMP GNUTLS GPM GSETTINGS HARFBUZZ JPEG
JSON LCMS2 LIBXML2 MODULES NOTIFY INOTIFY PDUMPER PNG RSVG SECCOMP SOUND
SQLITE3 THREADS TIFF TOOLKIT_SCROLL_BARS WEBP X11 XDBE XIM XINPUT2 XPM
GTK3 ZLIB

Important settings:
  value of $LC_COLLATE: C
  value of $LANG: en_US.utf8
  locale-coding-system: utf-8-unix

Major mode: Lisp Interaction

Minor modes in effect:
  windmove-mode: t
  TeX-PDF-mode: t
  pyvenv-mode: t
  git-email-notmuch-mode: t
  git-email-piem-mode: t
  piem-notmuch-mode: t
  org-edna-mode: t
  eros-mode: t
  pdf-occur-global-minor-mode: t
  which-key-mode: t
  diredfl-global-mode: t
  dired-async-mode: t
  winner-mode: t
  eval-sexp-fu-flash-mode: t
  global-flycheck-mode: t
  flycheck-mode: t
  el-patch-use-package-mode: t
  global-git-commit-mode: t
  magit-auto-revert-mode: t
  recentf-mode: t
  hl-todo-mode: t
  pretty-symbols-mode: t
  company-mode: t
  persistent-scratch-autosave-mode: t
  savehist-mode: t
  helm-adaptive-mode: t
  helm-mode: t
  helm-minibuffer-history-mode: t
  helm-ff-icon-mode: t
  shell-dirtrack-mode: t
  helm--remap-mouse-mode: t
  async-bytecomp-package-mode: t
  boon-mode: t
  boon-local-mode: t
  global-hl-line-mode: t
  global-page-break-lines-mode: t
  page-break-lines-mode: t
  shackle-mode: t
  override-global-mode: t
  straight-use-package-mode: t
  straight-package-neutering-mode: t
  global-eldoc-mode: t
  eldoc-mode: t
  show-paren-mode: t
  electric-indent-mode: t
  mouse-wheel-mode: t
  global-prettify-symbols-mode: t
  prettify-symbols-mode: t
  file-name-shadow-mode: t
  global-font-lock-mode: t
  font-lock-mode: t
  window-divider-mode: t
  line-number-mode: t
  indent-tabs-mode: t
  transient-mark-mode: t
  auto-composition-mode: t
  auto-encryption-mode: t
  auto-compression-mode: t
  abbrev-mode: t

Load-path shadows:
/home/yantar92/.emacs.d/straight/build/transient/transient hides /home/yant=
ar92/Git/emacs/lisp/transient
/home/yantar92/.emacs.d/straight/build/xref/xref hides /home/yantar92/Git/e=
macs/lisp/progmodes/xref
/home/yantar92/.emacs.d/straight/build/project/project hides /home/yantar92=
/Git/emacs/lisp/progmodes/project
/home/yantar92/.emacs.d/straight/build/org/ox-publish hides /home/yantar92/=
Git/emacs/lisp/org/ox-publish
/home/yantar92/.emacs.d/straight/build/org/ox-org hides /home/yantar92/Git/=
emacs/lisp/org/ox-org
/home/yantar92/.emacs.d/straight/build/org/ox-odt hides /home/yantar92/Git/=
emacs/lisp/org/ox-odt
/home/yantar92/.emacs.d/straight/build/org/org hides /home/yantar92/Git/ema=
cs/lisp/org/org
/home/yantar92/.emacs.d/straight/build/org/ox-md hides /home/yantar92/Git/e=
macs/lisp/org/ox-md
/home/yantar92/.emacs.d/straight/build/org/ox-man hides /home/yantar92/Git/=
emacs/lisp/org/ox-man
/home/yantar92/.emacs.d/straight/build/org/ox-latex hides /home/yantar92/Gi=
t/emacs/lisp/org/ox-latex
/home/yantar92/.emacs.d/straight/build/org/ox-koma-letter hides /home/yanta=
r92/Git/emacs/lisp/org/ox-koma-letter
/home/yantar92/.emacs.d/straight/build/org/ox-icalendar hides /home/yantar9=
2/Git/emacs/lisp/org/ox-icalendar
/home/yantar92/.emacs.d/straight/build/org/ox-html hides /home/yantar92/Git=
/emacs/lisp/org/ox-html
/home/yantar92/.emacs.d/straight/build/org/ox-ascii hides /home/yantar92/Gi=
t/emacs/lisp/org/ox-ascii
/home/yantar92/.emacs.d/straight/build/org/ox-beamer hides /home/yantar92/G=
it/emacs/lisp/org/ox-beamer
/home/yantar92/.emacs.d/straight/build/org/org-timer hides /home/yantar92/G=
it/emacs/lisp/org/org-timer
/home/yantar92/.emacs.d/straight/build/org/org-tempo hides /home/yantar92/G=
it/emacs/lisp/org/org-tempo
/home/yantar92/.emacs.d/straight/build/org/org-table hides /home/yantar92/G=
it/emacs/lisp/org/org-table
/home/yantar92/.emacs.d/straight/build/org/org-src hides /home/yantar92/Git=
/emacs/lisp/org/org-src
/home/yantar92/.emacs.d/straight/build/org/org-protocol hides /home/yantar9=
2/Git/emacs/lisp/org/org-protocol
/home/yantar92/.emacs.d/straight/build/org/org-plot hides /home/yantar92/Gi=
t/emacs/lisp/org/org-plot
/home/yantar92/.emacs.d/straight/build/org/org-refile hides /home/yantar92/=
Git/emacs/lisp/org/org-refile
/home/yantar92/.emacs.d/straight/build/org/org-mouse hides /home/yantar92/G=
it/emacs/lisp/org/org-mouse
/home/yantar92/.emacs.d/straight/build/org/org-num hides /home/yantar92/Git=
/emacs/lisp/org/org-num
/home/yantar92/.emacs.d/straight/build/org/org-mobile hides /home/yantar92/=
Git/emacs/lisp/org/org-mobile
/home/yantar92/.emacs.d/straight/build/org/org-lint hides /home/yantar92/Gi=
t/emacs/lisp/org/org-lint
/home/yantar92/.emacs.d/straight/build/org/org-pcomplete hides /home/yantar=
92/Git/emacs/lisp/org/org-pcomplete
/home/yantar92/.emacs.d/straight/build/org/org-inlinetask hides /home/yanta=
r92/Git/emacs/lisp/org/org-inlinetask
/home/yantar92/.emacs.d/straight/build/org/org-list hides /home/yantar92/Gi=
t/emacs/lisp/org/org-list
/home/yantar92/.emacs.d/straight/build/org/org-indent hides /home/yantar92/=
Git/emacs/lisp/org/org-indent
/home/yantar92/.emacs.d/straight/build/org/org-macs hides /home/yantar92/Gi=
t/emacs/lisp/org/org-macs
/home/yantar92/.emacs.d/straight/build/org/org-id hides /home/yantar92/Git/=
emacs/lisp/org/org-id
/home/yantar92/.emacs.d/straight/build/org/org-loaddefs hides /home/yantar9=
2/Git/emacs/lisp/org/org-loaddefs
/home/yantar92/.emacs.d/straight/build/org/org-habit hides /home/yantar92/G=
it/emacs/lisp/org/org-habit
/home/yantar92/.emacs.d/straight/build/org/org-goto hides /home/yantar92/Gi=
t/emacs/lisp/org/org-goto
/home/yantar92/.emacs.d/straight/build/org/org-keys hides /home/yantar92/Gi=
t/emacs/lisp/org/org-keys
/home/yantar92/.emacs.d/straight/build/org/org-feed hides /home/yantar92/Gi=
t/emacs/lisp/org/org-feed
/home/yantar92/.emacs.d/straight/build/org/org-datetree hides /home/yantar9=
2/Git/emacs/lisp/org/org-datetree
/home/yantar92/.emacs.d/straight/build/org/org-ctags hides /home/yantar92/G=
it/emacs/lisp/org/org-ctags
/home/yantar92/.emacs.d/straight/build/org/org-agenda hides /home/yantar92/=
Git/emacs/lisp/org/org-agenda
/home/yantar92/.emacs.d/straight/build/org/org-footnote hides /home/yantar9=
2/Git/emacs/lisp/org/org-footnote
/home/yantar92/.emacs.d/straight/build/org/org-faces hides /home/yantar92/G=
it/emacs/lisp/org/org-faces
/home/yantar92/.emacs.d/straight/build/org/org-entities hides /home/yantar9=
2/Git/emacs/lisp/org/org-entities
/home/yantar92/.emacs.d/straight/build/org/org-duration hides /home/yantar9=
2/Git/emacs/lisp/org/org-duration
/home/yantar92/.emacs.d/straight/build/org/org-colview hides /home/yantar92=
/Git/emacs/lisp/org/org-colview
/home/yantar92/.emacs.d/straight/build/org/org-compat hides /home/yantar92/=
Git/emacs/lisp/org/org-compat
/home/yantar92/.emacs.d/straight/build/org/org-clock hides /home/yantar92/G=
it/emacs/lisp/org/org-clock
/home/yantar92/.emacs.d/straight/build/org/org-crypt hides /home/yantar92/G=
it/emacs/lisp/org/org-crypt
/home/yantar92/.emacs.d/straight/build/org/org-attach-git hides /home/yanta=
r92/Git/emacs/lisp/org/org-attach-git
/home/yantar92/.emacs.d/straight/build/org/org-attach hides /home/yantar92/=
Git/emacs/lisp/org/org-attach
/home/yantar92/.emacs.d/straight/build/org/org-capture hides /home/yantar92=
/Git/emacs/lisp/org/org-capture
/home/yantar92/.emacs.d/straight/build/org/org-archive hides /home/yantar92=
/Git/emacs/lisp/org/org-archive
/home/yantar92/.emacs.d/straight/build/org/ol-gnus hides /home/yantar92/Git=
/emacs/lisp/org/ol-gnus
/home/yantar92/.emacs.d/straight/build/org/ol-w3m hides /home/yantar92/Git/=
emacs/lisp/org/ol-w3m
/home/yantar92/.emacs.d/straight/build/org/ol-mhe hides /home/yantar92/Git/=
emacs/lisp/org/ol-mhe
/home/yantar92/.emacs.d/straight/build/org/ol-rmail hides /home/yantar92/Gi=
t/emacs/lisp/org/ol-rmail
/home/yantar92/.emacs.d/straight/build/org/ol-eww hides /home/yantar92/Git/=
emacs/lisp/org/ol-eww
/home/yantar92/.emacs.d/straight/build/org/ol-irc hides /home/yantar92/Git/=
emacs/lisp/org/ol-irc
/home/yantar92/.emacs.d/straight/build/org/ol-man hides /home/yantar92/Git/=
emacs/lisp/org/ol-man
/home/yantar92/.emacs.d/straight/build/org/ol-info hides /home/yantar92/Git=
/emacs/lisp/org/ol-info
/home/yantar92/.emacs.d/straight/build/org/ob-fortran hides /home/yantar92/=
Git/emacs/lisp/org/ob-fortran
/home/yantar92/.emacs.d/straight/build/org/ol-eshell hides /home/yantar92/G=
it/emacs/lisp/org/ol-eshell
/home/yantar92/.emacs.d/straight/build/org/ol-doi hides /home/yantar92/Git/=
emacs/lisp/org/ol-doi
/home/yantar92/.emacs.d/straight/build/org/ol-docview hides /home/yantar92/=
Git/emacs/lisp/org/ol-docview
/home/yantar92/.emacs.d/straight/build/org/ol-bibtex hides /home/yantar92/G=
it/emacs/lisp/org/ol-bibtex
/home/yantar92/.emacs.d/straight/build/org/ol-bbdb hides /home/yantar92/Git=
/emacs/lisp/org/ol-bbdb
/home/yantar92/.emacs.d/straight/build/org/oc-natbib hides /home/yantar92/G=
it/emacs/lisp/org/oc-natbib
/home/yantar92/.emacs.d/straight/build/org/oc-csl hides /home/yantar92/Git/=
emacs/lisp/org/oc-csl
/home/yantar92/.emacs.d/straight/build/org/oc-basic hides /home/yantar92/Gi=
t/emacs/lisp/org/oc-basic
/home/yantar92/.emacs.d/straight/build/org/oc-biblatex hides /home/yantar92=
/Git/emacs/lisp/org/oc-biblatex
/home/yantar92/.emacs.d/straight/build/org/ob hides /home/yantar92/Git/emac=
s/lisp/org/ob
/home/yantar92/.emacs.d/straight/build/org/ob-tangle hides /home/yantar92/G=
it/emacs/lisp/org/ob-tangle
/home/yantar92/.emacs.d/straight/build/org/ob-sql hides /home/yantar92/Git/=
emacs/lisp/org/ob-sql
/home/yantar92/.emacs.d/straight/build/org/ob-sqlite hides /home/yantar92/G=
it/emacs/lisp/org/ob-sqlite
/home/yantar92/.emacs.d/straight/build/org/ob-table hides /home/yantar92/Gi=
t/emacs/lisp/org/ob-table
/home/yantar92/.emacs.d/straight/build/org/ob-shell hides /home/yantar92/Gi=
t/emacs/lisp/org/ob-shell
/home/yantar92/.emacs.d/straight/build/org/ob-sed hides /home/yantar92/Git/=
emacs/lisp/org/ob-sed
/home/yantar92/.emacs.d/straight/build/org/ob-screen hides /home/yantar92/G=
it/emacs/lisp/org/ob-screen
/home/yantar92/.emacs.d/straight/build/org/ob-scheme hides /home/yantar92/G=
it/emacs/lisp/org/ob-scheme
/home/yantar92/.emacs.d/straight/build/org/ob-C hides /home/yantar92/Git/em=
acs/lisp/org/ob-C
/home/yantar92/.emacs.d/straight/build/org/ob-sass hides /home/yantar92/Git=
/emacs/lisp/org/ob-sass
/home/yantar92/.emacs.d/straight/build/org/ob-ruby hides /home/yantar92/Git=
/emacs/lisp/org/ob-ruby
/home/yantar92/.emacs.d/straight/build/org/ob-python hides /home/yantar92/G=
it/emacs/lisp/org/ob-python
/home/yantar92/.emacs.d/straight/build/org/ob-processing hides /home/yantar=
92/Git/emacs/lisp/org/ob-processing
/home/yantar92/.emacs.d/straight/build/org/ob-plantuml hides /home/yantar92=
/Git/emacs/lisp/org/ob-plantuml
/home/yantar92/.emacs.d/straight/build/org/ob-ref hides /home/yantar92/Git/=
emacs/lisp/org/ob-ref
/home/yantar92/.emacs.d/straight/build/org/ob-perl hides /home/yantar92/Git=
/emacs/lisp/org/ob-perl
/home/yantar92/.emacs.d/straight/build/org/ob-octave hides /home/yantar92/G=
it/emacs/lisp/org/ob-octave
/home/yantar92/.emacs.d/straight/build/org/ob-org hides /home/yantar92/Git/=
emacs/lisp/org/ob-org
/home/yantar92/.emacs.d/straight/build/org/ob-ocaml hides /home/yantar92/Gi=
t/emacs/lisp/org/ob-ocaml
/home/yantar92/.emacs.d/straight/build/org/ob-maxima hides /home/yantar92/G=
it/emacs/lisp/org/ob-maxima
/home/yantar92/.emacs.d/straight/build/org/ob-matlab hides /home/yantar92/G=
it/emacs/lisp/org/ob-matlab
/home/yantar92/.emacs.d/straight/build/org/ob-makefile hides /home/yantar92=
/Git/emacs/lisp/org/ob-makefile
/home/yantar92/.emacs.d/straight/build/org/ob-lua hides /home/yantar92/Git/=
emacs/lisp/org/ob-lua
/home/yantar92/.emacs.d/straight/build/org/ob-lisp hides /home/yantar92/Git=
/emacs/lisp/org/ob-lisp
/home/yantar92/.emacs.d/straight/build/org/ob-lilypond hides /home/yantar92=
/Git/emacs/lisp/org/ob-lilypond
/home/yantar92/.emacs.d/straight/build/org/ob-lob hides /home/yantar92/Git/=
emacs/lisp/org/ob-lob
/home/yantar92/.emacs.d/straight/build/org/ob-latex hides /home/yantar92/Gi=
t/emacs/lisp/org/ob-latex
/home/yantar92/.emacs.d/straight/build/org/ob-julia hides /home/yantar92/Gi=
t/emacs/lisp/org/ob-julia
/home/yantar92/.emacs.d/straight/build/org/ob-java hides /home/yantar92/Git=
/emacs/lisp/org/ob-java
/home/yantar92/.emacs.d/straight/build/org/ob-js hides /home/yantar92/Git/e=
macs/lisp/org/ob-js
/home/yantar92/.emacs.d/straight/build/org/ob-haskell hides /home/yantar92/=
Git/emacs/lisp/org/ob-haskell
/home/yantar92/.emacs.d/straight/build/org/ob-gnuplot hides /home/yantar92/=
Git/emacs/lisp/org/ob-gnuplot
/home/yantar92/.emacs.d/straight/build/org/ob-groovy hides /home/yantar92/G=
it/emacs/lisp/org/ob-groovy
/home/yantar92/.emacs.d/straight/build/org/ob-forth hides /home/yantar92/Gi=
t/emacs/lisp/org/ob-forth
/home/yantar92/.emacs.d/straight/build/org/ob-exp hides /home/yantar92/Git/=
emacs/lisp/org/ob-exp
/home/yantar92/.emacs.d/straight/build/org/ob-eval hides /home/yantar92/Git=
/emacs/lisp/org/ob-eval
/home/yantar92/.emacs.d/straight/build/org/ob-eshell hides /home/yantar92/G=
it/emacs/lisp/org/ob-eshell
/home/yantar92/.emacs.d/straight/build/org/ob-dot hides /home/yantar92/Git/=
emacs/lisp/org/ob-dot
/home/yantar92/.emacs.d/straight/build/org/ob-ditaa hides /home/yantar92/Gi=
t/emacs/lisp/org/ob-ditaa
/home/yantar92/.emacs.d/straight/build/org/ob-css hides /home/yantar92/Git/=
emacs/lisp/org/ob-css
/home/yantar92/.emacs.d/straight/build/org/ob-core hides /home/yantar92/Git=
/emacs/lisp/org/ob-core
/home/yantar92/.emacs.d/straight/build/org/ob-emacs-lisp hides /home/yantar=
92/Git/emacs/lisp/org/ob-emacs-lisp
/home/yantar92/.emacs.d/straight/build/org/ob-calc hides /home/yantar92/Git=
/emacs/lisp/org/ob-calc
/home/yantar92/.emacs.d/straight/build/org/ob-clojure hides /home/yantar92/=
Git/emacs/lisp/org/ob-clojure
/home/yantar92/.emacs.d/straight/build/org/ob-R hides /home/yantar92/Git/em=
acs/lisp/org/ob-R
/home/yantar92/.emacs.d/straight/build/org/ob-comint hides /home/yantar92/G=
it/emacs/lisp/org/ob-comint
/home/yantar92/.emacs.d/straight/build/org/ob-awk hides /home/yantar92/Git/=
emacs/lisp/org/ob-awk
/home/yantar92/.emacs.d/straight/build/org/org-element hides /home/yantar92=
/Git/emacs/lisp/org/org-element
/home/yantar92/.emacs.d/straight/build/org/ox hides /home/yantar92/Git/emac=
s/lisp/org/ox
/home/yantar92/.emacs.d/straight/build/org/ox-texinfo hides /home/yantar92/=
Git/emacs/lisp/org/ox-texinfo
/home/yantar92/.emacs.d/straight/build/org/ol hides /home/yantar92/Git/emac=
s/lisp/org/ol
/home/yantar92/.emacs.d/straight/build/org/oc hides /home/yantar92/Git/emac=
s/lisp/org/oc
/home/yantar92/.emacs.d/straight/build/org/org-macro hides /home/yantar92/G=
it/emacs/lisp/org/org-macro
/home/yantar92/.emacs.d/straight/build/org/org-version hides /home/yantar92=
/Git/emacs/lisp/org/org-version
/home/yantar92/.emacs.d/straight/build/map/map hides /home/yantar92/Git/ema=
cs/lisp/emacs-lisp/map
/home/yantar92/.emacs.d/straight/build/let-alist/let-alist hides /home/yant=
ar92/Git/emacs/lisp/emacs-lisp/let-alist

Features:
(shadow emacsbug org-datetree elfeed-link windmove make-mode
gnuplot-context gnuplot org-test ert-x ert finder autoinsert vc-hg
vc-bzr vc-src vc-sccs vc-svn vc-cvs vc-rcs log-view helm-imenu latexenc
oc-bibtex textsec uni-scripts idna-mapping ucs-normalize uni-confusable
textsec-check helm-ring footnote descr-text dired-open
all-the-icons-dired dired-filter dired-hide-dotfiles misearch
multi-isearch cal-move org-learn network-stream url-cache preview
font-latex w3m-form w3m-symbol tabify latex latex-flymake tex-ispell
tex-style tex pdf-sync pdf-outline pdf-links pdf-history w3m doc-view
w3m-hist w3m-fb bookmark-w3m w3m-ems w3m-favicon w3m-image tab-line
w3m-proc w3m-util boon-moves er-basic-expansions expand-region-core
expand-region-custom tex-mode compare-w mm-archive helm-command
helm-elisp helm-eval helm-x-files helm-for-files helm-bookmark
helm-external helm-net boon-main boon-hl boon-arguments multiple-cursors
mc-separate-operations rectangular-region-mode mc-mark-pop mc-edit-lines
mc-hide-unmatched-lines-mode mc-mark-more mc-cycle-cursors
multiple-cursors-core boon-regs boon-utils cl-print tramp-archive
tramp-gvfs cal-iso org-duration ffap org-table-sticky-header oc-basic
highlight-indentation flymake-proc flymake elpy elpy-rpc pyvenv eshell
esh-cmd esh-ext esh-opt esh-proc esh-io esh-arg esh-module esh-groups
esh-util elpy-shell elpy-profile elpy-django elpy-refactor grep
git-email-magit magit-patch git-email-notmuch git-email-piem git-email
git-email-autoloads project-autoloads xref-autoloads piem-notmuch piem
piem-maildir mail-extr piem-autoloads org-crypt helm-notmuch
helm-notmuch-autoloads ol-notmuch ol-notmuch-autoloads org-eldoc
org-table-sticky-header-autoloads posframe posframe-autoloads ob-async
ob-async-autoloads ob-latex ob-dot ob-calc calc-store calc-trail
ob-gnuplot ob-ditaa ob-C cc-mode cc-fonts cc-guess cc-menus cc-cmds
cc-styles cc-align cc-engine cc-langs cc-vars cc-defs cc-bytecomp
ob-python ob-perl ob-org ob-shell ob-mathematica
ob-mathematica-autoloads org-tempo tempo org-archive ox-md ox-beamer
engrave-faces engrave-faces-autoloads ox-extra orgdiff orgdiff-autoloads
doct ya-org-capture ya-org-capture-autoloads doct-autoloads
org-capture-pop-frame org-capture-pop-frame-autoloads org-protocol
org-analyzer-autoloads pomidor-autoloads alert-autoloads log4e-autoloads
gntp-autoloads helm-org-ql helm-org org-clock org-autosort
org-autosort-autoloads helm-org-contacts helm-org-contacts-autoloads
org-contacts gnus-art mm-uu mml2015 gnus-sum gnus-group mm-url gnus-undo
gnus-start gnus-dbus gnus-cloud nnimap nnmail mail-source utf7 nnoo
gnus-spec gnus-int gnus-range gnus-win gnus org-contacts-autoloads
helm-org-ql-autoloads helm-org-autoloads org-ql-search org-ql-view ov
org-super-agenda org-ql peg ts org-ql-autoloads peg-autoloads
ov-autoloads org-super-agenda-autoloads ts-autoloads org-quick-peek
org-quick-peek-autoloads calfw-org calfw-org-autoloads calfw holidays
holiday-loaddefs calfw-autoloads org-attach cdlatex reftex
reftex-loaddefs reftex-vars texmathp cdlatex-autoloads org-capture-ref
org-ref-url-utils org-ref org-ref-core org-ref-glossary org-ref-bibtex
avy doi-utils org-ref-utils org-ref-export citeproc citeproc-itemgetters
citeproc-biblatex citeproc-bibtex ol-bibtex citeproc-cite
citeproc-subbibs citeproc-sort citeproc-name citeproc-formatters
citeproc-number rst citeproc-proc citeproc-disamb citeproc-itemdata
citeproc-generic-elements citeproc-macro citeproc-choose citeproc-date
citeproc-context citeproc-prange citeproc-style citeproc-locale
citeproc-term citeproc-rt citeproc-lib citeproc-s queue ox-pandoc ox-org
ox-odt rng-loc rng-uri rng-parse rng-match rng-dt rng-util rng-pttrn
nxml-parse nxml-ns nxml-enc xmltok nxml-util ox-latex ox-icalendar
ox-html table ox-ascii ox-publish ox org-ref-misc-links
org-ref-label-link org-ref-ref-links org-ref-citation-links
org-ref-bibliography-links bibtex-completion biblio biblio-download
biblio-dissemin biblio-ieee biblio-hal biblio-dblp biblio-crossref
biblio-arxiv timezone biblio-doi biblio-core ido parsebib bibtex
org-ref-autoloads ox-pandoc-autoloads citeproc-autoloads
string-inflection-autoloads queue-autoloads bibtex-completion-autoloads
biblio-autoloads biblio-core-autoloads parsebib-autoloads
htmlize-autoloads scimax-inkscape scimax-inkscape-autoloads org-pdftools
pdf-annot facemenu org-noter org-pdftools-autoloads org-noter-autoloads
org-capture org-checklist org-habit org-edna org-edna-autoloads
org-inlinetask org-drill persist org-agenda org-drill-autoloads
persist-autoloads ol-info ol-w3m ol-doi org-link-doi speed-type
speed-type-autoloads ement ement-notify ement-room ement-lib ement-api
ement-structs ement-macros warnings dns ement-autoloads
svg-lib-autoloads taxy-magit-section-autoloads taxy-autoloads
map-autoloads plz plz-autoloads 0x0 0x0-autoloads notmuch-calendar-x
notmuch-calendar-x-autoloads notmuch notmuch-tree notmuch-jump
notmuch-hello notmuch-show notmuch-print notmuch-crypto notmuch-mua
notmuch-message notmuch-draft notmuch-maildir-fcc notmuch-address
notmuch-company notmuch-parser notmuch-wash coolj notmuch-query
goto-addr icalendar diary-lib diary-loaddefs notmuch-tag notmuch-lib
notmuch-version notmuch-compat w3m-autoloads elfeed-score
elfeed-score-maint elfeed-score-scoring elfeed-score-serde
elfeed-score-rule-stats elfeed-org org-element org-persist
elfeed-org-autoloads quick-peek quick-peek-autoloads elfeed-show
elfeed-search hideshow display-fill-column-indicator eros
rainbow-delimiters highlight-numbers parent-mode easy-escape
license-snippets yasnippet-snippets-autoloads yasnippet-snippets
yasnippet elfeed-csv elfeed elfeed-curl elfeed-log elfeed-db elfeed-lib
avl-tree url-queue xml-query elfeed-score-rules elfeed-score-log
elfeed-score-autoloads elfeed-autoloads ytel-show-autoloads ytel
ytel-autoloads qrencode-el-autoloads tb-keycast tb-keycast-autoloads
gif-screencast gif-screencast-autoloads yaml-mode yaml-mode-autoloads
mingus libmpdee cl mingus-autoloads libmpdee-autoloads calctex calc-sel
calctex-autoloads shell-pop-autoloads eterm-256color-autoloads
xterm-color-autoloads vterm term ehelp vterm-module term/xterm xterm
vterm-autoloads diffpdf diffpdf-autoloads pdf-view-restore
pdf-view-restore-autoloads pdf-occur ibuf-ext ibuffer ibuffer-loaddefs
tablist tablist-filter semantic/wisent/comp semantic/wisent
semantic/wisent/wisent semantic/util-modes semantic/util semantic
semantic/tag semantic/lex semantic/fw mode-local cedet pdf-isearch
pdf-misc pdf-tools pdf-roll pdf-view jka-compr pdf-cache pdf-info tq
pdf-util pdf-macs pdf-tools-autoloads tablist-autoloads image-roll
image-roll-autoloads wolfram-mode wolfram-mode-autoloads
ledger-mode-autoloads auctex-autoloads tex-site ebuild-mode skeleton
sh-script smie executable ebuild-mode-autoloads lua-mode
lua-mode-autoloads gnuplot-autoloads eros-autoloads nameless
nameless-autoloads paredit paredit-autoloads company-jedi
company-jedi-autoloads jedi jedi-core python-environment epc ctable
concurrent auto-complete jedi-autoloads auto-complete-autoloads
jedi-core-autoloads python-environment-autoloads epc-autoloads
ctable-autoloads concurrent-autoloads elpy-autoloads pyvenv-autoloads
highlight-indentation-autoloads python helm-info which-key
which-key-autoloads helm-descbinds helm-descbinds-autoloads elisp-demos
elisp-demos-autoloads helpful info-look help-fns elisp-refs
helpful-autoloads elisp-refs-autoloads tldr tldr-autoloads
lsp-ui-autoloads lsp-mode-autoloads spinner-autoloads macrostep
macrostep-autoloads highlight-refontification
highlight-refontification-autoloads font-lock-profiler
font-lock-profiler-autoloads font-lock-studio font-lock-studio-autoloads
memory-usage memory-usage-autoloads bug-hunter bug-hunter-autoloads
lorem-ipsum lorem-ipsum-autoloads license-snippets-autoloads
yasnippet-autoloads move-text move-text-autoloads aggressive-indent
aggressive-indent-autoloads visual-regexp-autoloads magit-bookmark
bookmark mule-util helm-bm helm-bm-autoloads bm bm-autoloads helm-dash
dash-docs helm-dash-autoloads dash-docs-autoloads disk-usage
disk-usage-autoloads dired-git-info-autoloads
dired-hide-dotfiles-autoloads dired-filter-autoloads diredfl
diredfl-autoloads all-the-icons-dired-autoloads dired-async
dired-open-autoloads dired-avfs dired-avfs-autoloads
dired-narrow-autoloads dired-hacks-utils dired-hacks-utils-autoloads
dired+ image-file image-converter dired-x dired-aux dired+-autoloads
winner windower emacs-windower-autoloads goggles pulse skip-buffers-mode
avy-autoloads eval-sexp-fu eval-sexp-fu-autoloads goggles-autoloads
easy-escape-autoloads highlight-numbers-autoloads parent-mode-autoloads
rainbow-delimiters-autoloads highlight-parentheses
highlight-parentheses-autoloads flycheck-tip error-tip notifications
dbus popup flycheck-tip-autoloads flycheck flycheck-autoloads
pkg-info-autoloads epl-autoloads wordnut wordnut-history wordnut-u
wordnut-autoloads smog smog-autoloads writegood-mode
writegood-mode-autoloads langtool-ignore-fonts
langtool-ignore-fonts-autoloads langtool compile langtool-autoloads
el-patch-autoloads el-patch el-patch-stub flyspell ispell hi-lock ediff
ediff-merg ediff-mult ediff-wind ediff-diff ediff-help ediff-init
ediff-util browse-at-remote vc-git vc-dir ewoc vc vc-dispatcher f
f-shortdoc shortdoc browse-at-remote-autoloads f-autoloads code-review
code-review-actions code-review-comment code-review-section
code-review-bitbucket code-review-faces shr pixel-fill kinsoku url-file
svg xml dom emojify apropos tar-mode arc-mode archive-mode ht
code-review-gitlab code-review-utils code-review-parse-hunk
code-review-github code-review-db uuidgen calc-misc calc-ext calc
calc-loaddefs rect calc-macs a code-review-interfaces deferred
forge-list forge-commands forge-semi forge-bitbucket buck forge-gogs
gogs forge-gitea gtea forge-gitlab glab forge-github ghub-graphql treepy
gsexp ghub forge-notify forge-revnote forge-pullreq forge-issue
forge-topic yaml bug-reference forge-post markdown-mode thingatpt
forge-repo forge forge-core forge-db closql emacsql-sqlite emacsql
emacsql-compiler url-http url-auth url-gw nsm magit-submodule
magit-obsolete magit-blame magit-stash magit-reflog magit-bisect
magit-push magit-pull magit-fetch magit-clone magit-remote magit-commit
magit-sequence magit-notes magit-worktree magit-tag magit-merge
magit-branch magit-reset magit-files magit-refs magit-status magit
package let-alist browse-url url-handlers magit-repos magit-apply
magit-wip magit-log which-func imenu edebug debug backtrace magit-diff
smerge-mode diff diff-mode git-commit log-edit message sendmail
yank-media rfc822 mml mailabbrev nnheader range mail-utils gmm-utils
mailheader pcvs-util add-log magit-core magit-autorevert magit-margin
magit-transient magit-process with-editor magit-mode transient magit-git
magit-base magit-section crm compat-27 compat-26 code-review-autoloads
emojify-autoloads ht-autoloads deferred-autoloads uuidgen-autoloads
a-autoloads forge-autoloads yaml-autoloads markdown-mode-autoloads
ghub-autoloads treepy-autoloads let-alist-autoloads
emacsql-sqlite-autoloads emacsql-autoloads closql-autoloads
magit-autoloads magit-section-autoloads git-commit-autoloads
with-editor-autoloads transient-autoloads autorevert recentf tree-widget
disp-table hl-todo pretty-symbols company-oddmuse company-keywords
company-etags etags fileloop generator xref project company-gtags
company-dabbrev-code company-dabbrev company-files company-clang
company-capf company-cmake company-semantic company-template
company-bbdb company persistent-scratch persistent-scratch-autoloads
savehist backup-walker-autoloads company-autoloads helm-adaptive
helm-mode helm-misc helm-files image-dired image-dired-tags
image-dired-external image-dired-util xdg image-mode dired desktop
frameset dired-loaddefs exif filenotify tramp tramp-cache time-stamp
tramp-loaddefs trampver tramp-integration cus-edit pp cus-load wid-edit
tramp-compat shell parse-time iso8601 ls-lisp helm-buffers helm-occur
helm-tags helm-locate helm-grep helm-regexp helm-utils helm-help
helm-types helm helm-global-bindings helm-easymenu helm-core
async-bytecomp helm-source helm-multi-match helm-lib helm-autoloads
popup-autoloads helm-core-autoloads face-remap pyim pyim-cloudim url
url-proxy url-privacy url-expand url-methods url-history url-cookie
url-domsuf mm-view mml-smime mml-sec epa epg rfc6068 epg-config
gnus-util text-property-search smime gnutls puny dig mm-decode mm-bodies
mm-encode mail-parse rfc2231 rfc2047 rfc2045 mm-util ietf-drums
mail-prsvr mailcap pyim-probe pyim-preview pyim-page pyim-indicator
pyim-dregcache pyim-dhashcache sort pyim-dict async pyim-autoselector
pyim-process pyim-punctuation pyim-outcome pyim-candidates pyim-cstring
pyim-cregexp xr pyim-codes pyim-imobjs pyim-pinyin pyim-entered
pyim-dcache url-util url-parse auth-source eieio eieio-core
password-cache json map url-vars pyim-pymap pyim-scheme pyim-common
pyim-autoloads xr-autoloads async-autoloads reverse-im quail
reverse-im-autoloads hydra lv boon-qwerty color olivetti straight-x boon
boon-keys boon-core advice boon-loaddefs boon-autoloads
multiple-cursors-autoloads expand-region-autoloads meta-functions org-id
org-refile dash meta-functions-autoloads dash-autoloads hl-line memoize
memoize-autoloads info-colors info-colors-autoloads hl-todo-autoloads
latex-pretty-symbols latex-pretty-symbols-autoloads
pretty-symbols-autoloads page-break-lines page-break-lines-autoloads
edmacro kmacro adaptive-wrap adaptive-wrap-autoloads olivetti-autoloads
shackle trace shackle-autoloads use-package-diminish all-the-icons
all-the-icons-faces data-material data-weathericons data-octicons
data-fileicons data-faicons data-alltheicons all-the-icons-autoloads org
ob ob-tangle ob-ref ob-lob ob-table ob-exp org-macro org-footnote
org-src ob-comint org-pcomplete pcomplete comint files-x derived osc
ansi-color ring org-list org-entities time-date noutline outline icons
ob-emacs-lisp ob-core ob-eval org-cycle org-font-lock org-font-lock-core
org-element-match org-faces org-table ol org-fold org-fold-core org-keys
oc org-loaddefs find-func cal-menu calendar cal-loaddefs org-version
org-compat org-font-lock-obsolete org-macs format-spec rx
modus-operandi-theme modus-themes modus-themes-autoloads s s-autoloads
asoc asoc.el-autoloads no-littering compat no-littering-autoloads
compat-autoloads hydra-autoloads lv-autoloads finder-inf
use-package-bind-key org-contrib-autoloads bind-key diminish
diminish-autoloads use-package-core use-package-autoloads
bind-key-autoloads straight-autoloads cl-extra help-mode straight info
autoload loaddefs-gen generate-lisp-file radix-tree lisp-mnt easy-mmode
cl-seq pcase subr-x byte-opt cl-macs gv cl-loaddefs cl-lib bytecomp
byte-compile cconv server rmc iso-transl tooltip eldoc paren electric
uniquify ediff-hook vc-hooks lisp-float-type elisp-mode mwheel
term/x-win x-win term/common-win x-dnd tool-bar dnd fontset image
regexp-opt fringe tabulated-list replace newcomment text-mode lisp-mode
prog-mode register page tab-bar menu-bar rfn-eshadow isearch easymenu
timer select scroll-bar mouse jit-lock font-lock syntax font-core
term/tty-colors frame minibuffer nadvice seq simple cl-generic
indonesian philippine cham georgian utf-8-lang misc-lang vietnamese
tibetan thai tai-viet lao korean japanese eucjp-ms cp51932 hebrew greek
romanian slovak czech european ethiopic indian cyrillic chinese
composite emoji-zwj charscript charprop case-table epa-hook
jka-cmpr-hook help abbrev obarray oclosure cl-preloaded button loaddefs
faces cus-face macroexp files window text-properties overlay sha1 md5
base64 format env code-pages mule custom widget keymap
hashtable-print-readable backquote threads dbusbind inotify lcms2
dynamic-setting system-font-setting font-render-setting cairo
move-toolbar gtk x-toolkit xinput2 x multi-tty make-network-process
emacs)

Memory information:
((conses 16 8304927 6682874)
 (symbols 48 111731 347)
 (strings 32 1998260 614327)
 (string-bytes 1 74322513)
 (vectors 16 646829)
 (vector-slots 8 11831847 5926232)
 (floats 8 156374 74631)
 (intervals 56 356161 102742)
 (buffers 984 132))

--=20
Ihor Radchenko // yantar92,
Org mode contributor,
Learn more about Org mode at <https://orgmode.org/>.
Support Org development at <https://liberapay.com/org-mode>,
or support my work at <https://liberapay.com/yantar92>




Acknowledgement sent to Ihor Radchenko <yantar92@HIDDEN>:
New bug report received and forwarded. Copy sent to bug-gnu-emacs@HIDDEN. Full text available.
Report forwarded to bug-gnu-emacs@HIDDEN:
bug#58558; Package emacs. Full text available.
Please note: This is a static page, with minimal formatting, updated once a day.
Click here to see this page with the latest information and nicer formatting.
Last modified: Wed, 12 Apr 2023 16:00:02 UTC

GNU bug tracking system
Copyright (C) 1999 Darren O. Benham, 1997 nCipher Corporation Ltd, 1994-97 Ian Jackson.