Org-mode mailing list
 help / color / mirror / Atom feed
From: Maxim Nikulin <>
Subject: Re: org-refile-use-cache and jumps using org-refile or org-goto
Date: Thu, 4 Mar 2021 20:51:37 +0700
Message-ID: <s1qola$158l$> (raw)
In-Reply-To: <>

On 03/03/2021 09:34, Samuel Wales wrote:
> until recently in maint, ido and ido hacks with both refile and refile
> goto [note: org-refile with a goto arg, not org-goto] has worked
> perfectly.  with no cache.  now, there is an issue, where with no
> cache that i know of, the first use, or the first use in a long time,
> will actually present a huge file list that includes crazy elements
> and is not constrained by even the verify function.

Concerning performance. After reading your message I have realized that 
it should be really fast to extract several thousand headings from a 
buffer using regexp. However actually it is not so:

(benchmark-run 10 (and (org-refile-get-targets) nil))
| 9.868742533999999 | 40 | 2.999932755999996 |

So preparing the list of refile targets currently takes almost precisely 
1 second. It is slow. Results are same for org-9.1.6 and 
release_9.4.4-231-gf46925. I am surprised however that 9.1.6 and 9.3.1 
are installed as system packages and have compiled files. I have not 
compiled git version but it works with the same speed.

(length (org-refile-get-targets))
: 3220


   (require 'org-refile)
   (setq org-agenda-files '("~/notes/"))
   (setq org-refile-use-cache nil)
   (setq org-refile-use-outline-path t)
   (setq org-outline-path-complete-in-steps nil)
   (setq org-refile-targets '((org-agenda-files :maxlevel . 5)))

Some lines from profile:

- org-refile-get-targets                   8414  74%
...   - org-get-outline-path               7403  65%
...     - org--get-outline-path-1          7286  64%
...       - org-up-heading-safe            6328  56%

There is a room for improvement. Outline paths could be obtained in a 
single pass without backward search. It should speed up building the 
list of targets by 2 or 3 times.

Though it is unrelated to issues with default option and cache entries 
when both ways to call org-refile are used: directly and through org-goto.

  reply	other threads:[~2021-03-04 13:53 UTC|newest]

Thread overview: 10+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2021-03-02 17:15 Maxim Nikulin
2021-03-03  2:34 ` Samuel Wales
2021-03-04 13:51   ` Maxim Nikulin [this message]
2021-03-04 21:03     ` Samuel Wales
2021-03-06 16:15       ` [PATCH] optimize org-refile-get-targets Maxim Nikulin
2021-04-25 12:25         ` Bastien
2021-04-25 15:24           ` Maxim Nikulin
2021-03-04 14:47 ` org-refile failed due to default option stored by org-goto Maxim Nikulin
2021-03-04 22:53   ` Samuel Wales
2021-03-09 11:57     ` Maxim Nikulin

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:

  List information:

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to='s1qola$158l$' \ \ \

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link

Org-mode mailing list

This inbox may be cloned and mirrored by anyone:

	git clone --mirror list/git/0.git

	# If you have public-inbox 1.1+ installed, you may
	# initialize and index your mirror using the following commands:
	public-inbox-init -V2 list list/ \
	public-inbox-index list

Example config snippet for mirrors.
Newsgroups are available over NNTP:

AGPL code for this site: git clone