From mboxrd@z Thu Jan 1 00:00:00 1970 Path: news.gmane.io!.POSTED.blaine.gmane.org!not-for-mail From: Dmitry Gutov Newsgroups: gmane.emacs.bugs Subject: bug#47711: bug#48841: bug#47711: bug#48841: bug#47711: [PATCH VERSION 2] Add new `completion-filter-completions` API and deferred highlighting Date: Fri, 27 Oct 2023 02:25:25 +0300 Message-ID: <9447dde3-b8e7-2ec0-9a9c-72c4cf9d12a8@gutov.dev> References: <3d3f894f-a6fa-53ae-5d50-c3aa9bffc73e@daniel-mendler.de> <56ab18b1-4348-9b2c-85bb-af9b76cd429a@daniel-mendler.de> <328f87eb-6474-1442-e1ca-9ae8deb2a84a@yandex.ru> <83fsvcbio7.fsf@gnu.org> <9f432d18-e70f-54c1-0173-1899fb66d176@gutov.dev> <877cnafv39.fsf@gmail.com> Mime-Version: 1.0 Content-Type: text/plain; charset=UTF-8; format=flowed Content-Transfer-Encoding: 8bit Injection-Info: ciao.gmane.io; posting-host="blaine.gmane.org:116.202.254.214"; logging-data="13304"; mail-complaints-to="usenet@ciao.gmane.io" User-Agent: Mozilla/5.0 (X11; Linux x86_64; rv:102.0) Gecko/20100101 Thunderbird/102.13.0 Cc: Daniel Mendler , Eli Zaretskii , Stefan Monnier , 47711@debbugs.gnu.org To: =?UTF-8?Q?Jo=C3=A3o_?= =?UTF-8?Q?T=C3=A1vora?= Original-X-From: bug-gnu-emacs-bounces+geb-bug-gnu-emacs=m.gmane-mx.org@gnu.org Fri Oct 27 01:26:49 2023 Return-path: Envelope-to: geb-bug-gnu-emacs@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 1qw9kV-0003Fv-Iq for geb-bug-gnu-emacs@m.gmane-mx.org; Fri, 27 Oct 2023 01:26:49 +0200 Original-Received: from localhost ([::1] helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1qw9kG-0004Fn-TF; Thu, 26 Oct 2023 19:26:32 -0400 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 1qw9kF-0004Fa-B9 for bug-gnu-emacs@gnu.org; Thu, 26 Oct 2023 19:26:31 -0400 Original-Received: from debbugs.gnu.org ([2001:470:142:5::43]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.90_1) (envelope-from ) id 1qw9kF-0001BL-2R for bug-gnu-emacs@gnu.org; Thu, 26 Oct 2023 19:26:31 -0400 Original-Received: from Debian-debbugs by debbugs.gnu.org with local (Exim 4.84_2) (envelope-from ) id 1qw9kk-0001jt-1t for bug-gnu-emacs@gnu.org; Thu, 26 Oct 2023 19:27:02 -0400 X-Loop: help-debbugs@gnu.org Resent-From: Dmitry Gutov Original-Sender: "Debbugs-submit" Resent-CC: bug-gnu-emacs@gnu.org Resent-Date: Thu, 26 Oct 2023 23:27:02 +0000 Resent-Message-ID: Resent-Sender: help-debbugs@gnu.org X-GNU-PR-Message: followup 47711 X-GNU-PR-Package: emacs Original-Received: via spool by 47711-submit@debbugs.gnu.org id=B47711.16983627696619 (code B ref 47711); Thu, 26 Oct 2023 23:27:02 +0000 Original-Received: (at 47711) by debbugs.gnu.org; 26 Oct 2023 23:26:09 +0000 Original-Received: from localhost ([127.0.0.1]:34682 helo=debbugs.gnu.org) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1qw9js-0001if-PF for submit@debbugs.gnu.org; Thu, 26 Oct 2023 19:26:09 -0400 Original-Received: from wout5-smtp.messagingengine.com ([64.147.123.21]:35319) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1qw9jq-0001i2-6s for 47711@debbugs.gnu.org; Thu, 26 Oct 2023 19:26:07 -0400 Original-Received: from compute6.internal (compute6.nyi.internal [10.202.2.47]) by mailout.west.internal (Postfix) with ESMTP id 2EE383201541; Thu, 26 Oct 2023 19:25:29 -0400 (EDT) Original-Received: from mailfrontend2 ([10.202.2.163]) by compute6.internal (MEProxy); Thu, 26 Oct 2023 19:25:29 -0400 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gutov.dev; h=cc :cc:content-transfer-encoding:content-type:content-type:date :date:from:from:in-reply-to:in-reply-to:message-id:mime-version :references:reply-to:sender:subject:subject:to:to; s=fm2; t= 1698362728; x=1698449128; bh=nfYjkDQr9InYu2ZSnMZaVycFGWxe0fiRFsS XVbDazFM=; b=B9y7PGCBb2P6HAAVnAaImUe1/I78DourGqkxNFb2N8jKLlJWTUY INFOmbZskTGIu0jQ6aKEEFyD50iWxXSL50u3eKWkyerBq9ykCtUxb9NxKLjZdjZD z5AAE7x3l2kgrOSDv2/JKigSVXJjSIMaP2msl8dUrN54gA6p0SGrmv/RDjXgJiqL OWYti8CplD0PBUMijat8gxzK5BoGJiAfheMUyh5z/8ogIgYzdT3SE2p1UUcATBdK qUJAqTPi+RxHkyqde4BSc8lLX51s8SeotGbhBDZ5D04DG+FVGcO/8b+XVsTc0ObB yBYk/hrQ0JHlS9s/7F57ZSCvLcWlJAxMGoA== DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d= messagingengine.com; h=cc:cc:content-transfer-encoding :content-type:content-type:date:date:feedback-id:feedback-id :from:from:in-reply-to:in-reply-to:message-id:mime-version :references:reply-to:sender:subject:subject:to:to:x-me-proxy :x-me-proxy:x-me-sender:x-me-sender:x-sasl-enc; s=fm3; t= 1698362728; x=1698449128; bh=nfYjkDQr9InYu2ZSnMZaVycFGWxe0fiRFsS XVbDazFM=; b=Uktki9Ku0b1BCRZ6V5/NEozC4bKv4U7lXJKeRnt5JfU6VtfNkom JAdwQeNWMUFNAuSBtcKrwoZsqSp8RzkgukV21G4B/a4Kf4CyQS87X/RZ0LQLRtJv JJ6UBfUg1QNJ5eFAnLjxh6jiF0qFY0sqQ0svi59CDrcX3nkkBW8H7gZ26nDjmFNA JLy9fkEhWHEfRhvyo9VrTbKQtTCNOXljIA855ilKhK5Udm+90VNTRREBCCBMAAfE u7VhtawbaXaXHEOf05jBSvXS8i/QK/dvFAXCa+YArEbqhBunDpPYD+IRfqSWi3Ti EmMyx/di/t3ou7s4KbEJMsC+h7dpOvWpEIA== X-ME-Sender: X-ME-Received: X-ME-Proxy-Cause: gggruggvucftvghtrhhoucdtuddrgedvkedrleefgddvvdcutefuodetggdotefrodftvf curfhrohhfihhlvgemucfhrghsthforghilhdpqfgfvfdpuffrtefokffrpgfnqfghnecu uegrihhlohhuthemuceftddtnecusecvtfgvtghiphhivghnthhsucdlqddutddtmdenuc fjughrpefkffggfgfuvfevfhfhjggtgfesthekredttdefjeenucfhrhhomhepffhmihht rhihucfiuhhtohhvuceoughmihhtrhihsehguhhtohhvrdguvghvqeenucggtffrrghtth gvrhhnpefhffehleejffegffeugefhkeektdffgfehjedvgeejtedtudehueffgffgfeej heenucevlhhushhtvghrufhiiigvpedtnecurfgrrhgrmhepmhgrihhlfhhrohhmpegumh hithhrhiesghhuthhovhdruggvvh X-ME-Proxy: Feedback-ID: i0e71465a:Fastmail Original-Received: by mail.messagingengine.com (Postfix) with ESMTPA; Thu, 26 Oct 2023 19:25:27 -0400 (EDT) Content-Language: en-US In-Reply-To: <877cnafv39.fsf@gmail.com> X-BeenThere: debbugs-submit@debbugs.gnu.org X-Mailman-Version: 2.1.18 Precedence: list X-BeenThere: bug-gnu-emacs@gnu.org List-Id: "Bug reports for GNU Emacs, the Swiss army knife of text editors" List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: bug-gnu-emacs-bounces+geb-bug-gnu-emacs=m.gmane-mx.org@gnu.org Original-Sender: bug-gnu-emacs-bounces+geb-bug-gnu-emacs=m.gmane-mx.org@gnu.org Xref: news.gmane.io gmane.emacs.bugs:273324 Archived-At: On 25/10/2023 20:52, João Távora wrote: > And make sure to put 300 000 symbols in the obarray. The symbols are > prefixed "yoyo" deliberately. > > (cl-loop repeat 300000 do (intern (symbol-name (gensym "yoyo")))) > > First a micro-benchmark: > > ;; Daniel's patch worked by Dmitry (v3) > (benchmark-run 50 > (let ((completion-styles '(flex))) > (completion-filter-completions "" obarray 'fboundp 0 nil) > (completion-filter-completions "yo" obarray 'fboundp 0 nil) > (completion-filter-completions "yoo" obarray 'fboundp 0 nil) > ));; => (12.192422429999999 3 0.107881004) > > > ;; lazy-hilit v4 patch attached in this email > (benchmark-run 50 > (let ((completion-styles '(flex)) > (completion-lazy-hilit (cl-gensym))) > (completion-all-completions "" obarray 'fboundp 0 nil) > (completion-all-completions "yo" obarray 'fboundp 0 nil) > (completion-all-completions "yoo" obarray 'fboundp 0 nil) > ));; => (12.267915333 4 0.14799709099999991) Note on this particular test: The loop on the first line only creates the symbols in the obarray, but not functions. As a result, all the completion-all-completions calls return nil because of the 'fboundp' predicate. When you change the predicate argument to nil, these timings change considerably (so it's wiser to reduce the number of repetitions to 1 or 5 at most), with completion-filter-completions being ~2.5x faster than the other. It is slower in the sorting step, though: mostly due to the extra consing created with the alist to-be-sorted, I guess, but also because of the repeated string-match call (which, while fast and much faster than the match-data call, is still not free). That's how when compared in practice using fido-vertical-mode the results were about the same.