From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from mp2 ([2001:41d0:8:6d80::]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) by ms0.migadu.com with LMTPS id sC9KIcSJhWAm7gAAgWs5BA (envelope-from ) for ; Sun, 25 Apr 2021 17:24:52 +0200 Received: from aspmx1.migadu.com ([2001:41d0:8:6d80::]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits)) by mp2 with LMTPS id WAjnHMSJhWDwBAAAB5/wlQ (envelope-from ) for ; Sun, 25 Apr 2021 15:24:52 +0000 Received: from lists.gnu.org (lists.gnu.org [209.51.188.17]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by aspmx1.migadu.com (Postfix) with ESMTPS id EB12F20A0F for ; Sun, 25 Apr 2021 17:24:51 +0200 (CEST) Received: from localhost ([::1]:54422 helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1lagcr-0005h4-SI for larch@yhetil.org; Sun, 25 Apr 2021 11:24:49 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]:36080) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1lagcP-0005gy-TA for emacs-orgmode@gnu.org; Sun, 25 Apr 2021 11:24:21 -0400 Received: from ciao.gmane.io ([116.202.254.214]:47036) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1lagcN-0006Ra-Q5 for emacs-orgmode@gnu.org; Sun, 25 Apr 2021 11:24:21 -0400 Received: from list by ciao.gmane.io with local (Exim 4.92) (envelope-from ) id 1lagcJ-0005D7-SM for emacs-orgmode@gnu.org; Sun, 25 Apr 2021 17:24:15 +0200 X-Injected-Via-Gmane: http://gmane.org/ To: emacs-orgmode@gnu.org From: Maxim Nikulin Subject: Re: [PATCH] optimize org-refile-get-targets Date: Sun, 25 Apr 2021 22:24:08 +0700 Message-ID: References: <87wnsqa6vf.fsf@gnu.org> Mime-Version: 1.0 Content-Type: text/plain; charset=utf-8; format=flowed Content-Transfer-Encoding: 7bit User-Agent: Mozilla/5.0 (X11; Linux x86_64; rv:78.0) Gecko/20100101 Thunderbird/78.7.1 In-Reply-To: <87wnsqa6vf.fsf@gnu.org> Content-Language: en-US Received-SPF: pass client-ip=116.202.254.214; envelope-from=geo-emacs-orgmode@m.gmane-mx.org; helo=ciao.gmane.io X-Spam_score_int: 28 X-Spam_score: 2.8 X-Spam_bar: ++ X-Spam_report: (2.8 / 5.0 requ) BAYES_00=-1.9, DKIM_ADSP_CUSTOM_MED=0.001, FORGED_GMAIL_RCVD=1, FORGED_MUA_MOZILLA=2.309, FREEMAIL_FORGED_FROMDOMAIN=0.249, FREEMAIL_FROM=0.001, HEADER_FROM_DIFFERENT_DOMAINS=0.25, NICE_REPLY_A=-0.001, NML_ADSP_CUSTOM_MED=0.9, SPF_HELO_NONE=0.001, SPF_PASS=-0.001 autolearn=no autolearn_force=no X-Spam_action: no action X-BeenThere: emacs-orgmode@gnu.org X-Mailman-Version: 2.1.23 Precedence: list List-Id: "General discussions about Org-mode." List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: emacs-orgmode-bounces+larch=yhetil.org@gnu.org Sender: "Emacs-orgmode" X-Migadu-Flow: FLOW_IN ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=yhetil.org; s=key1; t=1619364292; h=from:from:sender:sender:reply-to:subject:subject:date:date: message-id:message-id:to:to:cc:mime-version:mime-version: content-type:content-type: content-transfer-encoding:content-transfer-encoding: in-reply-to:in-reply-to:references:references:list-id:list-help: list-unsubscribe:list-subscribe:list-post; bh=It0DYdag41rxqKvKe3ocig9oaVb8awdK61v+Jrbcn9Y=; b=gGY/c0rn3yP1VHzWX1QBN20zlx9bWwU6nuk96H/BhryUFm1BtwRqizDZ0/hiNe4Bhntss4 ESLHihsLZeqN1NXpK2grNPEg7TueyGinZFBwfjgo/HPqb9wSajwak37IGdsZbU/I0mv+Uj IgF2Ljl7KkitrhfrmUCb7bx65SOL1l2TJLsZIaWojuD2aTqtXNmgYEmbhvRzxesWaC9M+a BWPGAAtePbMnSP+5Rfv535xQOgbj0vgqk0xbxrPfjox2O8TUI5vU9LmV1INRPsf3OJfT0v Sm4D7fu3JOwA4N+JOX5PSdLndLvgCnv7fF4kNjO90vapB0BqrcpGlINp6EmhgA== ARC-Seal: i=1; s=key1; d=yhetil.org; t=1619364292; a=rsa-sha256; cv=none; b=H23ee3s86LT09bilipGTENYBAEuK+PVyHMCYfpV/YEZeWhmkXtzLbMlHgXKSil6h9NQC4g zJNxiIPgmIw4aLuZlqZwIYcIdhbMe0yq8Mqqpq5mlsnV1Z9phEciYrW/YTvrB5zf1kuaBq jvmDUyhffNzbbukz2j8rygcfTc4JimrZZmgj52y7yNhjh8wh7LBC28eFLIoDreaDISXizF TERZ8L86HshLaRbq7kQ2RfxW4sxXXpmgnrZ8lkk2YEiAYF7sZvnrPOkZtWHzcjF3Wobc2g yIoLTIfECDz6IqXnwpOeLzIrMKVVm41YOuDrIW7ZuLCTKl1lA6H0POfOVv6g7A== ARC-Authentication-Results: i=1; aspmx1.migadu.com; dkim=none; dmarc=fail reason="SPF not aligned (relaxed), No valid DKIM" header.from=gmail.com (policy=none); spf=pass (aspmx1.migadu.com: domain of emacs-orgmode-bounces@gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=emacs-orgmode-bounces@gnu.org X-Migadu-Spam-Score: -1.85 Authentication-Results: aspmx1.migadu.com; dkim=none; dmarc=fail reason="SPF not aligned (relaxed), No valid DKIM" header.from=gmail.com (policy=none); spf=pass (aspmx1.migadu.com: domain of emacs-orgmode-bounces@gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=emacs-orgmode-bounces@gnu.org X-Migadu-Queue-Id: EB12F20A0F X-Spam-Score: -1.85 X-Migadu-Scanner: scn0.migadu.com X-TUID: 44b/vC7IKawu On 25/04/2021 19:25, Bastien wrote: > > Are you still using it? Did anyone tested it? I realized that I break cache a bit, so the patch should not be applied in the current form. I have an idea how to fix it but I have found more problems around (independent of my patch). I did not worried since the patch did not appeared on updates.orgmode.org (I guess, due to "git diff" instead of "git format patch".) Cache key is regexp. With my patch, level and max-level options share the same regexp. I think, cache for both options could be generated as for max-level and filtered in the case of "level". It may simplify the code. I would be grateful for other comments. I have not realized how to reduce number of regexps inside the loop without duplication of some regegexps. I have seen a statement that cache for compiled regular expressions in emacs is rather small so several patterns used on each cycle is enough to make it useless with significant performance penalty. Other issues: - Indirect buffer created with C-x 4 c does not reuse cache created for the main buffer, so first call in new buffer have to generate its own cache. - C-u C-c C-j promises to use headings from the buffer, but in the case of subtree indirect buffer, headings are not filtered to the narrowed part. - I have not solved the problem with default option for `org-refile' and `org-goto'. Maybe more detailed structure should be stored in history and formatted accordingly to current option at the moment of invocation.