Since org-sidebar
uses it, it probably makes more sense for org-ql
to be the primary focus of the repo. But it also uses org-agenda-ng--format-element
, so org-agenda-ng
probably should be part of that package, too.
And maybe pick a single name for them…
deadline
- Be sure to explain how it works with regard to the implied date and
today
. date
,scheduled
- No implied date, but supports
today
.
- [ ]
category
- [ ] Any date
- e.g. it would search for timestamps (active/inactive?) anywhere in an entry
Because the existing ones only search the special date property line.
I think it should probably be enabled in most cases, to avoid missing results that users would expect to find, but it will reduce performance in some cases, so users should be able to turn it off when they don’t need it.
- State “DONE” from [2018-05-10 Thu 15:02]
[2017-12-31 Sun 17:54] I wonder if, instead of parsing the whole buffer with org-element-parse-buffer
, we could simply work on a list of heading positions, e.g. a loop would search forward to the next heading position, then call whatever predicates it needed at the heading’s position, using save-excursion
around each function call. The predicates would need to be updated to get their data from the buffer, instead of using org-element-property
, but that wouldn’t be hard.
[2018-05-10 Thu 15:01] I already changed to using buffer-parsing predicates instead of org-element-parse-buffer
.
- State “DONE” from [2018-05-10 Thu 14:59]
If I made the date
selector a macro, I could avoid the need to quote the comparator.
Also, maybe instead of having a single date
selector, I should have scheduled
, deadline
, etc.
- State “DONE” from [2018-05-09 Wed 17:30]
elfeed-search--update-list
byte-compiles lambdas returned by elfeed-search-compile-filter
. Maybe I could do something like this too.
If I can get this working, I should profile it to see what difference it makes.
Going to try byte-compiling the predicate function:
(elp-profile 10 nil (org-agenda-ng "~/src/emacs/org-super-agenda/test/test.org"
(and (or (date :date '= (org-today))
(date :deadline '<= (+ org-deadline-warning-days (org-today)))
(date :scheduled '<= (org-today)))
(not (apply #'todo org-done-keywords-for-agenda)))))
Function | Times called | Total time | Average time |
---|---|---|---|
org-agenda-ng–agenda | 10 | 0.8370581039 | 0.0837058104 |
org-agenda-finalize-entries | 10 | 0.652886608 | 0.0652886608 |
org-super-agenda–filter-finalize-entries | 10 | 0.641794501 | 0.0641794501 |
org-super-agenda–group-items | 10 | 0.636057006 | 0.0636057006 |
org-super-agenda–group-dispatch | 130 | 0.631911849 | 0.0048608603 |
org-super-agenda–group-tag | 50 | 0.592883869 | 0.0118576773 |
list | 2720 | 0.5792795169 | 0.0002129704 |
mapcar | 331 | 0.2333591920 | 0.0007050126 |
org-agenda-ng–filter-buffer | 10 | 0.09247626 | 0.009247626 |
org-agenda-ng–format-element | 150 | 0.0649320479 | 0.0004328803 |
org-entry-get | 860 | 0.0408285349 | 4.747…e-05 |
org-agenda-ng–date-p | 910 | 0.0385646249 | 4.237…e-05 |
org-element-headline-parser | 150 | 0.0374417470 | 0.0002496116 |
org-is-habit-p | 270 | 0.0290107389 | 0.0001074471 |
org–property-local-values | 270 | 0.0268615979 | 9.948…e-05 |
org-get-property-block | 270 | 0.0244613309 | 9.059…e-05 |
org-get-tags-at | 150 | 0.017875864 | 0.0001191724 |
org-super-agenda–group-habit | 10 | 0.015910656 | 0.0015910655 |
mapc | 2540 | 0.0158616290 | 6.244…e-06 |
org-agenda-ng–add-faces | 150 | 0.0143329670 | 9.555…e-05 |
Now the same thing without byte-compiling:
(elp-profile 10 nil (org-agenda-ng "~/src/emacs/org-super-agenda/test/test.org"
(and (or (date :date '= (org-today))
(date :deadline '<= (+ org-deadline-warning-days (org-today)))
(date :scheduled '<= (org-today)))
(not (apply #'todo org-done-keywords-for-agenda)))))
Function | Times called | Total time | Average time |
---|---|---|---|
org-agenda-ng–agenda | 10 | 0.846645537 | 0.0846645537 |
org-agenda-finalize-entries | 10 | 0.662896805 | 0.0662896805 |
sort | 40 | 0.591123256 | 0.0147780814 |
org-entries-lessp | 400 | 0.5901201620 | 0.0014753004 |
mapcar | 201 | 0.2318270599 | 0.0011533684 |
org-agenda-ng–filter-buffer | 10 | 0.092519787 | 0.0092519787 |
org-super-agenda–filter-finalize-entries | 10 | 0.0664278040 | 0.0066427804 |
org-agenda-ng–format-element | 150 | 0.064658994 | 0.0004310599 |
org-super-agenda–group-items | 10 | 0.0602504089 | 0.0060250408 |
org-super-agenda–group-dispatch | 130 | 0.0561904470 | 0.0004322342 |
org-entry-get | 860 | 0.0437458889 | 5.086…e-05 |
org-agenda-ng–date-p | 910 | 0.0382623409 | 4.204…e-05 |
org-element-headline-parser | 150 | 0.0374662920 | 0.0002497752 |
org-is-habit-p | 270 | 0.0320861079 | 0.0001188374 |
org–property-local-values | 270 | 0.0298690430 | 0.0001106260 |
org-get-property-block | 270 | 0.0274716649 | 0.0001017469 |
org-super-agenda–group-habit | 10 | 0.019117901 | 0.0019117901 |
org-get-tags-at | 150 | 0.0178958930 | 0.0001193059 |
mapc | 2470 | 0.0150361130 | 6.087…e-06 |
org-agenda-ng–add-faces | 150 | 0.0143092169 | 9.539…e-05 |
Virtually indistinguishable. Going to try moving the byte-compile
call from the org-agenda-ng
macro to other places…
(elp-profile 10 nil (org-agenda-ng "~/src/emacs/org-super-agenda/test/test.org"
(and (or (date :date '= (org-today))
(date :deadline '<= (+ org-deadline-warning-days (org-today)))
(date :scheduled '<= (org-today)))
(not (apply #'todo org-done-keywords-for-agenda)))))
Function | Times called | Total time | Average time |
---|---|---|---|
org-agenda-ng–agenda | 10 | 0.8476316779 | 0.0847631678 |
mapcar | 331 | 0.8159452220 | 0.0024650913 |
org-agenda-ng–filter-buffer | 10 | 0.674217912 | 0.0674217912 |
org-element-headline-parser | 150 | 0.6171195889 | 0.0041141305 |
line-beginning-position | 620 | 0.5802579680 | 0.0009358999 |
org-agenda-finalize-entries | 10 | 0.082065157 | 0.0082065157 |
org-super-agenda–filter-finalize-entries | 10 | 0.0708772279 | 0.0070877227 |
org-super-agenda–group-items | 10 | 0.065523103 | 0.0065523103 |
org-agenda-ng–format-element | 150 | 0.0652783740 | 0.0004351891 |
org-super-agenda–group-dispatch | 130 | 0.0614253589 | 0.0004725027 |
org-entry-get | 860 | 0.0494023029 | 5.744…e-05 |
org-agenda-ng–date-p | 910 | 0.0388435519 | 4.268…e-05 |
org-is-habit-p | 270 | 0.0375687549 | 0.0001391435 |
org–property-local-values | 270 | 0.0353892929 | 0.0001310714 |
org-get-property-block | 270 | 0.0329700440 | 0.0001221112 |
org-super-agenda–group-habit | 10 | 0.024468601 | 0.0024468601 |
re-search-backward | 1500 | 0.0186344089 | 1.242…e-05 |
org-get-tags-at | 150 | 0.0180038809 | 0.0001200258 |
mapc | 2540 | 0.0156518099 | 6.162…e-06 |
org-agenda-ng–add-faces | 150 | 0.0144141080 | 9.609…e-05 |
Doesn’t seem to make any difference.
(org-agenda-ng org-agenda-files
(and (or (date :deadline '<= (org-today))
(date :scheduled '<= (org-today)))
(not (apply #'todo org-done-keywords-for-agenda)))
((group (tags "bills"))
(group (todo "SOMEDAY"))))
(org-agenda-ng org-agenda-files
(and (or (date :deadline '<= (org-today))
(date :scheduled '<= (org-today)))
(not (apply #'todo org-done-keywords-for-agenda))))
(org-agenda-ng "~/org/main.org"
(and (or (date :deadline '<= (org-today))
(date :scheduled '<= (org-today)))
(not (apply #'todo org-done-keywords-for-agenda))))
(org-ql org-agenda-files
(and (todo "SOMEDAY")
(tags "Emacs")))
(org-ql org-agenda-files
(and (todo "SOMEDAY")
(tags "Emacs")
(priority >= "B")))
(org-ql "~/org/main.org"
(and (or (tags "Emacs")
(priority >= "B"))
(not (done))))
(org-ql "~/org/main.org"
(and (or (tags "Emacs")
(priority >= "B"))
(done)))
(org-ql "~/src/emacs/org-super-agenda/test/test.org"
(regexp "over")
:sort (priority deadline scheduled))
(org-ql "~/src/emacs/org-super-agenda/test/test.org"
(regexp "over")
:sort (date))
(org-ql "~/src/emacs/org-super-agenda/test/test.org"
(todo)
:sort (todo))
(org-ql "~/src/emacs/org-super-agenda/test/test.org"
(regexp "over"))
(org-agenda-ng "~/src/emacs/org-super-agenda/test/test.org"
(regexp "over"))
(org-agenda-ng "~/src/emacs/org-super-agenda/test/test.org"
(property "agenda-group"))
(org-agenda-ng "~/src/emacs/org-super-agenda/test/test.org"
(property "agenda-group" "plans"))
(org-super-agenda--test-with-org-today-date "2017-07-08 00:00"
(org-agenda-ng "~/src/emacs/org-super-agenda/test/test.org"
(and (or (date = today)
(deadline <=)
(scheduled <= today))
(not (done)))))
This basically works, as a very basic kind of agenda view, but we can already see that it’s much slower (at least, for single-day views) because org-element-parse-buffer
is slow compared to the agenda code.
[2018-05-10 Thu 15:03] Note: This is the old, much slower code that used org-element-parse-buffer
.
(defmacro elp-profile (times prefixes &rest body)
(declare (indent defun))
(let ((prefixes (append '(org- string- s- buffer- append delq map
list car save- outline- delete-dups
sort line- nth concat char-to-string
rx- goto- when search- re-)
prefixes)))
`(let (output)
(dolist (prefix ',prefixes)
(elp-instrument-package (symbol-name prefix)))
(dotimes (x ,times)
,@body)
(elp-results)
(elp-restore-all)
(point-min)
(forward-line 20)
(delete-region (point) (point-max))
(setq output (buffer-substring-no-properties (point-min) (point-max)))
(kill-buffer)
(delete-window)
(let ((rows (s-lines output)))
(append (list (list "Function" "Times called" "Total time" "Average time")
'hline)
(cl-loop for row in rows
collect (s-split (rx (1+ space)) row 'omit-nulls)))))))
[2018-05-09 Wed 17:31] Note: I seem to have misplaced the org-agenda-ng--test-agenda-today
function I used in these tests.
(elp-profile 1 (org-agenda-ng--test-agenda-today))
Make sure to kill any existing agenda buffers first.
(elp-profile 1 (org-agenda-list nil nil 'week))
(elp-profile 1 (with-current-buffer (find-buffer-visiting "~/org/main.org")
(org-element-parse-buffer 'headline)))
(defmacro elp-profile (times &rest body)
(declare (indent defun))
`(let ((prefixes '("org-" "string-" "s-" "buffer-" "append" "delq" "map"
"list" "car" "save-" "outline-" "delete-dups"
"sort" "line-" "nth" "concat" "char-to-string"
"rx-" "goto-" "when" "search-" "re-"))
output)
(dolist (prefix prefixes)
(elp-instrument-package prefix))
(dotimes (x ,times)
,@body)
(elp-results)
(elp-restore-all)
(point-min)
(forward-line 20)
(delete-region (point) (point-max))
(setq output (buffer-substring-no-properties (point-min) (point-max)))
(kill-buffer)
(delete-window)
output))
Make sure to kill any existing agenda buffers first.
(elp-profile 1 (org-agenda-list nil nil 'week))
(elp-profile 5 (org-agenda-ng--test-agenda-today))
(elp-profile 5 (org-agenda-ng--test-agenda-today))
[2018-05-10 Thu 12:59] Turned on org-trust-scanner-tags
, going to try profiling again:
;; (elp-profile 1 nil (org-agenda-ng "~/src/emacs/org-super-agenda/test/test.org"
;; (tags "world")))
(elp-profile 10 nil (org-agenda-ng org-agenda-files
(tags "Emacs")))
Function | Times called | Total time | Average time |
---|---|---|---|
org-agenda-ng–agenda | 10 | 44.092598282 | 4.4092598282 |
mapcar | 282 | 40.234516707 | 0.1426755911 |
org-agenda-ng–filter-buffer | 80 | 26.895492471 | 0.3361936558 |
org-element-headline-parser | 3980 | 10.387614362 | 0.0026099533 |
org-agenda-finalize-entries | 10 | 9.194458252 | 0.9194458252 |
org-agenda-ng–tags-p | 70250 | 8.1897379849 | 0.0001165799 |
org-agenda-ng–format-element | 3980 | 6.5944325679 | 0.0016568926 |
outline-next-heading | 70320 | 6.1190180490 | 8.701…e-05 |
re-search-forward | 97050 | 5.8706467829 | 6.049…e-05 |
org-get-tags-at | 74230 | 5.4078158059 | 7.285…e-05 |
org-super-agenda–filter-finalize-entries | 10 | 5.2320123400 | 0.5232012340 |
org-super-agenda–group-items | 10 | 5.1260959210 | 0.5126095921 |
org-super-agenda–group-dispatch | 130 | 5.119333624 | 0.0393794894 |
sort | 20 | 3.8204368569 | 0.1910218428 |
org-element–parse-objects | 6180 | 3.5386578929 | 0.0005725983 |
org-is-habit-p | 5970 | 3.2497755920 | 0.0005443510 |
org-entry-get | 5970 | 3.2347964049 | 0.0005418419 |
org–property-local-values | 5970 | 3.1796357319 | 0.0005326023 |
org-get-property-block | 5970 | 3.0767919680 | 0.0005153755 |
org-entries-lessp | 20020 | 2.6563960079 | 0.0001326871 |
Now trying again without it:
;; (elp-profile 1 nil (org-agenda-ng "~/src/emacs/org-super-agenda/test/test.org"
;; (tags "world")))
(elp-profile 10 nil (org-agenda-ng org-agenda-files
(tags "Emacs")))
Function | Times called | Total time | Average time |
---|---|---|---|
mapcar | 1791 | 57.096304538 | 0.0318795670 |
org-agenda-ng–agenda | 10 | 54.232133506 | 5.4232133505 |
org-agenda-ng–filter-buffer | 80 | 30.065167040 | 0.3758145880 |
org-get-tags-at | 74230 | 13.840202495 | 0.0001864502 |
org-agenda-ng–format-element | 3980 | 13.429297797 | 0.0033741954 |
org-element-headline-parser | 3980 | 12.771776652 | 0.0032089891 |
org-agenda-finalize-entries | 10 | 9.1439433990 | 0.9143943399 |
org-agenda-ng–tags-p | 70250 | 9.0249653730 | 0.0001284692 |
org-super-agenda–filter-finalize-entries | 10 | 7.300515859 | 0.7300515859 |
outline-next-heading | 70320 | 7.2384435649 | 0.0001029357 |
org-super-agenda–group-items | 10 | 4.918585855 | 0.4918585855 |
org-super-agenda–group-dispatch | 130 | 4.9125893509 | 0.0377891488 |
re-search-forward | 101020 | 4.6294823850 | 4.582…e-05 |
org-up-heading-safe | 7370 | 4.4629885620 | 0.0006055615 |
org-is-habit-p | 5960 | 4.2772351910 | 0.0007176569 |
org-entry-get | 5960 | 4.2595350800 | 0.0007146870 |
org-super-agenda–group-tag | 50 | 3.8942044929 | 0.0778840898 |
re-search-backward | 26150 | 3.3660083490 | 0.0001287192 |
org–property-local-values | 5960 | 3.1793476329 | 0.0005334475 |
org-get-property-block | 5960 | 3.0662425979 | 0.0005144702 |
Wow, using org-trust-scanner-tags
saves a lot of time.
(elp-profile 5 (org-agenda-ng--agenda
:files org-agenda-files
:pred (lambda ()
(and (org-agenda-ng--todo-p)
(or (org-agenda-ng--date-p :deadline '<= (org-today))
(org-agenda-ng--date-p :scheduled '<= (org-today)))
(not (apply #'org-agenda-ng--todo-p org-done-keywords-for-agenda))))))
(elp-profile 5 (org-agenda-ng--agenda
:files org-agenda-files
:pred (lambda ()
(and (todo)
(or (date :deadline '<= (org-today))
(date :scheduled '<= (org-today)))
(not (apply #'todo org-done-keywords-for-agenda))))))
This shows that the difference between them, if any, is so small as to be irrelevant. The convenience and clarity are a big win.
(elp-profile 5 (org-agenda-ng--agenda
:files "~/org/main.org"
:pred (lambda ()
(and (org-agenda-ng--todo-p)
(or (org-agenda-ng--date-p :deadline '<= (org-today))
(org-agenda-ng--date-p :scheduled '<= (org-today)))
(not (apply #'org-agenda-ng--todo-p org-done-keywords-for-agenda))))))
(elp-profile 5 (org-agenda-ng--agenda
:files "~/org/main.org"
:pred (lambda ()
(and (todo)
(or (date :deadline '<= (org-today))
(date :scheduled '<= (org-today)))
(not (apply #'todo org-done-keywords-for-agenda))))))
(elp-profile 1 nil
(org-agenda-ng "~/org/main.org"
(tags "computer")))
Function | Times called | Total time | Average time |
---|---|---|---|
mapcar | 4217 | 12.612716455 | 0.0029909216 |
org-agenda-ng–agenda | 1 | 9.721410651 | 9.721410651 |
org-get-tags-at | 1845 | 7.4793860389 | 0.0040538677 |
org-up-heading-safe | 9361 | 6.4622674019 | 0.0006903394 |
re-search-backward | 25001 | 5.3399866239 | 0.0002135909 |
org-agenda-ng–filter-buffer | 1 | 4.874598854 | 4.874598854 |
org-agenda-ng–tags-p | 1238 | 4.8067623430 | 0.0038826836 |
org-agenda-ng–format-element | 607 | 3.6325626609 | 0.0059844524 |
org-outline-level | 17484 | 1.0298924459 | 5.890…e-05 |
org-add-props | 2074 | 0.8305549259 | 0.0004004604 |
org-element-headline-parser | 607 | 0.2092664829 | 0.0003447553 |
org-back-to-heading | 11813 | 0.1252112960 | 1.059…e-05 |
outline-back-to-heading | 11813 | 0.1100693780 | 9.317…e-06 |
org-end-of-subtree | 607 | 0.0721986340 | 0.0001189433 |
outline-on-heading-p | 11813 | 0.0675261030 | 5.716…e-06 |
outline-next-heading | 1239 | 0.0627980999 | 5.068…e-05 |
re-search-forward | 3273 | 0.0612446620 | 1.871…e-05 |
org-agenda-finalize-entries | 1 | 0.041846274 | 0.041846274 |
buffer-substring-no-properties | 6329 | 0.0308716979 | 4.877…e-06 |
line-end-position | 903 | 0.0280484950 | 3.106…e-05 |
(elp-profile 1 nil
(org-agenda-ng "~/org/main.org"
(tags "computer")))
Function | Times called | Total time | Average time |
---|---|---|---|
mapcar | 4217 | 12.580246839 | 0.0029832219 |
org-agenda-ng–agenda | 1 | 8.777776059 | 8.777776059 |
org-get-tags-at | 1845 | 8.2853503299 | 0.0044907047 |
org-up-heading-safe | 9361 | 7.2710981889 | 0.0007767437 |
re-search-backward | 25001 | 5.3360082060 | 0.0002134317 |
org-agenda-ng–filter-buffer | 1 | 4.865602689 | 4.865602689 |
org-agenda-ng–tags-p | 1238 | 4.7983754310 | 0.0038759090 |
org-agenda-ng–format-element | 607 | 3.6273825100 | 0.0059759184 |
org-outline-level | 17484 | 1.0284417919 | 5.882…e-05 |
org-back-to-heading | 11813 | 0.9390534479 | 7.949…e-05 |
org-split-string | 4940 | 0.833825087 | 0.0001687905 |
string-match | 9102 | 0.8231629100 | 9.043…e-05 |
org-element-headline-parser | 607 | 0.2034305819 | 0.0003351409 |
outline-back-to-heading | 11813 | 0.1096120189 | 9.278…e-06 |
org-end-of-subtree | 607 | 0.0710802559 | 0.0001171009 |
outline-on-heading-p | 11813 | 0.0670029359 | 5.671…e-06 |
outline-next-heading | 1239 | 0.0622323519 | 5.022…e-05 |
re-search-forward | 3273 | 0.0603102519 | 1.842…e-05 |
org-agenda-finalize-entries | 1 | 0.037286496 | 0.037286496 |
buffer-substring-no-properties | 6329 | 0.0285818689 | 4.516…e-06 |
(elp-profile 1 nil
(with-current-buffer "main.org"
(org-tags-view nil "computer")))
Function | Times called | Total time | Average time |
---|---|---|---|
org-tags-view | 1 | 2.620578129 | 2.620578129 |
org-scan-tags | 1 | 1.448883817 | 1.448883817 |
org-agenda-format-item | 607 | 0.9273893060 | 0.0015278242 |
org-add-props | 2042 | 0.8877267209 | 0.0004347339 |
org-agenda-finalize | 1 | 0.144506782 | 0.144506782 |
re-search-forward | 2154 | 0.1367046650 | 6.346…e-05 |
string-match | 8742 | 0.1002517259 | 1.146…e-05 |
org-get-priority | 607 | 0.0961996220 | 0.0001584837 |
org-agenda-align-tags | 1 | 0.095166495 | 0.095166495 |
org-agenda-prepare | 1 | 0.081724472 | 0.081724472 |
org-outline-level | 1246 | 0.0771033170 | 6.188…e-05 |
org-agenda-finalize-entries | 1 | 0.071707404 | 0.071707404 |
org-agenda-prepare-buffers | 1 | 0.057903921 | 0.057903921 |
org-get-heading | 607 | 0.0517784369 | 8.530…e-05 |
mapcar | 3738 | 0.0418641110 | 1.119…e-05 |
org-agenda-highlight-todo | 607 | 0.0273123070 | 4.499…e-05 |
mapconcat | 609 | 0.024743305 | 4.062…e-05 |
sort | 2 | 0.02117069 | 0.010585345 |
org-activate-plain-links | 132 | 0.0203558980 | 0.0001542113 |
org-activate-bracket-links | 78 | 0.0198589680 | 0.0002546021 |
[2018-05-10 Thu 15:02] I think these are decent improvements.
(elp-profile 1 nil (org-agenda-ng "~/org/main.org"
(or (habit)
(and (or (date '= (org-today))
(deadline '<=)
(scheduled '<= (org-today)))
(not (apply #'todo org-done-keywords-for-agenda)))
(and (todo "DONE" "CANCELLED")
(closed '= (org-today))))))
Function | Times called | Total time | Average time |
---|---|---|---|
mapcar | 164 | 1.5004585290 | 0.0091491373 |
org-agenda-ng–agenda | 1 | 1.348231247 | 1.348231247 |
org-agenda-ng–filter-buffer | 1 | 1.1391189879 | 1.1391189879 |
org-agenda-ng–date-plain-p | 1267 | 0.6198571040 | 0.0004892321 |
org-entry-get | 3983 | 0.2979337370 | 7.480…e-05 |
org-is-habit-p | 1365 | 0.2049101109 | 0.0001501172 |
org–property-local-values | 1365 | 0.1940614150 | 0.0001421695 |
org-agenda-ng–habit-p | 1272 | 0.1911009179 | 0.0001502365 |
org-agenda-ng–format-element | 52 | 0.177965411 | 0.0034224117 |
org-get-property-block | 1365 | 0.1760004519 | 0.0001289380 |
org-get-tags-at | 52 | 0.1362824969 | 0.0026208172 |
org-agenda-ng–date-p | 3880 | 0.1351176629 | 3.482…e-05 |
org-up-heading-safe | 226 | 0.1276747609 | 0.0005649325 |
re-search-backward | 2028 | 0.1144211070 | 5.642…e-05 |
org-entry-properties | 2618 | 0.0848660999 | 3.241…e-05 |
org-agenda-ng–todo-p | 1319 | 0.081952653 | 6.213…e-05 |
org-get-todo-state | 1319 | 0.0796836810 | 6.041…e-05 |
re-search-forward | 3754 | 0.0739803739 | 1.970…e-05 |
org-inlinetask-in-task-p | 1365 | 0.0657829330 | 4.819…e-05 |
org-agenda-ng–scheduled-p | 1247 | 0.0619497850 | 4.967…e-05 |