From mboxrd@z Thu Jan 1 00:00:00 1970 Path: news.gmane.io!.POSTED.blaine.gmane.org!not-for-mail From: Ihor Radchenko Newsgroups: gmane.emacs.devel Subject: Re: [PATCH] add compiled regexp primitive lisp object Date: Mon, 23 Dec 2024 16:33:49 +0000 Message-ID: <87y106jr4i.fsf@localhost> References: <87mslxxddk.fsf@protonmail.com> <5He97LtsyeyQoTLU7d91oP2CLO8s_2afdgcNxozsFjzu8qGbB_7nXmsZL5O6Ej7K-tuEmngCcPKJpDAjxeKz4jk1DvqSUbdOLpw5U1vo1SY=@hypnicjerk.ai> <87le1avopk.fsf@protonmail.com> <2LOLmIp1X8w4CGbqq3qDrzmKVA0KzYNL1N9lBtWdB-MtEv9oCuYgJMYprG170wMPjYxeQImAmWOPatGTTl4KxZMlptNo9A9hnHt84vdN9EA=@hypnicjerk.ai> <87ttfxtszi.fsf@protonmail.com> <86r0b1o5sr.fsf@gnu.org> <868qx8o83w.fsf@gnu.org> <875xscec62.fsf@gmail.com> <87o764sb6y.fsf@gmail.com> <87a5cn7cnu.fsf@localhost> <86cyhj5xmc.fsf@gnu.org> <87ttavlc50.fsf@localhost> <86a5cn5v1n.fsf@gnu.org> <87r05zlas8.fsf@localhost> <8634ie60jd.fsf@gnu.org> Mime-Version: 1.0 Content-Type: text/plain; charset=utf-8 Content-Transfer-Encoding: quoted-printable Injection-Info: ciao.gmane.io; posting-host="blaine.gmane.org:116.202.254.214"; logging-data="3173"; mail-complaints-to="usenet@ciao.gmane.io" Cc: monnier@iro.umontreal.ca, mattiase@acm.org, arstoffel@gmail.com, eller.helmut@gmail.com, dmcc2@hypnicjerk.ai, pipcet@protonmail.com, emacs-devel@gnu.org, acorallo@gnu.org, stefankangas@gmail.com To: Eli Zaretskii Original-X-From: emacs-devel-bounces+ged-emacs-devel=m.gmane-mx.org@gnu.org Mon Dec 23 17:33:07 2024 Return-path: Envelope-to: ged-emacs-devel@m.gmane-mx.org Original-Received: from lists.gnu.org ([209.51.188.17]) by ciao.gmane.io with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.92) (envelope-from ) id 1tPlMh-0000Zn-8E for ged-emacs-devel@m.gmane-mx.org; Mon, 23 Dec 2024 17:33:07 +0100 Original-Received: from localhost ([::1] helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1tPlM0-0003H2-E1; Mon, 23 Dec 2024 11:32:24 -0500 Original-Received: from eggs.gnu.org ([2001:470:142:3::10]) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1tPlLz-0003Gt-9k for emacs-devel@gnu.org; Mon, 23 Dec 2024 11:32:23 -0500 Original-Received: from mout01.posteo.de ([185.67.36.65]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1tPlLx-0004ld-8t for emacs-devel@gnu.org; Mon, 23 Dec 2024 11:32:23 -0500 Original-Received: from submission (posteo.de [185.67.36.169]) by mout01.posteo.de (Postfix) with ESMTPS id 501E1240027 for ; Mon, 23 Dec 2024 17:32:19 +0100 (CET) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=posteo.net; s=2017; t=1734971539; bh=xPGtKi9D8sb1UvJ8YLrSPyjRhT8qF2TQ7L3NTIDiosc=; h=From:To:Cc:Subject:Date:Message-ID:MIME-Version:Content-Type: Content-Transfer-Encoding:From; b=YXn09GlPOrFz7OMcw28H7zo9wRWAP/vCmXOdACiJz+hRfi95pu7SLQxKjl5DT8BD2 QKQ1t/O45eYT6a3VziLKV7ru+Yjoef/6LtFTPukeHyi+r7eDX3lzpTQJkmQGnDG5CZ XM2MUIK+tKRycOLnxUBM05tpUVBMlOmNV2lkOnGWwAWeoQaPcbWj54+FO/EUQzYD+1 Nu4NYeDtnblCqDWR4mHXBW4Id7mS3HBv3wYhsTADCrmypOaVlTFp9lT2GoWpsvp6Oa zNa9TxkE18CPZbQn7axXQanMkiQJbpeFQSmC8ofQpcySPnq5xtG3drgTqaCiiGJIUt 7mCAQsIXsmLrA== Original-Received: from customer (localhost [127.0.0.1]) by submission (posteo.de) with ESMTPSA id 4YH3TG0g7vz6tvs; Mon, 23 Dec 2024 17:32:18 +0100 (CET) In-Reply-To: <8634ie60jd.fsf@gnu.org> Received-SPF: pass client-ip=185.67.36.65; envelope-from=yantar92@posteo.net; helo=mout01.posteo.de X-Spam_score_int: -43 X-Spam_score: -4.4 X-Spam_bar: ---- X-Spam_report: (-4.4 / 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_MED=-2.3, RCVD_IN_MSPIKE_H3=0.001, RCVD_IN_MSPIKE_WL=0.001, RCVD_IN_VALIDITY_RPBL_BLOCKED=0.001, RCVD_IN_VALIDITY_SAFE_BLOCKED=0.001, SPF_HELO_NONE=0.001, SPF_PASS=-0.001 autolearn=ham autolearn_force=no X-Spam_action: no action X-BeenThere: emacs-devel@gnu.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: "Emacs development discussions." List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: emacs-devel-bounces+ged-emacs-devel=m.gmane-mx.org@gnu.org Original-Sender: emacs-devel-bounces+ged-emacs-devel=m.gmane-mx.org@gnu.org Xref: news.gmane.io gmane.emacs.devel:326916 Archived-At: Eli Zaretskii writes: >> > That's almost negligible, IMO. >>=20 >> It is 2 seconds extra in my tests. >> Also, it is ~20% of all the time taken by regexp matching. >> I would not call it negligible. > > I guess we have different ideas of "negligible". 2 seconds out of 20 > is a very small part, and optimization should consider the other 18 > seconds first. I see your point. > And please note that we are not talking about some simple algorithmic > change which will slash the time by 10% -- that would be a no-brainer > indeed, we are talking about introducing a completely new Lisp object > into Emacs. That must be justified by some tangible gains. I did not want to complicate the topic even further in this thread, but if more justification is necessary... The other 18 seconds are largely regexp matching itself. If you look into my discussion with Mattias Engdeg=C3=A5rd in bug#63225, it was dedicat= ed to working around various corner cases of Emacs regexp engine and its inefficiencies. And we were only able to do that because Mattias is very familiar with the internals. Having compiler regexp object exposed to Elisp would open the following extra opportunities: 1. They could be inspected from Elisp, and hopefully optimized better. For now, there is simply no way to detect which parts of regexps are slow and which are not. 2. They could maybe even be constructed from Elisp, opening opportunities for custom regexp compilers that can be tailored to specific application needs rather than having to stick to hard-coded generic tradeoffs Emacs has to do without knowing the purpose of a regexp. --=20 Ihor Radchenko // yantar92, Org mode maintainer, Learn more about Org mode at . Support Org development at , or support my work at