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).
bug-gnu-emacs@HIDDEN
:bug#58558
; Package emacs
.
Full text available.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?
bug-gnu-emacs@HIDDEN
:bug#58558
; Package emacs
.
Full text available.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
bug-gnu-emacs@HIDDEN
:bug#58558
; Package emacs
.
Full text available.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>
bug-gnu-emacs@HIDDEN
:bug#58558
; Package emacs
.
Full text available.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
bug-gnu-emacs@HIDDEN
:bug#58558
; Package emacs
.
Full text available.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
bug-gnu-emacs@HIDDEN
:bug#58558
; Package emacs
.
Full text available.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>
bug-gnu-emacs@HIDDEN
:bug#58558
; Package emacs
.
Full text available.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?
bug-gnu-emacs@HIDDEN
:bug#58558
; Package emacs
.
Full text available.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
bug-gnu-emacs@HIDDEN
:bug#58558
; Package emacs
.
Full text available.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>
bug-gnu-emacs@HIDDEN
:bug#58558
; Package emacs
.
Full text available.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.
bug-gnu-emacs@HIDDEN
:bug#58558
; Package emacs
.
Full text available.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> --=-=-=--
bug-gnu-emacs@HIDDEN
:bug#58558
; Package emacs
.
Full text available.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.
bug-gnu-emacs@HIDDEN
:bug#58558
; Package emacs
.
Full text available.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>
bug-gnu-emacs@HIDDEN
:bug#58558
; Package emacs
.
Full text available.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
bug-gnu-emacs@HIDDEN
:bug#58558
; Package emacs
.
Full text available.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?
bug-gnu-emacs@HIDDEN
:bug#58558
; Package emacs
.
Full text available.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 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 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 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 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 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 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 ubnz5893dna2rO/Zs+fhw4efe+65goKCjz76KCQkZM+ePdnZ2b169bLGRkdHp6enFxYWZmVlTZs2 Tau9LouPjIxct25dYWFhbm7usmXL/Pz8bEsfeeSR1NTUgoKCQ4cOrVixwsfHp3nGcz/iMSJqo3Q6 ncFgGDJkSERERFpaWnFx8bFjx4KCgqwb3OrsVtfEc3/y5Mm5ubkANm3aZPm1Oj4+3rZ+9SuDyWTq 37//1q1bCwsL09LSQkND7dwbMTExpaWlsbGx+/fvT09Pnz59up+fX48ePeyJdXV1tU7YuHG2wPTp 01NSUh577DHLkL/44ovw8HD7x6tyFNSPoHq7aOwKTHdIaCEcry22C0fnHGgebIZYp1h4rr15oOda OAyHcECnTWg/CI6j4bbgzrp/TzVlX0GCcLCJDUHnHGjrT1jdYDzwDdpHAALCAc5/RactEB2Au7yv QkNDDQZDYmJiUFBQv379MjIy1qxZYykKCgo6fvx4QkKCn5/fsWPHNm7c6ObmtmHDhnfffdeyQWRk 5PHjxydMmBAYGBgdHW0wGMaPH2+tOSQkxGAwJCQkhIWFRUZGbtiwISsry9Gxbvd5e3sXFRW9+OKL Pj4+gYGBCxYs2L59e7ON6v7CY0TUXDZv3jx37p3/XCXL8h3Mc83IyJgzZ052dvbYsWODg4OjoqKs P3arnN3qmnjuu7u7P/nkk0aj8cknnwwKCgoKCurUqZO1VP3KEBcXt3fv3vXr1w8YMCA0NHTLli27 d++WZdmebkuSZK0HQHh4uNFo7N27tz2xsixburpgwYIbM9e4uLgDBw6sXr26c+fOLi4uH330UVZW lrVX6uNt9CioHEH1dtWPgtWiRYta2zzXNkKG5IL2v0anTXC93fP6FrHuS+E6F45/QKfP4fUV3BZB E1BX1C4EHp+h05dwngqNL7y2QfZsrpHcfU3ZVxYS3BbCcy0grq1z+G888C0670PnHHimQO5ct/6u 7qslS5bs2rXLepr179/faDT26dMHQFBQkNFojIqKApCVlTVjxgwA06dPt57SQ4cOTUxMtFaVlJT0 6aefWheXL19ue3Hx9/dfunRpz549LYtDhgw5duyYTqezLOr1+h49erSSH9FaGx4joubSIplrSkqK 0WgcOnTojUUqZ7e6Jp77APr06XOrttSvDHFxcUaj8cEH6+7ZDBs2zGg0ent7N9rnBiRJ+vDDD7dt 2yaEaHxrG/Hx8TfNXI8fP+7l5WVZfPzxxxv0SmW8jR4Flb7p3m4AACAASURBVCOo3m6jR8GiFWau beAJLQAdfguXmQBQlY4Ls5snVujRLhDQojwBEOj4CtxX4Of/gfk8avJRNtqyEdxX4OLS1j5PwFZT 9hUASHCOQ7tglL0MKHXr2vWF0xuo/ATVX0NyRsdX4ZKAc69AuXp391VwcPA333xjMpksizk5ObW1 tWFhYdY57D/99BOAqqqqsrIyANXV1dZUJj093fbycerUKdsfqkJDQ7/66ivr4vfffz9hwgTrYmFh YVVVVUpKiuXb/IkTJ4qKipptVPcXHiOiNq2ysvL06dM3/cmi0bNb3R2f++rUrwwAzp49W1JSYq0Z gIuLS2mp3U8rA7Isz5o166GHHho1apSiKI0H2OHMmTOnT5+2fD537pz9vWr0KKgcQfV2m3IUWlbb yFyv7MPZCdB0hcNweHyMs6/AXNHUWKUW5ks4/yZgBoDzx+GVDt3juLzhWqxjDJRq1ByG+yrIXqg5 jAuzoVxu7uE1q6bsK+EA1znQ9sDZ8ag9fm19x9dQk4uLy+sWr5bAaxt0g1G17do2d2Nf6fX6ESNG PPPMM9Y1Go3Gw8PDulhTU2P5YD2rrd+PPTw8YmNjBw4c6Onpafm2apvZODk5qTy6W1paOnLkyFdf fXXKlCkzZ84sLi6ePn26ZR4SNcBjRNTWlZSU3DQ/a/TsVnfH57469SsDgMrKygZrbuu+qYODw+LF i/v06TNmzJijR4/aH6juypUrd9Yre47CrY6gertNOQotqy1krhqYz6MmBzU5qNoOr3Q4jMClj5oa a/oJQF3aCsB8HuZzkK/NLYHcFfpxKPsjnKeh5iAuroL7Mjg8hcpbzI5tFZqwryRnuL0PoUXZH+t3 jrVWf1zecm3RXAalEhrfa2vu0r6qqKjIzMxs8Jzm+fPn7Ym1zAqaNGlSfn5+bW3tvHnzbL9NVlRU uLq6qoQbDIbJkyfLsty3b9+JEycmJyc/+uijZ86cubOB3Md4jIjauurq6puub8rZrU793FfX6JWh KVxcXJKTk7VabXR09MmTJ+9SK7fFnqNwqyOorilHoWW19mlhnhvgMsNm2QRoGr7pSTjC8bm6VzLZ H1tzANr/guRWtyi5Q3KD6T/WSuHyNi6ugOk0ZB9cPQKYcbUYcit+fLkp+0q0h9v7wFWUvdwwbQVg +qnuTQIWkjuEI0w/WoPv1r7Ky8sLCAiwPrBp+Vpp+b2jUeHh4Z9//vnBgwdra2uFEA1m2efn5z/8 8MPWRV9f382bNw8YMMCyGBAQYHkA02Qy5eXlTZ06VafT3cFMqV8CHiOie0Ov17/wwgtPPPHEPWux KWe3OvVzH/W3aTWam9xcU78yNIVOp0tOTq6pqRk1atQ9TltVxtuCR8GiueZLNKPWnrle3ogOQ9Dx NbQLQ/tfw/U9QKD6+j+QITnBaTIcht9ebNU2mH6G2z/qXo/lmghTGaoy60odRkCpxeVNAGA6CdkP ADT+MLWK72A315R91fE1aAJwcQU0XaANqvvPmtZXroNuIBzHQuMDbQ+4/A2mn1FVX/Pd21erVq3q 0aPHjBkzAgMDu3fvPnv27M2bN1snm6srLS0NDw/X6/Xu7u7x8fFVVVVeXl4ODnUvUFi5cmW3bt1m zZrVq1evsLCwxMRENze3vLw8S2lERMTKlSsHDx7ctWvXgICA1157raysrLi4uKnjuR/xGBHdGy4u Lm+//fbo0aPvWYtNObvVqZ/7AH788UeTyfT8889HRERERUU9++yz1iL1K0NTxMbGWl4O4OPj07Oe u7u7PbG+vr4BAQEBAQFOTk5ardbyuWvXrnY2rTLeFjwKFpcvX/b39+/Ro0dAQMADDzzQ9HabrrXP FqhMgXIFDiPhOApKDWoNOPc6rh5rhlilBucmwGkyXOdDqUHNd7gwo25eptwZ+hdx9sW6LS8ugfN0 ODwNU2ldftY6NWVf6R6B0MLt/etWXlyCSx8DQNWXgBmOo9HxZSiXUfMdzr0C5RJwl/fV4cOHx40b 98Ybb6SlpV25cuXQoUMxMTHWyebq3nrrrYSEhJycnJMnTy5atGjdunUffPBBdnb2wIEDL126lJub +9JLL02aNGn9+vU1NTVZWVlTpky5fLluWu7atWudnZ2nTZvWpUuXqqqq/Pz8cePGWUvJFo8R0f2q KWe3OvVzH0B5efnMmTPHjx//u9/9rry8PD8/f+3ausln6leGphg8eLBWq01KSrJdmZiYuHz58luF WK1Zs8Y2T7U8Q3b48OGnn37anqZVxtuCR8Fi3bp1AwYM+OKLLwDs2bPnhRdeaHrTRERE1Oa1yFux iNqc1n7PlYiI6BdCr9db/iJUeXm5/X8A1tvbW5ZlO9+33yw2btx4q6I9e/YsXLjwnvXEfk3pc1sc LxEREdFdtHnzZuuDOBMnTrQ/MDs72xrIe65ERERERERERERERERERERERERERERELeDePYpIDezY sUOn0x06dKilO0JERETUNrT2v6FFRERERGTBzJWIiIiI2gZmrkRERETUNjBzJSIiIqK2gZkrERER EbUNzFyJiIiIqG1g5kpEREREbQMzVyIiIiJqG5i5EhEREVHbwMyViIiIiNoGZq5ERERE1DYwcyUi IiKitoGZKxERERG1DcxciYiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIqK2Li4v7+uuvW7oXRERE rZempTtAzal9f+j/BG0AlGrU5KHifZhKbyO245+gCYBShZo8VCy5Ftvht3BJuG5jpQqnogCgfSSc /gIIXD2G8umACQAcx6J9KM5Nbq5hkV2ioqJef/317t27V1ZW5uTkJCYm/vDDDy3dKSIiIqKbaReO zvvh/BbaPQTdY/BcD89UCK1dsdre6LwPLjOvj21XV+owHA98C23Qtf80gXVFnhuh+w0gweMz6B4H AI0vvLZB9mz+AQKQpLb3Hjf7+9yUe64hISEGg+Hvf/97v379hg4d+tVXX+3cubNdu3aNRxIRERHd e67z4JF0bbF9P3TOgbaHXbHOb8Mz9drrfduFo3MOtL3qFvXj4JV+88AHvq3LYl0T4fgHQIL7B+jw +zscQgM6nc5gMAwZMiQiIiItLa24uNhoNAYFBVk3GDRoUGpq6pEjR3Jzc+fPn+/s7Gx/5Y888khq ampBQcGhQ4dWrFjh4+NjW6pec3R0dHp6emFhYVZW1rRp07Taa98PGu1zZGTkunXrCgsLc3Nzly1b 5ufnZy2Ki4vLyMjo37//1q1bCwsL09LSQkND7RzO3Llzd+7cac2SIyMjjUZjcHCw/TuEiIiI6N4R WgjHa4uW7FPzoH3BEoSDTWzIdVlvx4nwXH/zOM+1cBgO4YBOm9B+EBxHw23BHfX+FjIyMubMmZOd nT127Njg4OCoqCi9Xm8pCg0NNRgMiYmJQUFB/fr1y8jIWLNmjZ3Vent7FxUVvfjiiz4+PoGBgQsW LNi+fbu1VL3myMjI48ePT5gwITAwMDo62mAwjB8/3s4+W+6MJiQkhIWFRUZGbtiwISsry9Gx7rDF xcXt3bt3/fr1AwYMCA0N3bJly+7du2VZtmdEkiRZ6wEQHh5uNBp79+5t5w4hIiIiagkyJBe0/zU6 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> --=-=-=--
bug-gnu-emacs@HIDDEN
:bug#58558
; Package emacs
.
Full text available.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.
bug-gnu-emacs@HIDDEN
:bug#58558
; Package emacs
.
Full text available.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>
bug-gnu-emacs@HIDDEN
:bug#58558
; Package emacs
.
Full text available.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--
bug-gnu-emacs@HIDDEN
:bug#58558
; Package emacs
.
Full text available.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.
bug-gnu-emacs@HIDDEN
:bug#58558
; Package emacs
.
Full text available.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>
bug-gnu-emacs@HIDDEN
:bug#58558
; Package emacs
.
Full text available.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.
bug-gnu-emacs@HIDDEN
:bug#58558
; Package emacs
.
Full text available.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 FRUlhBg9evRf/vKXwsJCY5lLCLFv374zZ84MHjy4RYsWTzzxxDPPPHP69OmwsDAX/LwAAMCx3JmL +AQP2KZpRSmXKS0tveaaa6Kjo2tqapYsWSKEuHjx4qBBgx577LH9+/d36dJlypQp3bt3DwkJOX36 9IsvvtiyZcuOHTvW1NSYPskjjzwyZ86c2hwlhOjWrdvChQuLi4vbtGmTk5Pj5+cXFhZ24cKF//u/ /5s0aVJxcfEDDzzw5ZdfdurU6f333w8ODjZGOAAA4Hlcn6MkUTCf7AQ0gEb5LhDivffe86nL+v3j 4uLuuOOOLl26xMfHDxw4UKfTDR48uF27ditWrBgzZkxYWJhGo5kxY8a4ceN++OGHiIiIqKioX3/9 9bHHHqt9hsLCws2bNz/88MN+v/vwww8HDhz4xBNP9O3bt3PnztOnT//444+bNWtWXFxsbFAxaNCg GTNmDBo0qFWrVosWLfrkk0+Y3QcAgIeSjLUhV72YcRNVAA3iwftKCSF69eq1c+dO9w4GAADA4SJS sux5GHPzgIbQ6XQ5OTnGY/aVAgAA8AYFC8hCgNp5cFXKE0cOAAAAQFXsDheslQIAAACABiNKAQAA AECDsVYKAABAdYz7SklCMggD66YAdaIqBQAAoD41BiGEQbAyHFAvohQAAAAANBgT/AAAAFTEOLXP 3aMAoIyqFAAAgJrIcpTkpmEAUEKUAgAAAIAGI0oBAACoRcQL2XVuS0KiKgWoFWulAAAAVEG+SkoS BfNpgw6oF1EKgBdiPxYAHoluE4BHYYIfAG9T+7Uu+7EA8CBM7QM8DlEKgNepOz0GADxD3fcuSRL5 8yiqA6pGlAIAAFAdchSgfkQpAN6M6TEAPIJsdh/vXYBHIEoB8CqyjyN8rQvAM9Sd3cd7F+ARPDhK SZKk0+ncPQoAKsNCKQAAYBudTic1ogrswVEKAGTk/a8AwBPI3rs0fA0EeAgP3lfKYKDNMYC6zPpf AYAHqPvedZTZfYCr6PV6IYTdhSmqUgC8hHlJisUGANSPcjrguYhSALwFJSkAnqZ2S/Hf8N4FeBSi FADvREkKgAeoka9W4L0L8CAevFYKAIzkX+uyJQsATyCf2kdJCvA0VKUAeD7Z17psyQLAI5hN7eO9 C/AsRCkAni1qJiu2AXgeOuUAXoAJfgA8W021fE9eZsgA8AB0mwA8H1EKgFcpmM/XugDUjpIU4B2Y 4AfAe/C1LgD1owE64DWIUgC8B1/rAvAANEAHvAVRCgAAwE0oSQGejCgFwIOZrzcAADWTvWvRAB3w aEQpAJ6sRt6+DwBUK2qmfJUUOQrwaEQpAAAAV6izeQMAz0eUAuAlWG8AwJOwSgrwfEQpAJ5KtuSA eTIA1IxVUoD38eAoJUmSTqdz9ygAuA8LpQB4CPO9pMhRgBrodDqpEQViD45SAAAAnsFsLykAXsDH 3QOwn8HAuxKA37DkAIDHYJUUoBp6vV4IYXdhiqoUAI/EQikAnkL2ftU6oBlvWYB3IEoB8EwslALg Keq+X+15fqj7hgLAkYhSADyP7CteAFAt3q8AL0aUAuCB6n7Fy6oDAOrF+xXgvYhSADweqw4AeAre rwBvQpQC4Nn4iheAaplvywvAmxClAHg2vuIFoF5sywt4NaIUAA/DGm4AHoE3K8DrEaUAeBraoAPw CDScALwdUQoAAMDpmN0HeJ9GRalz5849/vjj4eHhgYGBPXv2XLt2be2ly5cvP/HEE23btm3RosUt t9yyc+fO2kv5+fm33357UFBQy5Yt77777qKiIlsuAYA5vuUFoE40nACaAvujlMFgGDNmzKeffjp/ /vzMzMyuXbveeeedX331lfHqI4888tFHH6Wnp2/evPm6664bOnRoYWGhEKK8vHzIkCFnz579+OOP P/zww59//jk5Obmmpsb6JQAwkn064VteACpFwwmgCfCx+5HffPNNTk5OVlbWrbfeKoTo37+/Xq// 73//m5iYmJ+f/8EHH3z88cejR48WQvTu3btz587p6emvvvrqmjVrjh8/vn379rZt2wohIiMjY2Nj N2zYMHLkSCuXHPTDAvB8LJQCoHo0nACaCPurUt26dTtw4MCQIUOMN7VabYcOHX755RchxBdffKHV aocPH2685OPjM2zYsE2bNgkhtmzZ0qtXL2NYEkJ07tw5JiZG8RIAAIDHoOEE0DTYH6X8/Py6du3a rFkz481Tp059//33ffv2FULk5eV16NChRYsWtXeOioo6fPiw8VJ0dLTp89hyCQAEaw8AeALzkhSz +wBv5ZgOflevXr3vvvsiIiImTpwohDh//nxQUJDpHYKCgq5cuXL16lWLl0pLS+t7lPESAAjB2gMA noCSFNBkOCBKXb58OTk5OS8vb926dX5+fo1/QhtJJsLCwown586dywEHHHj3QS2VjIcDDjjgwPRA Jn/eSJUMjAMOOKg9iIyMNI0Swl72t50wKikpGTlyZElJybZt2yIjI40nW7Vqdf78edO7lZaWXnPN Nb6+vhYvtWrVqr5HGS/ZzmAwcMABB959YCRJahkPBxxwwEHtgcV5yGoYGAcccGB64ChSY57xypUr AwcOrKio2LhxY+vWrWvPr1y58uGHHz5//ry/v7/xzMSJE3/44Yc9e/Y89NBDBw8e3LFjR+2do6Ki xowZk5aWZuWSfNCSJJzwbwFA5SJSsmqPCxYwuw+AukS8kC2b3Vcwn3cqwAPYHS4aNcHvySef/OWX XzZt2mSao4QQgwcPFkKsW7fOeLO8vDw7O9vYM33YsGF79+49ceKE8dJ3332Xn5+veAkAAEDtaviS F2ha7K9K7d+/v0ePHrNnz+7Xr1/tyRYtWvTu3VsI8eijj65duzY9PT00NDQtLe2rr77av39/mzZt qqqqevTo4e/vP2/evMrKyunTp7dp0yYnJ0cIYeWSfNBUpYAm6Y+qFN/1AlAZ85KURHccwEPYHS7s XyuVk5NTXV09a9Ys05PR0dFHjhwRQqSnpwcEBEybNq2srCwhIWHLli1t2rQRQvj4+Hz22WfTpk0b PXq0VqsdNWrU4sWLfxtK/ZcAAABUjRwFND2NWivlLlSlgKYpIiVLSEIIPqMAUBcbV0npk4rzygqF EEKSfANaTciJdNUAAVjjhqoUALgYrSYAqJRte0n9lqOEEAZDZVmJEEQpwLM5ZoteAACApknWAF0I y2VzfVKx6U2m1gBegKoUAABAg8kn9RnVU5L6Y2rf73wDQ5w2NAAuQpQCAABoAMsh6ncWS1KyHCWE YKEU4AWY4AcAAGArazmq/pKU7IxvFCUpwBtQlQIAALBJvTnKanNRWUnq/i03XBPMBzDAGyj8Jmdm Zvr6+lq8JElSYGBg9+7dg4KCnDAwAAAAFbGQo2zYnsG8JEWOAryGwi/zmDFjqqurrdzB19f3r3/9 62uvvabRMFcQAAB4ISsdJqzvcXe5qEpWkuq/iCVSgPdQiFL/+9//Fi1a9P33348bN65r165arfan n35as2bNjTfeeM8995w5c+bzzz9fvHhxhw4dnnnmGdeMGAAAwGXszlFCiNXJ38vOxPVnlRTgPRSi 1KlTp0pKSvLy8kJC/vjNf+mllwYNGuTj4/Pcc88999xz48ePX7FiBVEKAAB4mcbkKH1SsaHuQ31j yFGAV5EMBmt7xMXFxb300ktjx46Vnc/MzExJSTlw4IAQYt26dWPGjKmsrHTiMOuSJEkIYX3kAAAA 9rGvvYTM8vi9pjd9A0NogA6ok93hQqEqdfz4cclSX08fH5/Dhw8bj69evdqiRYuGvjAAAIBK1ZOj bAxRwlK3CXIU4H0UekWEh4cvWbLkypUrpierqqreeuuta6+9Vghx4cKF119/vXv37k4cYz0kSdLp dK5/XQAA4MUiXsi2cLaBOUrWbcI3kKl9gBrpdDqLdSMbKVSlHnvssSeeeCIiIkKn04WGhmo0mjNn zuTm5h4/fvy5554TQowfP/7rr7/+9NNP7R4BAACAijS847kp8xwlKEkBXkphrZQQ4s0333zttdeO Hj1ae6ZNmzaPPvro7NmztVrtv//973bt2iUnJzt5nHWwVgoAADiDfJWUJArm25SgasmWSAlWSQGq Z3e4UIhSVVVVWq1WkqTi4uKioiKDwXDttdeGhYXZP1JHIEoBAABniEjJ+uNGQyb1iXrqUeQoQP3s DhfW1kpVVVX5+fm98847Qog2bdr8+c9/vuGGG9yeowAAAFzD9hwlhCBHAU2NtSjl4+MTExNTUFDg qsEAAAC4jazhRIPWouuHy1v2CZZIAd5OoYPfypUrP//889dff72wsLCqqso1YwIAAHCDuqukGja1 7xd5SSpwCF37AC+nvEXvxYsXT548KYSQJEmjqRO9KioqtFqtcwdoCWulAACAw8kWStnScGLbzOIf N8hDlBBi8t54Bw4MgFM5a4veqKgojUbTs2dPK68KAADgZax8xrHYXsKUb1fqUUCToNwMXYWoSgEA AMeStUEvWFBvScq83bkpWk0AHsdZVSkAAIAmoe5CKYuU61HkKKApUY5SFRUVH3zwgV6vP3XqlBAi LCxs6NChY8eO9fEhhgEAAO+nmKAEIQpokhTiUElJSVJS0r59+0xPvvvuu0uXLt24caO/v78zxwYA AOAGtQulFEMU7SWApkyhGfqcOXMOHTr0xhtvHD9+vLq6urq6Oj8/f+HChbt27Zo7d65rhggAAOBU sh2l/rP95uXxe5fH77Weo254pq2TxwVA1RTaTkRHRz/00EMzZ86UnZ81a1ZGRkZ+fr4zx1Yv2k4A AAAHqtMGXYjnN7azfn+m8wHexFltJ06dOpWQkGB+fsCAAfPnz2/oiwEAAHguEhQAUwpRyt/f39ht Qqa4uLhFixbOGRIAAIDrzFp3wPSmxe59hCgA5hQm+I0cOTI/P3/btm0hIX9sNldcXDxw4MAOHTps 3LjR+SO0gAl+AADAUazM7iNBAU2Bsyb4zZw5c8CAAZGRkQMHDgwPD6+oqCgsLNyyZYvBYFi+fLmd gwUAAFAHWcMJU+QoANYpRKk+ffps3Ljx2WefXbt2rfGMJEkJCQkLFy5MTEx0/vCskSQpKSlJr9e7 dxgAAMCD1dT5Htp0dh85CvB6Op0uJyfH7ocrb7OblJS0a9eu0tLSwsJCSZI6duzYsmVLu18PAABA tVKUevcBQC3lKGUUHBwcHBzs1KE0FGulAACAA5mWpHwDQ+q9HwBvYZzgJkkW280oU9iitz4pKSkz Zsyoqamx7+EAAABuJ1soZVqSYnYfAEV2RqlFixa99tprRCkAAODBapjhAsB+tk7wk9mwYUN1dbVW q3XsaAAAAADAI9gZpXQ6nWPHAQAA4Eqy2X2mSyUG/6uziwcDwBMpT/DLzc398ssvjcf79++/8847 +/btu3TpUicPDAAAwJnqzu4zXSgVdVOQy0cDwPMoRKns7OyBAwdu3rxZCHHu3LmkpKTs7OzCwsJp 06a9//77LhkhAACA6/hG0bsPgE0UolRaWtrQoUNnzZolhFi9enVJScnWrVuPHTv2wAMPLFu2zCUj BAAAcDArs/smfEjvPgA2UYhS+/bte/jhh318fIQQn332Wa9evXr27CmEuOuuuw4ePOiKAQIAADhc /bP7AMBGClGqvLw8KChICFFdXf3ll18OHTrUeN7f37+srMzpowMAAHA0WUnKVPRkZvcBsJVClOrQ ocOPP/4ohPjss8/Kyspqo9TPP//8pz/9yemjAwAAcKiIF7JlJana2X2T98YPepTZfQBspdAMPTk5 efbs2fv371+/fn2nTp0SExOFEPn5+WlpafRDBwAAnsU8R4nfZ/f5Xk89CkDDKFSlZs6cmZCQ8O67 72o0moyMDI1GI4RITU09e/ZsamqqS0YIAADgABZzVG1JasK71KMANIxkMMjfU8yVl5c3b95ckn57 t/nuu+9CQ0PdOMHPOBJbRg4AACDqz1G/laQCQybkEKWAJsrucKEwwc/Iz8/P9GaPHj0a+jIAAADu VH+OEkKQowDYQWGCnxCipqZm3bp1TzzxxOjRow8cOCCEyMvLu3DhgvPHBgAA4ADmLftMc5RvIKuk ANhDoSp1+fLl5ORkvV5vvDl9+nQhxGuvvbZhw4YdO3a0b9/e6QMEAABoJLOWfVGhhn4AACAASURB VKY5ipIUAPsoVKVefvnlHTt2LF68+NixY7Unp02bVllZOWvWLCePTYEkSXQRBAAADZWysZ1vYMjk vfGT98aTo4CmTKfT1faDsINClProo49SUlKefPLJDh061J7s1q3bzJkzN2zYYPerAgAAuEZESp3Z fZIQvt2oRAFwAIUJfidOnDDuJSXTpUuXoqIi5wzJVnTwAwAANqjzgWH2113JUQCMjOuY7C5MKVSl AgICzpw5Y37+6NGjAQEB9r0kAACAa8hKUoJmfQAcR6Eq1bdv3wULFgwdOjQ4OLj25LFjx1566aV+ /fo5eWwAmjqL+8AYFSwY6eLBAPBM8oYTAOAoClv0fvfdd4mJiX5+fjqd7pNPPrntttuuXr36xRdf aLXabdu2xcfHu2ygptiiF/BuVhLUbyRRMJ8oBUBBREq2LErxLQwAc3aHC4UJfj169MjNzb3++uvX rl0rhFi3bt2mTZsSExNzc3PdlaMAeD/rOQoAbEVJCoATKUzwE0LcfPPNubm5ZWVlJ0+eFEKEhYUF BARcuHDhxIkTYWFhzh8hAJiQhBCiEW1LATQVt/xNL1rUOZNPSQqAQylEqYCAgC+//PKmm24KDAyM i4urPb9ly5annnqqoKDAuaMD0GTUO6nv9+yUP4/PQABspU8qPtnnsukZSWEiDgA0WL1R6tixYwaD oby8/OTJkyEhIaaXqqurc3JyTp065fzhAfBaUTOza6qVJvKxJgqAXR7qs0d2hq9jADhcvVEqOjq6 urpaCDFq1CiLd+jTp4+zBgXA2yk3lgAAe+mTikUfVkkBcLp6o9TRo0dzc3MnTJhw3333tW3b1vSS JEkdOnQYP36884cHwNvYGqJYEwXALvqk4ryyQtlJVkkBcIZ6o1R4ePj48ePXrFkza9aszp07u3JM ALySLS3OBcuiADSCxRzFKikATqKwr5Q6sa8U4HGsdJUgOwFwlOXxe4UQ84eeMW2Dzl5SAKyzO1wo N0OvqKj44IMP9Hq9sc9EWFjY0KFDx44d6+Oj/FgA+I15jqIGBcCh9EnFwixHsUwKgPMoxKGSkpKk pKR9+/aZnnz33XeXLl26ceNGf39/Z44NgDewUI8iRAFwgt+n9jFpBYCLKESpOXPmHDp06I033rj9 9ttDQ0OFEMePH//www+ff/75uXPnLly40CWDBOABbO8nQYgC4HAmJSkTEt1rADiRwlqp6Ojohx56 aObMmbLzs2bNysjIyM/Pd+bY6sVaKUAN7GxozlZRABytttvE/KFFf5zlixsAtnHWWqlTp04lJCSY nx8wYMD8+fMb+mIAVMh1WzzR3xyAc5h37TMiRwFwKoUo5e/vb+w2IVNcXNyiRQvnDMlWkiQlJSXp 9Xr3DgNQFZVufcviKADOJ5vdxxc3ABTpdLqcnBy7H64QpXr37v3KK68kJyeHhITUniwuLp43b16f Pn3sflV4OpV+XofbEZkAuFbdjaTqNO7jjQiAsylEqZkzZw4YMCAyMnLgwIHh4eEVFRWFhYVbtmwx GAzLly93zRDrw1opZyMvQRnZCYBb1Te1DwBsYZzgJtlbxVaIUn369Nm4ceOzzz67du1a4xlJkhIS EhYuXJiYmGjfS0K1yE5NF4kIgAcydu0zYnYfANdT6OBXq7S0tLCwUJKkjh07tmzZ0tnDso4OfnYj LDUJ5CIATcPy+L3GA/NteekUCsB2zurgJ4S4fPnynj17zp49W1NTI4T46aefai/deeeddpfD4HCu jkl8XgcAqAXfEgJwA4UotWvXrhEjRpSUlFi8WllZ6eOjHMbQSO4sJZGXAACqZDq7rw625QXgKgpB 6JlnnvH393/22WfDwsK0Wq3sqvkZOAW1JgAA6vp9T94zspIUf8IAuIxClPrhhx8+/fTT/v37u2Y0 sEgSksGBUxcISwAA71H37yN/3QC4kEKU0mq1HTt2dM1QUJ8G5ChiEgCgCah3dh8AuJBClEpKStq6 dWtkZKRrRgOLChaQiwAA+IPJ7D4TrJIC4FoKUWrRokV33323EGLkyJHXXnutS4YEAABgCxqgA3An hSg1ZMiQ4uLiBx98UFhqMlFRUUHnCQAA4ErM7gOgEgpRKiYmJjY2tr7NoyRJOnfu3IQJEzIzM3fv 3t2zZ8/aS61atSotLTW9c0ZGxv333y+EyM/P/9vf/qbX6yVJGjZsWHp6ert27Yz3sXIJAABAn1Rs nN0nw9Q+AK6nEKUyMzOtXN29e/fdd98dGBhofunixYsvvPDC4MGDa8906dJFCFFeXj5kyJC2bdt+ /PHHBoMhJSUlOTl5165dGo3GyiW7fjTvYdxXytjHj3VTAICmzGKOEoJ+SwDcoFEb7L7yyisTJ04c Pnx4r169TM9fuXKlqqoqPj4+KSlJ9pA1a9YcP358+/btbdu2FUJERkbGxsZu2LBh5MiRVi41ZpDe oMYgGtTHDwAAbyfvOQEALteogs+SJUtSU1PNp/9duHBBCBEQEGD+kC1btvTq1csYloQQnTt3jomJ 2bRpk/VLAAAAddXpOQEArteoqlRYWJjF82VlZUIIf39/80t5eXmxsbGmZ6Kiog4fPmz9UpNlnNrn 7lEAAKAKNJwAoCpOWYZkjFKrVq2KiYnx9/e//vrrV6xYYbx0/vz5oKAg0zsHBQUZG1RYudR01cg3 cQcAoMmqb6EUPScAuIVTotSVK1datmxZWFi4aNGiDRs2DBw4cNKkSW+99ZZjX0UyUbuJ8Ny5c73m IOKFbPOfWg0D44ADDjjggAPXH1gpSRl7Trh9hBxwwIGnHERGRppGCWGvRk3wq09iYqJpNal///4F BQVLliyZOnVqq1atzp8/b3rn0tLSVq1aCSGsXLKdwWDwnoMa+SxwSVLHwDjggAMOOODA5QemJSmL PSfcPkIOOODAUw4cRVJ8xsuXL+/Zs+fs2bM1NTWyS3feeackSXv27Ln55ptl+0rJpKamvvrqq+Xl 5Q899NDBgwd37NhReykqKmrMmDFpaWlWLskHLUnCCf8WqiJfJcUm7gCApm15/N7a4/lDi/64wJ9I AI1jd7hQqErt2rVrxIgRJSUlFq9WVlb6+Fh4hvXr12dkZLz33nvNmzc3ntm5c2dUVJQQYtiwYatW rTpx4oSxZcV3332Xn59/6623Wr/UFNXNUcwCBwA0ZTScAKBCClWpAQMG5OfnP/bYY2FhYVqt1vSS wWBo166dJEmHDh2aMmXK22+/HRsb27x58z59+hw8eDA+Pn7AgAFPP/20r6/vmjVr3n777ZUrVz7w wANVVVU9evTw9/efN29eZWXl9OnT27Rpk5OTI4Swckk+aG+vSlGSAgDAlGlJStStSkka9ucF0Ch2 hwuFKNWqVatPP/20f//+5peqqqqaNWsmOxkaGnrixAkhxPbt22fPnr13716DwdC1a9fnn38+OTnZ eJ8TJ05MmzZt8+bNWq121KhRixcvDgkJUbzkkJ/WU0SkZP1xQxKSxB8JAECTVnd23xlhsqlUwQL+ RAJoFGdN8NNqtR07drT8SB8fK693yy23bN682eKlsLCw//3vfw291JSRowAAMFFn4gYAuItCM/Sk pKStW7e6ZigwqtMDnVVSAACYsNi7DwDcQqEqtWjRorvvvlsIMXLkyGuvvdYlQ2ry6m7LS0kKAAAh 1daiaMsEQC0UotSQIUOKi4sffPBBIYSs7YQQoqKiwvwkHIi/EAAACCFMs5QpvnAE4EYKUSomJiY2 Nra+PYAbszcwLKozu0+Ibh2C3DUSAADUY9yn3f9v1D5ZluJjCAD3Ut6iV4W8uIOfrHcfPdABADBl +oeS3n0AHMLucKHQdgKuJCtJAQAAU/yhBKAqlif4tW7deuLEiQsXLmzdunVVVVV9D/71119ZK+Uo 5tvyMm8BAIA6amiDDkBFLEep+Pj48PBw40F1dXV9D2atlCPVyEuKLKUFAAAAVMtylPr8889lB3Aq +YwFSlIAANQl+1vJH0oAbsdaKfe74eWN5lP7KEkBAFBH3b+V/KEE4HZEKfc7f6lSdoY/DwAAAIDK EaVUhql9AAAo4W8lADXw4CglSZJOp3P3KBol4oXsOhtJCab2AQBggWyhFH8rATiETqdrTCM9D45S 3kDWtY8cBQCARbRBB6A+ljv4eQQ7NiQGAAAAACO9Xi8ascOTclUqNzf3yy+/NB7v37//zjvv7Nu3 79KlS+17PdSLVVIAANiAP5cAVEKhKpWdnX3bbbe98MIL/fv3P3fuXFJS0qVLl9q0aTNt2rSQkJD7 7rvPNaP0SrJp3wXzmdoHAIAyJsMDUAmFqlRaWtrQoUNnzZolhFi9enVJScnWrVuPHTv2wAMPLFu2 zCUj9E4RL2Qz7RsAAADwXApRat++fQ8//LCPj48Q4rPPPuvVq1fPnj2FEHfdddfBgwddMUBvVcNC LwAAGo4vHwGohkKUKi8vDwoKEkJUV1d/+eWXQ4cONZ739/cvKytz+ui8lGxqH6ukAAAAAI+jEKU6 dOjw448/CiE+++yzsrKy2ij1888//+lPf3L66LyR+dQ+9pICAECZxJePANRFoe1EcnLy7Nmz9+/f v379+k6dOiUmJgoh8vPz09LSPH17XLcxm9pHjgIAwLqCBfytBKA6ClWpmTNnJiQkvPvuuxqNJiMj Q6PRCCFSU1PPnj2bmprqkhF6Nb5dAwAAADyTZH2j26qqKq1WW1FR0bx589q9q7777rvQ0FA3TvAz jsQTt+iVze6TNJSkAAAAAHeyO1xYq0pVVVX5+fm98847fn5+pnsA9+jRg4VSdqq7SoocBQAAAHgo a1HKx8cnJiamoKDAVYMBAAAAAM+gsFZq5cqVn3/++euvv15YWFhVVeWaMXkrWQ90VkkBAAAAnkth rVRcXNzFixdPnjwphJAkydh2olZFRYVWq3XuAC3x0LVSESlZf9yQRMF8ZvcBAAAAbmZ3uFBohh4V FaXRaHr27GnlVQEAAACgqVGIUtnZ2dbvABsxuw8AAADwJgprpeAw9O4DAAAAvIhylKqpqVm3bt0T TzwxevToAwcOCCHy8vIuXLjg/LEpkCRJp9O5exQ2kZWkAAAAALidTqdrzJIlhQl+ly9fTk5O1uv1 xpvTp08XQrz22msbNmzYsWNH+/bt7X7hpqVuSYrZfQAAAICnU6hKvfzyyzt27Fi8ePGxY8dqT06b Nq2ysnLWrFlOHpsCg8FQm/HUzHyVFLP7AAAAALfT6/WN6QquEKU++uijlJSUJ598skOHDrUnu3Xr NnPmzA0bNtj9qk1L3ZLUxFsi3TcUAAAAAI6hEKVOnDiRmJhofr5Lly5FRUXOGZJXMV8llXprV7eM BAAAAIADKUSpgICAM2fOmJ8/evRoQECAc4bkXVglBQAAAHgjhSjVt2/fBQsWnD171vTksWPHXnrp pX79+jlzYN7AvCTFKikAAADAOyhEqVmzZv38888xMTHjxo0TQixcuHD48OGdO3c+c+bMnDlzXDFA j0ZJCgAAAPBSkmLPit27d8+YMWPbtm01NTVCCI1G069fv4ULF/bq1cslI7TA2P29Md02XCMiJeuP G5IomE9JCgAAAFAXu8OFwr5SZWVlN998c25ubllZ2cmTJ4UQYWFhxlVS+/bt69atm0ajvMkvhKAk BQAAAHgVhapUnz591q9ff+2118rOr1ixYtq0aRcuXPDxUQhjzqD+qlTEC9l1ZvcJUbCAkhQAAACg Os6qSh09ejQpKWnTpk3t2rUznrl06dLUqVMzMjJ69+6t1WrtGGuTUDdHCUpSAAA0hD6pOK+sUHZS 0mgnfPnnZi2YEQNAFRTejHJzcy9cuNCvX7/jx48LIQ4cOHDzzTdnZGQ89dRTW7dulZi1BgAAHEef VLw8fu/y+L3mOUoIYaip/uTeg64fFQBYpBCl4uLivvrqKz8/v379+r366qu9evU6c+ZMZmbm66+/ 3qxZM9cM0ePIe6DTuw8AANtYTFB18CcVgGood/ATQpw7d27UqFHbtm278cYb165dGx4e7oKRWaHm tVLyVVI07gMAwGbL4/dauSpptBO2/rmZHxP8ADiSs9ZKGbVq1Wrjxo333HPP7t273dJnwpPUqDHg AQCgWhaXRdXyDQyZkBPpyvEAgI0s56Lg4OCqqirZSYPBcPny5cjIyNqpfefPn6fzhCmm9gEAoGjf suKv/6M0kU+IyXvjXTAYALCb5Sh1yy23VFdXKz6YthNG5q3PhfgtR+XPY3YfAAB/sF6DqqXx4TMG ALWzaa2U2tRGuKSkJL1e78aRWA5RRqySAgDAhI0hyuj+LTdcE8yaAgDOpdPpcnJyjMeOXytVVVWl 1WqpPtWr/hzFvxkAAEY2hiiWRQHwLNaqUlVVVX5+fsuXL584caIrx6RIJR386pvXJwRT+wAA+I1+ eHHeL5ZzFNkJgBo4pYOfj49PTExMQUGB3cPyVhZCFAkKAABLyFEAvJXCBL+VK1c+/vjjwcHBY8eO bd++PZ3QRf3ro1gZBQCAqfrm9RGiAHgHhbYTcXFxFy9ePHnypBBCkiSNps6meBUVFW5phu6uCX71 NpmgWR8AoAnTjy/O+9GmfhKKIcpaPychhBAPJUbMvq1bw8YHAFY5a4veqKgojUbTs2dPK6/aRLAy CgAAI/3k4ry9tvbiM6VcjFLa6X79vtNEKQAqoRClsrOzLZ4vLCx8//33ZUUqb0UxCgDgBRrUi9wZ fANDHPE0nreJCwBvZeu+UiUlJTU1Ncbj6urq1atXp6amXrp0yZljq5crJ/hRjAIAuIvbw4+j2Lg4 SmF2nySEEA/3jUy9tavjhgYATpvgV15ePmPGjPfee6+srEx2KS4urqEv5pEs5ShCFADv5jWf4OFi DeonoRic6OcEQOUUolRaWtqyZcsSEhJiY2NXr149atSo8vLyjRs3Tp06dcaMGa4ZohtFvFB3fiPF KABeiuwE+9jXi0+xtwQAeASFCX7dunUbPHjwkiVLhBABAQE7duzo3r37Dz/8cPfdd69bt65z586u GmcdLpvgF5GSZfKqhCgAXoX41GS5txe5TTmKv7kAXMhZE/yOHz8+bNiw2tcwvsCf//znqVOnTp8+ PTMzs+FD9RjykpTgPR2AShGKvF7M1JCkSR6/EZONIUowAQSAh1CIUv7+/rW9JZo3b37u3DnjcWJi YmpqqnOH5namb/eSaEqN3wGohdszElupwiGs9MIVBCcAHkshSl1//fVvvPFGv3792rVrFx4enpWV 1b9/fyHE0aNHq6urXTJCteBdHoDruT5HkZ3gcOwpAsBbKUSpp59+Ojk5+Z577snJyUlOTn755Zfz 8/Nbt279/vvvx8fHu2aIbiGb3UdJCoB7SJJw/rpQ4hOchGIUAO+mEKVGjBiRnZ196NAhIcSzzz67 e/fuDz/8UAgRFRX1xhtvuGKA7lJ3dh/v9QDcwjegVWVZie1ZilAElSBEAWgKbN2it9bJkyevXr16 3XXXaTQaJ41JkQs6+Ml697G1BQAApuxpaM6MPgCq5KwOfuZCQ0Mb+hBPx+w+AIDXc+5eTxSjAHgj 5SiVm5ur1+tLSkpqampkl9LT091bm0pKStLr9c5+Id73AQCey8374RKiAKiYTqfLycmx++EKUSo9 Pf3JJ5+s7+rixYvdGKWcx3xHKQAAXM/NKaiRCFEAvJ3CWqlOnTp17949NTU1NDTUx0eeu1q3bu3M sdXL2WulWCgFoInz7E/wcBnCEgCv4Ky1UkVFRevXr4+Li7NzXACARvhti15J8g1o5dTWfGQnCEE0 AoCGUYhSMTEx58+fd81Q1ImeEwDc6Lcteg2GyrISIZwVpchR3o+MBABOoBCl5syZM2PGjFWrVl13 3XWuGZDbyRZK8VcHgBrYHnTIRd6GFAQAaqUQpQYPHrxixYro6OiIiAjzlVHbt2/XarVOG5ub1N2c FwDcRZ9UPH/omdoYNd90GacL8AkeAACrFKLU448/npmZ2bx58/Ly8qKiIteMCQDw2yqpBpSjHIEd VAEAsJlClFq3bt1zzz334osv+vr6umZAqsJCKQCul/9p6aYXfzYeS0IyuCZNUYMCAKCBFKJURUXF pEmTmk6Oipm1wfQmHykAuF5tjhJC2JmjyEUAADifQpTq3bv34cOHO3Xq5JrRuN3Vypo/blCSAuBy +qRi05vPb2wnhJA02glb/9zMzwu3RAcAwHMpRKk333xz0qRJFRUVOp0uODjYNWNyF1nvPgBwvd+6 n5toPy7ktmeduKMUAACwj0KUuu2224qLi8eMGSOEMG/WV1FR4VUd/Or27mOhFAAXy3m6WHZm8t54 t4wEAAAoUt6iNzY2VqonVdR33juwxgCAix3OrVOS6r+IYhQAAOqlEKUyMzOt3+HcuXMTJkzIzMzc vXt3z549a89fvnz573//+3//+98LFy7cdNNNr7/+eu/evY2X8vPz//a3v+n1ekmShg0blp6e3q5d O8VLLubVIRGAZ4jrH2Lcb9fYx69gAd/vAACgIo1axLx79+6bbropPz/f/NIjjzzy0Ucfpaenb968 +brrrhs6dGhhYaEQory8fMiQIWfPnv34448//PDDn3/+OTk5uaamxvolF5AtlKIkBcDFZA0nbnim rRC/TTx2UT90AADQEApVKeteeeWViRMnDh8+vFevXqbn8/PzP/jgg48//nj06NFCiN69e3fu3Dk9 Pf3VV19ds2bN8ePHt2/f3rZtWyFEZGRkbGzshg0bRo4caeVSYwZpq7oLpQDAZX78d/G2t+TdJnrf E+aWwQAAABs1qiq1ZMmS1NRU8xVTX3zxhVarHT58uPGmj4/PsGHDNm3aJITYsmVLr169jGFJCNG5 c+eYmBjFSwDgxcxzlBAi4oXsiJQs1w8GAADYqFFRKizM8pemeXl5HTp0aNGiRe2ZqKiow4cPGy9F R0eb3tmWS84mm93HQikALiOb12d0wzNt65TKBdVyAABUxykbPp4/fz4oKMj0TFBQ0JUrV65evWrx UmlpaX2PMl6ySDIRGflbn6u5c+facSCb3Zc/b6R9z8MBBxxw0KADfVJxXtlxUdfpwLJx+34Qlqhh zBxwwAEHHHDg6QeRkZGmUULYy3KU+vzzz0+dOiWEyMzMtBJmVMhgMNhx4Kjn4YADDjiw8eBP+qTl 8Xvzygpl9abJe+MNSTny1Zu/73SnksFzwAEHHHDAgUcfOIpk8RkDAwPfe++90aNH+/j47Nixw7TL ubk9e/bcfPPNps3Qn3/++VWrVh0//sdXra+88spLL7106dKlxMTETp06vffee7WXhg8frtVqs7Ky rFySD1qShOP+LYy9hv94cg3t+wA43fL4veYnfduETNgQKXtTEpIomM+bEgAAzmJ3uLDcwa9FixbL ly+/cuWKwWDYuHHjkSNHLN5t3LhxFitisbGxp06dunTpkr+/v/HM4cOHu3TpYrx08OBB0zsfPnx4 zJgx1i85l9nsPqe/IoCmTT/Owvoo304hE/4bKYT8TYnVmwAAqJPlKHXvvfemp6d/9tlnQogXXnih vgffddddPj4WnmHw4MFCiHXr1t1zzz1CiPLy8uzs7MmTJwshhg0btmrVqhMnThhbVnz33Xf5+fm3 3nqr9UvOI2s4AQAukHdE3rLPN/C3HGX+psT3OwAAqJPlCX4Gg+Hrr78+ffr03XffvWDBgqioKIv3 ad26tSRJhw4dmjJlyttvvx0bG9u8efM+ffoIIR599NG1a9emp6eHhoampaV99dVX+/fvb9OmTVVV VY8ePfz9/efNm1dZWTl9+vQ2bdrk5OQIIaxckg/aQRP8zGfRSFSlADiZPqk4r6xOlJq8N772uE4D dN6UAABwPrvDheUoVWvYsGFvvPFGTEyM+aWqqqpmzZrJToaGhp44cUIIUVFR8fzzz2dkZJSVlSUk JKSnp19//fXG+5w4cWLatGmbN2/WarWjRo1avHhxSEiI4iWH/LSm5DlKsCABgNOZ5yjfwJAJOZG1 N2VRijclAACczVlRSghRUVHxwQcf6PV6Y0+/sLCwoUOHjh071uLUPtdofJSymKP49heAU5nnKCEr SdEFBwAAl3NWlCopKUlKStq3b5/sfGJi4saNG2u7SrhYI6MUOQqAW5h37RvzcbfWEX61NylJAQDg enaHC4UteufMmXPo0KE33njj+PHj1dXV1dXV+fn5Cxcu3LVrV+0WV56HHAXA5fRJ8q59voEhpjkK AAB4FoVJellZWampqY8//njtmYiIiGeeeaasrCwjI2PhwoVOHp7jybtjkaMAuIR8iVTHkAlrI+u7 sxD0QAcAQO0UqlKnTp1KSEgwPz9gwIDCQvmMf89Ayz4ALmdekjLPUXW+6OGtCQAA1VOIUv7+/sZu EzLFxcUtWrRwzpBcig8rAFzAvGuf7A4W1nACAAB1U4hSvXv3fuWVV0pKSkxPFhcXz5s3z7h/lGeR ze5j/gwAF7BQksqpU5Iyz1G8OwEAoH4Ka6Vmzpw5YMCAyMjIgQMHhoeHV1RUFBYWbtmyxWAwLF++ 3DVDdKS6s/soSQFwAcWSlHkvnG4dgpw8KAAA0FgKUapPnz4bN2589tln165dazwjSVJCQsLChQsT ExOdPzwA8Gw2laRMSUKSxPrH+jl7YAAAoJGUt9lNSkratWtXaWlpYWGhJEkdO3Zs2bKlC0bmcMzu A+Bi5nvy+ra3WpKiFw4AAJ5DOUoZBQcHBwcHO3UoTiVfisCHFQDOJ8tRQogJ662WpOiFAwCA51Bo O+E9aI0FwLUs7skrv5NZSQoAAHgKD45SkiTpdDq7HsnnFQDOZWFqX2CIwiopSlIAALiWTqeTGhEM PDhK2c58lRSfVwA4j3mOEooN0PmKBwAAT2PrWikVMhhsnrPHKikArmIxRyk3QKckBQCAy+n1eiGE 3YUphapUVVVVAxKLKplPoQEA57GQo9rJp/bJUZICAMADWYtSVVVVfn5+1gHEzwAAIABJREFU77zz jstG4xRMoQHgKhZbTUzIkucoZh0DAOAFrEUpHx+fmJiYgoICVw3GFfi8AsBJbGk18RtmHQMA4PkU 1kqtXLny8ccfDw4OHjt2bPv27X18PGxtFdvyAnCBQxlncxcfMz9vMUcx6xgAAO8gWV8KFRcXd/Hi xZMnTwohJEnSaOpUsSoqKrRarXMHaIlxZZjiIi7zBlkF8/nqF4BjWGwvYco3LmTCaktRKiXrjxsS s/sAAHAzG8OFOYUqU1RUlEaj6dmzp5VXVS91b8t7dn/5Jw8eEJI05r9dW0f7uXs4ABpGIUcF1pOj 2EsKAABvoRClsrO9ZSKKyhpO/PF9tsHwv7sPPLI33t0jAmAr/ZDivBKlHFXf1L66pfIWvk1icz8A ALyS8tqnmpqarKysTZs2FRYWvvzyy926dcvLy2vbtm1QUJALxmc3lTfIMv0+W9W1MwAmlCf11ddn wsisVH5wzgiHDAwAALieQpS6fPlycnKyce8qIcT06dOFEK+99tqGDRt27NjRvn17pw/QbipukGXe LhmAmikmqMl2FJZVVioHAAANpTC35OWXX96xY8fixYuPHfujOdW0adMqKytnzZrl5LF5J4vtkt01 GADW6ZOKl8fvtZ6jOo636VdY5aVyAADQUApVqY8++iglJeXJJ5+sqqqqPdmtW7eZM2fOnz/fyWOz n5p7oJt/JrM2HQiA+zR2Op+MikvlAADADgpR6sSJE4mJiebnu3TpUlRU5JwhOYJaP7KYT+3zvZaS FKBG1nNUw0IUe0kBAOCNFKJUQEDAmTNnzM8fPXo0ICDAOUPyZrJPZtGTQwY9SkkKUJ36clRDE9Qf 6n6/o6pSOQAAsI9ClOrbt++CBQuGDh0aHBxce/LYsWMvvfRSv379nDw2O6l2dp95SYocBaiTeY56 aPuNzfwc1rhcPaVyAABgN4VPBrNmzfr5559jYmLGjRsnhFi4cOHw4cM7d+585syZOXPmuGKADWS+ bYt6PrLQbQLwUL5RIY3JUcPSvzS9qZ7vdwAAQGMofDjo0aNHbm7u9ddfv3btWiHEunXrNm3alJiY mJubGx+vyl1lzbZtUQnzkhTdJgB1kv22+gaGTPiwUb+th06X/XFDTd/vAACAxlDeovfmm2/Ozc0t Kys7efKkECIsLEwlq6QkSUpKSqrd88rSPVT07S8lKcBTyH5bG/mtBw0nAABQLZ1Ol5OTY/fDlaOU UWBgYFxcnN0v4wLyqX1q2raFkhTQdNFwAgAAL6Ucpc6ePZuRkbFr167i4mJJktq2bdunT5/777/f tBGFWxgMdefyyab2qSlHyUtSrShJASoln93X2cG/rSp5XwIAAEII4wQ3yd5vOhWi1Lfffjto0KBz 586Znnz//fdfeumlLVu2dO/e3b5XbTp+/LeFlsoTNlOSAlRKPrtvjSNn91GSAgDAmyi0nZgxY8bV q1dXrFhx8uTJmpqampqa06dPr1y58sqVK0888YRrhmgL+WoE1cyi2faWPEexSgpoQtTaUBQAADSe QlVq9+7ds2fPnjhxYu2Zdu3aPfDAA5cuXXrqqaecPLaGqPt5pWC+Kj6vmC+Rsn9/TwDO59jZfTSc AADAuylUpXx8fDp16mR+Pi4uTqvVOmdIXsLCEilyFKBujp3dR8MJAAC8m0KU6t+//9dff21+fteu Xf369XPOkBpLDZ9XzHOUoGsfoG7mZeTGMC9JMbsPAAAvozDBb8mSJSNHjmzXrt24ceNCQ0MNBkNx cfFHH32UkZFh3LRXhdTwecU8R/kGs0QKUC/zrz9ueKZto56RkhQAAN7OcpQKDg6uqqoSQmg0GkmS pk+fPn369GbNmhkMBuP5gICAQYMGHT16lGl+5iwvkdpCSQpQqb2vWigj974nzIEvoYaveAAAgGNZ jlK33HJLdXW19UdWVFQ4YTz2UNXabpZIAR5n7xqzMvKfHNlwgpIUAABeyXKUysrKcvE4GqXuRBrX s7gyqhY5CvAsvoEhEz6z/9c24oVseqADANAUKKyVgnXWQ5QQwjeSJVKAqskboDe+jGyaowAAgPdS jlK5ubl6vb6kpKSmpkZ2KT09XaNR6AHoYhrXVqUUclRgyISPKEkBqiZvgO7YMjINJwAA8F6SwWDt C9T09PQnn3yyvquVlZU+Pm6oa0mSJIQwjlw2l6ZggYsm0ijXo1giBahYfb/Ck/fGN+ZpZe9IkobZ fQAAqJ1puGgQhSCUnp5+++23p6amhoaGmqcmt+QoOdculLKeoIhPgPpZ+S32DWx0twlWSQEA0GQo ZKGioqL169fHxcW5ZjRqpliGauSX2QBcwLlNYlglBQBAU6IQpWJiYs6fP++aoTSek9YkKIYoIUTg ENpLAB7AelW5Mc8s35WBVVIAAHg7hbVSmZmZr7766qpVq6677jqXjUlR7XRGFyyUYk0U4DUs/jo3 8ldYPqnPSBISs/sAAPAQzlorNXjw4BUrVkRHR0dERLRu3Vp2dfv27VqttqEv6SiSJF339/Umtx3/ EtbXVJCgAM/i2O2zLYeo35GjAABQP51Ol5OTY/fDFaLU448/npmZ2bx58/Ly8qKiIrtfxhk6/n2d U5+/vhxFiAI8kWz/KOG8lVFM7QMAoGlQiFLr1q177rnnXnzxRV9fX9cMyHYa0zqUEz67mOco3bLo zgnBDn4ZAC4h+40e83G3xjybfGWUkSSEYGofAAAeQ6/Xi98n+NlBIUpVVFRMmjRJhTnKnLM/u9zy j+vIUYCHMi9JtY7ws++pLMzrI0EBANAkKUSp3r17Hz58uFOnTq4Zjd0cXpKSffDyDQzpNli+VAyA R8h5Wj5Z17ernc366lsfVTCfEAUAQJOjEKXefPPNSZMmVVRU6HS64GD11mQc/mWw7IMXi6MAz3U4 Vz5Zd0JGg3+j620ywcooAACaKoUoddtttxUXF48ZM0YIYd6sr6Kiwo0d/ADADnbsH1Vfx3PBvD4A AJow5S16Y2Nj61uJZfcKLQdz8uy+wf/q7OAXAOAq5pN1G1Rktl6MIkQBANCUKUSpzMxM14xDVWSz +6JuCnLXSAA0hvmWBg7IURSjAACAEEIxSuXm5ta37+/Vq1eHDBmihsKUCoYAQI3q22LbVpZyFCEK AAAYKUSpQYMGVVdX13e1srLSx0fhGZzO0R9r5NOBwu3s9AXAvcwboA9fGWv7w+U7R1GMAgAAdSkE ofT09JqaGtMzZ86c2bBhgyRJM2fO9MqeE/LpQP+jdx/gecyn9vkGhoR3D2jAU5iWpChGAQAAMwpR 6q9//av5yRdffPGRRx7Jy8vzvtl95l9jA/A4J3Mumk/ta/AqqbrIUQAAQEZjx2MkSXr66aeXLVvm 8NHYQvYRx4Gfb8y/xg69j9l9gOfJmn5IdqbBDdDNSlIAAAAy9kQpIURQUNCJEyccOxRb1f2I4yj7 lslzlBBi5HRm9wEeRv+wvLYcPblhDdDNUZICAADm7IlS5eXlr732Wvv27R0+Gjf6+j/yHOV7HSUp wPPkfSdfIjXo0YblKFnpm5IUAACwSGGtVFhYWFVVlemZmpqac+fOVVVVpaamOnNgNnHeRxzfwJAJ n1CSAjyM+XJHe+pRdUvflKQAAIBFClGqU6dOsiil0WhCQkKGDBkyZcoUZw7MJo76iCNvgB7Y2OlA AFzPYtc+dw0GAAB4PYUolZOT45JhuJm8ATo5CvBAjezaZxGz+wAAQH3sbDuhEjqdrjEP1ycVL4/f uzx+r6PGA0A97CtJ/X979x7eRJU/fvxMG0LvpQWJ2Aq9X8DCLkVAWaHlVlaQi/rgb+FRUQRdF4qg 6w1dVFa/gmIXkNWHffwqbrWsu2VdCigWWlDuiJdV95EWbAHlQRdLS6EttHR+f4zfmCZpaJJOMid9 v/6azElOTnJ6Mv3M+cwZ/dYIBQAARpObm+vN7Z2cz0p99dVXqqo6LbJ1zTXXePzG/uWYCGRFRhAg HaepfR5OSemzRigAAAg8zkOpQYMGXbp06bIvbm5uNpkukyKoHyVIlJeXe/BCF3GUILsPkJAeqX0A ACDgadGExxNTzgOhVatWtba2Ou5XFMVsNu/Zs2fdunWqqnozHeax6v+ZqDwvhKeJN07vH2XFlBQg nfLb7Vft6yxcKAUAAFxwHkrdf//9TvefPn164cKFhYWF/fr1W7NmTXBwsJ5t04Xj/aMES/YBMqv8 j8NN4Tw9J8KFUgAAoOPcSM978803Fy1aVFtbu3DhwqVLl4aHh+vXLJ8hiAICzNxD2Z6/mAulAABA h3UolDp69Oh99923bdu2wYMHb926NTvbi/9U/Ir7RwGBzZxOji4AAPCRyyyG3tLSsmzZsqysrL17 965YseLAgQPyxlGC+0cBAcfu/Mistz0f1HbZfVwoBQAAXHM1K3Xw4ME5c+Z8/vnnN95445///Od+ /fr5rFl6sPuXC0AAcLGKjNvaZvdxoRQAAHDN+azUuXPnHnjggeHDh3///ffr16/fvHmz7HGU48J9 5mQSgQD8xG5KCgAA4LKcz0plZWVVV1ffcsstS5YsCQsLO3LkiNOnpaSk6Nm2zuS4cN+sd8juA+Rm N9Xc/VdenB9pOyVFdh8AALgs56HUiRMnhBDFxcXFxcUuXuzfW/R6w5zNlBQgPbup5jtXdtr5EbL7 AADAZTkPhF566SWnt+i1I8t9pZws3LeWKSkAzjElBQAAOsJ5KJWfn+/jduinPMf+KikW7gMCgN0p Esutnk81c2deAADggcsshu6xmJgYpa3CwkKtqKGhIT8/32KxhIaGjhgxYv/+/dZXVVVVTZkyJSoq Kjo6evr06adOnfK+JZ25wBcAY3A8RTLlMS9OkXBnXgAA4D69rnQ6d+7c4sWLx44da92TmZmpbcyZ M6e8vHzVqlXx8fFr1qwZP378l19+efXVVzc1NY0bN85isRQXF6uq+thjj02aNOnAgQNBQZ7He44L oOeuSfa4NgAGwSkSAADgd7qEUo2NjS0tLdnZ2Tk5OXZFVVVVRUVFxcXF06ZNE0IMGzYsNTV11apV L7zwwvr1648fP757926LxSKESExMTE9Pf++99yZO9DDZxvG8tTkyNnV4D89qA2BY5us6LbuPC6UA AEAH6ZLgd/bsWSFERESEY1FZWVlwcPCECRO0hyaTKS8vr7S0VAixffv2oUOHanGUECI1NTUtLU0r 8ozjeWuukgICjzkydtbLnZbdx4VSAACgg3QJperr64UQ4eHhjkWVlZVXXXVVaGiodU9SUlJFRYVW lJzcJvvOWuQBx9Q+cyQLoAOBwG50c4oEAAD4hY6hVGFhYVpaWnh4eFZW1muvvaYV1dXVRUVF2T45 KiqqsbHx4sWLTotqa2vbexfbNS0SE3/6X+rpp58WQhx47ofK+uO2T+45OfZY7pu2z2GDDTYk3bAb 3d5U6JDd12qED8gGG2ywwQYbbOi6kZiYaBtKCE/pEko1NjZGR0efOHGioKDgvffeGz169D333PPK K6/o8V52VFUVQnxWfMJ2HS5zZMgtSxK1Iutz2GCDDRk3ynN+cFxlz/MK22b33dntkN8/IBtssMEG G2ywofdGZ1E6vUanpkyZcvjw4a+//vrxxx8vLCw8fvznk8rPP//80qVLz58/f/3116ekpLz55pvW ogkTJgQHB2/evNm+0Yoi2v8uHFebuGv3L7uF6LXsOwBfWpt9yPZhz8mxtyxJ9KyqhMVb7EKp6ue4 UAoAgC7HdXDhgo8CjIEDB1ZXVwsh0tPTT548ef78eWtRRUWFtk56enq63ZVR1qKOc7pqH3EUEKg6 MY5i7T4AAOAWXWKMTZs23XbbbRcuXLDu2b9/f1JSkhBCu9NUSUmJtr+pqWnLli033nijECIvL+/Q oUPffvutVvTZZ59VVVVpRR3Hqn1AALNbcMIc5eFaMvZxlBBCsHYfAABwjy73lUpOTi4pKZk6deqi RYvMZvP69etLS0vXrVsnhIiLi5s9e/aCBQsURYmLi3vxxRdbW1vnzZsnhLj11lv/+Mc/3nLLLc8+ +2xzc/ODDz44atSo0aNHe9MSVu0DAonduZJZ5Z6cKHESRzElBQAA3KdLKJWZmVlaWrpkyZLp06er qtq/f/+SkpJJkyZppatWrYqIiJg/f359ff3w4cO3b9/eu3dvIYTJZHr//ffnz58/bdq04ODgyZMn /+lPf+r4mzpN7WNKCoCt9uIopqQAAIC7fLTsROdyemWY3cXoQoi5h7J91yYA+rMd5ubo2Fllbp8r SXis7TI2xFEAAHR5Rl92Qm87H7G/IS+AAGSTh+dJHNX2LlLEUQAAwBsBEkod3ma/2gRXSQEB6P9O F3l4ZZPDkn3EUQAAwGO6XCvld6T2AYFJUbRoqlPykomjAACANwJkVsqWOY35KCAwjV6RpM1H5a5J dve1dtl9LNkHAAC8FAizUna3mplVxKp9QGBKGdUjxeM557bZfUxJAQAALwXCrJTjbXkBwJb9ghMA AABeC4RQCgAuw2HBCQAAAC9JH0rZZfdlzuvpr5YAMCbHKSmy+wAAgPekD6XssvtuuCvBP+0AYFhM SQEAAB1IH0oBgFuYkgIAAJ1C7lDKLrsv7bcsgw6gjTbZfUxJAQCAziNxKPVny87K+uO2e3LuYRl0 AD9LWLylTXYfU1IAAMBGbm6u4sV5VolDKVN8uBCcYQbQvrZxFAAAQCeSOJSyi6PMmWT3AWifIkzB /m4DAAAwkvLyclX1/MSr1KHUz8yRsbMKye4D0C5FEUeWkt0HAAA6TYCEUrN2EEcBaMPudlJcJQUA ADpXgIRSAGDLfsEJLqsEAACdLRBCKXMkV0kBaIsFJwAAgM4CIZQiuw+AK9xOCgAA6CAQQikAaJci FIULpQAAQOcz+bsBbivP+cH2Idl9AJxThBDEUQAAQC/yhVKV9SdsH5LdB8BR9f8QPgEAAH2R4AcA AAAAbpNvVsoW2X0AAABAACjP+cEu++xnimKOiDFgMpqEs1I2S3EZ8AsFAAAA4K524yghhKo219f4 sC0dJWEopf50uxgWNwYAAAC6AmPeL1LCBL//m5Uy5hcKwHuupviFEIoy6rmE9PHk9wIAECDs1uh2 ZMzrehRVlSwkObKzNjUnRghRsfdM6vAe/m4OgM63NvuQ6ycoQsw5lO2bxgAAgM51mXOmQsz17VFe URQhhAdhkXyzUimjfgqfiKOALkuyM0AAAEAI0YEgSgiRPNeIE1BOSXitFICAdtkpfiHEyAKWnAEA QDIdiaOEEGPuleYoL9+slJWiKDk5OeXl5f5uCADPGW2KHwAAdLoOBlHC59dE5ebm7tixw+OXSxxK AZBax39VAQCApFwf7s2RsVLf3EjiUEq6BTMAWHUwjupzmzTZ0gAAwI6Lw71BgigtwU1RPLzLknwr +AkvFtkA4HduTfEb4UcWAAC4y/XhPnJc7G+eN9Ahvgut4AdAUoE9xQ8AAEQXO9wTSgHwBeNP8QMA gI7w7GrngDzcE0oB0J2rOCopdtbfA+2HFQAA4/Pl+k8BGUcJQikA+ulSU/wAAPiLkRfFDezDPaEU AK948PMd2L+qABAYjPzfOaSQPDdWopvteoZQCoBzOh1EiaMAwJiIneAujumEUkCXYJADZOLs2HH3 d+nfXAAwGoMcIOBHREQeI5SCJ/jZhVv4jQYAn+EY3ZVxwPUxQim0i99iuIWfbwDwPR8crAf93jLs /8Xr+haApAil8DNiJzhFjAQAvufHgzI/+0AHEUp1LQRL4AAJAFLw/fGaAwTgLkKpwOGXMImfXQAA dKEoQlW9qYBjNKA3QikJ+H0qid9iAAB8zBwR01xf0/FYioM14HuK6t0JD79QFEUIIWPLPbM2+5CP 35GfYwAAAHQRHgcXzErJwOspfkcESwAAAIA3JA6lFEXJyckpLy/3d0N0xxQ/AAAA0Olyc3N37Njh 8cslDqW6jlk7EoUgNAIAAAAMhGulAAAADOenRacUxRwRQ7IJoCuPg4sgHRoDAAAAr/y0eK+qNtfX +LstAJwjlAIAADAuknAAw+JaKQkwxQ8AAAAYDaGUBNpO8RNKAQAQyH46hQrA8EjwkwlT/AAABDy7 OErxVzsAXA6hFAAAgFGU5/xgt4cTqYBhEUoBAAAYgtPUPqVbsF8aA+CyuFbK0MiWBgCgi3B60I/u G3JzUaZf2gPgsgiljIs4CgCArsPxoJ85r+cNdyX4oSkAOoZQyqCIowAA6Do++5P9JVIT1qX3vSbC L40B0EFcK2VE7cVR/WbF+r4xAABAbwf+2ua4b46MJY4CjI9ZKSNyjKO6/yr2zpXcUQoAgC5h1g4O +oAEmJWSgDmVOAoAgIBltwD62L+k+qslANxCKGU45RPb/J6aI2NnrSeOAgAgYNlloyQNjvJXSwC4 hQQ/w6k81eb3lCl+AAACFatMAVJjVsrQgkyKv5sAAAB04TSOMkeyxBQgDYlDKUVRcnNz/d2KTmaX LT1j60B/tQQAAOjK6XwU2SiAL+Xm5iqK51MXJPgZRfnEH+xS+4QQYT3oIAAAApDdyVMNU1KAXCT+ T11VVX83odPsWOQkjgIAAIGnvbw+5qMA3ysvLxdCeDwxJXGCXyCp2OkkjhqxrJ/vWwIAAHRFXh8Q MAil/K+9Kf4BY3v5vjEAAEA/zg/615DXB0hJ4gS/APDFmh/2/i9T/AAAdBVOUvsyYmet47gPSIlQ yp8c4yjBFD8AAF3G3EPZ/m4CAM+R4Oc35fOdTfHHM8UPAEDgsrm6/YppHPQBuRFK+U3lHmepff9i SgoAgIBljojRYilzZOy0JzjoA3JTZFxSXFuvUMaW21qbfcj2IVP8AAAAgO95HFwwK+U/NlP83JIP AAAAkAuhlN/YTvGz1AQAAAAgFxL8AAAAAHRdJPgBAAAAgO8YK5RqaGjIz8+3WCyhoaEjRozYv3+/ v1sEXQwbNmzYsGH+bgW8QicGgGHDhuXm5vq7FfBKbm4unSg7OjEA0IldlrES/GbOnFleXl5QUBAf H79mzZrNmzd/+eWXV199td3TSPCTHT0YAOjEAEAnBgA6MQDQiQGATpSdxz1ooFCqqqoqOTm5uLh4 2rRpQoiWlpbU1NRbb731hRdesHsmf6+yowcDAJ0YAOjEAEAnBgA6MQDQibILhGulysrKgoODJ0yY oD00mUx5eXmlpaW+bIN+87P61axfnpWkGVwyfiEy1qwfXdss41ctYyfK+Fuqa+UyJv/I+G1I+ueh Hxm/ahlr1pWMX4iMNXvMQLNSjz76aFFR0bFjx6x7li9f/tRTTzU0NNg9U7/Qn5plr1nXyqlZ9pp1 rZyaZa9Z18qpWfaada2cmmWvWdfKqdngNZs6vSkeq6uri4qKst0TFRXV2Nh48eJFs9ns+HzF5ha3 nYuaZa9Z18qpWfaada2cmmWvWdfKqVn2mnWtnJplr1nXyqnZNzV7wEAJfh1nqG8QAAAAgNQ8iy8M NCsVExNTV1dnu6e2tjYsLMxxSqq1tdWH7QIAAAAAewaalUpPTz958uT58+eteyoqKjIzM/3YJAAA AABwykCh1NixY4UQJSUl2sOmpqYtW7bceOONfm0UAAAAADhhoAS/uLi42bNnL1iwQFGUuLi4F198 sbW1dd68ef5uFwAAAADYM1AoJYRYtWpVRETE/Pnz6+vrhw8fvn379t69e/u7UQAAAABgz0D3lQIA 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> --=-=-=--
bug-gnu-emacs@HIDDEN
:bug#58558
; Package emacs
.
Full text available.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.
bug-gnu-emacs@HIDDEN
:bug#58558
; Package emacs
.
Full text available.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>
bug-gnu-emacs@HIDDEN
:bug#58558
; Package emacs
.
Full text available.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.
bug-gnu-emacs@HIDDEN
:bug#58558
; Package emacs
.
Full text available.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.
bug-gnu-emacs@HIDDEN
:bug#58558
; Package emacs
.
Full text available.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>
bug-gnu-emacs@HIDDEN
:bug#58558
; Package emacs
.
Full text available.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?
bug-gnu-emacs@HIDDEN
:bug#58558
; Package emacs
.
Full text available.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>
bug-gnu-emacs@HIDDEN
:bug#58558
; Package emacs
.
Full text available.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?
bug-gnu-emacs@HIDDEN
:bug#58558
; Package emacs
.
Full text available.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>
bug-gnu-emacs@HIDDEN
:bug#58558
; Package emacs
.
Full text available.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>
bug-gnu-emacs@HIDDEN
:bug#58558
; Package emacs
.
Full text available.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.
bug-gnu-emacs@HIDDEN
:bug#58558
; Package emacs
.
Full text available.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?
bug-gnu-emacs@HIDDEN
:bug#58558
; Package emacs
.
Full text available.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>
bug-gnu-emacs@HIDDEN
:bug#58558
; Package emacs
.
Full text available.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>
bug-gnu-emacs@HIDDEN
:bug#58558
; Package emacs
.
Full text available.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>
bug-gnu-emacs@HIDDEN
:bug#58558
; Package emacs
.
Full text available.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>
bug-gnu-emacs@HIDDEN
:bug#58558
; Package emacs
.
Full text available.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.
bug-gnu-emacs@HIDDEN
:bug#58558
; Package emacs
.
Full text available.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.
bug-gnu-emacs@HIDDEN
:bug#58558
; Package emacs
.
Full text available.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
bug-gnu-emacs@HIDDEN
:bug#58558
; Package emacs
.
Full text available.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>
bug-gnu-emacs@HIDDEN
:bug#58558
; Package emacs
.
Full text available.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
bug-gnu-emacs@HIDDEN
:bug#58558
; Package emacs
.
Full text available.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>
bug-gnu-emacs@HIDDEN
:bug#58558
; Package emacs
.
Full text available.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.
bug-gnu-emacs@HIDDEN
:bug#58558
; Package emacs
.
Full text available.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>
bug-gnu-emacs@HIDDEN
:bug#58558
; Package emacs
.
Full text available.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).
bug-gnu-emacs@HIDDEN
:bug#58558
; Package emacs
.
Full text available.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.
bug-gnu-emacs@HIDDEN
:bug#58558
; Package emacs
.
Full text available.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>
bug-gnu-emacs@HIDDEN
:bug#58558
; Package emacs
.
Full text available.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.
bug-gnu-emacs@HIDDEN
:bug#58558
; Package emacs
.
Full text available.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>
bug-gnu-emacs@HIDDEN
:bug#58558
; Package emacs
.
Full text available.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
bug-gnu-emacs@HIDDEN
:bug#58558
; Package emacs
.
Full text available.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.
bug-gnu-emacs@HIDDEN
:bug#58558
; Package emacs
.
Full text available.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>
bug-gnu-emacs@HIDDEN
:bug#58558
; Package emacs
.
Full text available.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.
bug-gnu-emacs@HIDDEN
:bug#58558
; Package emacs
.
Full text available.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.
bug-gnu-emacs@HIDDEN
:bug#58558
; Package emacs
.
Full text available.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.
bug-gnu-emacs@HIDDEN
:bug#58558
; Package emacs
.
Full text available.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?
bug-gnu-emacs@HIDDEN
:bug#58558
; Package emacs
.
Full text available.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>
bug-gnu-emacs@HIDDEN
:bug#58558
; Package emacs
.
Full text available.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
bug-gnu-emacs@HIDDEN
:bug#58558
; Package emacs
.
Full text available.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?
bug-gnu-emacs@HIDDEN
:bug#58558
; Package emacs
.
Full text available.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?
bug-gnu-emacs@HIDDEN
:bug#58558
; Package emacs
.
Full text available.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>
bug-gnu-emacs@HIDDEN
:bug#58558
; Package emacs
.
Full text available.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.
bug-gnu-emacs@HIDDEN
:bug#58558
; Package emacs
.
Full text available.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?
bug-gnu-emacs@HIDDEN
:bug#58558
; Package emacs
.
Full text available.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>
bug-gnu-emacs@HIDDEN
:bug#58558
; Package emacs
.
Full text available.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.
bug-gnu-emacs@HIDDEN
:bug#58558
; Package emacs
.
Full text available.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>
bug-gnu-emacs@HIDDEN
:bug#58558
; Package emacs
.
Full text available.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.
bug-gnu-emacs@HIDDEN
:bug#58558
; Package emacs
.
Full text available.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>
Ihor Radchenko <yantar92@HIDDEN>
:bug-gnu-emacs@HIDDEN
.
Full text available.bug-gnu-emacs@HIDDEN
:bug#58558
; Package emacs
.
Full text available.
GNU bug tracking system
Copyright (C) 1999 Darren O. Benham,
1997 nCipher Corporation Ltd,
1994-97 Ian Jackson.