* Speeding up agenda display
@ 2009-12-30 19:06 Andrew J. Korty
2009-12-30 19:20 ` Carsten Dominik
0 siblings, 1 reply; 10+ messages in thread
From: Andrew J. Korty @ 2009-12-30 19:06 UTC (permalink / raw)
To: Org Mode
My agenda views take a couple seconds to build, and I'd like them to be faster. I'm posting a portion of configuration and some profiling results here in case anyone can see any opportunities for optimization.
Some background: I don't use the diary at all -- this agenda view exists only to show me tasks that are due soon (and in this case, not tagged with @yard or @home).
Thanks,
ajk
(setq org-agenda-custom-commands
'(("o" "Due at Office" agenda ""
((org-agenda-skip-function
'(or (org-agenda-skip-entry-if '(notdeadline))
(ajk/org-agenda-skip-if-not-due-soon)
(ajk/org-agenda-skip-if-tagged-for-home)))))))
(defun ajk/org-skip-position ()
(or (save-excursion
(outline-next-heading)
(point))
(point-max)))
(defun ajk/org-agenda-skip-if-not-due-soon ()
(unless (ajk/org-agenda-skip-if-due-soon)
(ajk/org-skip-position)))
(defun ajk/org-agenda-skip-if-tagged-for-home ()
(org-back-to-heading t)
(let ((tags (org-get-tags)))
(if (or (member "@home" tags)
(member "@yard" tags))
(ajk/org-skip-position))))
(defun ajk/org-agenda-skip-if-action ()
(if (org-get-todo-state)
(ajk/org-skip-position)))
org-agenda 1 2.017599 2.017599
org-let 1 1.33683 1.33683
org-agenda-list 1 1.336819 1.336819
org-agenda-get-day-entries 1 1.30812 1.30812
org-entry-get 422 0.9243140000 0.0021903175
org-entry-properties 416 0.9203020000 0.0022122644
org-get-tags-at 418 0.6899759999 0.0016506602
org-agenda-get-restriction-and-command 1 0.680728 0.680728
org-agenda-get-scheduled 1 0.663837 0.663837
org-up-heading-safe 1055 0.6547349999 0.0006206018
org-agenda-get-deadlines 1 0.545852 0.545852
org-agenda-skip-entry-if 416 0.1982539999 0.0004765721
org-agenda-skip-if 416 0.1969610000 0.0004734639
org-back-to-heading 2439 0.1005620000 4.123...e-05
org-agenda-get-timestamps 1 0.094435 0.094435
org-prepare-agenda 1 0.02532 0.02532
org-prepare-agenda-buffers 1 0.024896 0.024896
org-refresh-category-properties 1 0.012516 0.012516
org-outline-level 1696 0.0119610000 7.052...e-06
org-deadline-close 178 0.0085670000 4.812...e-05
org-agenda-skip 416 0.0071490000 1.718...e-05
org-get-tags-string 424 0.0054299999 1.280...e-05
org-days-to-time 178 0.0048369999 2.717...e-05
org-at-date-range-p 101 0.0044149999 4.371...e-05
org-time-string-to-time 178 0.0023639999 1.328...e-05
org-get-todo-state 116 0.0021619999 1.863...e-05
org-agenda-get-blocks 1 0.002077 0.002077
org-entry-is-done-p 113 0.0019640000 1.738...e-05
org-finalize-agenda 1 0.001947 0.001947
org-agenda-dim-blocked-tasks 1 0.001868 0.001868
org-agenda-get-sexps 1 0.001698 0.001698
org-split-string 633 0.0016380000 2.587...e-06
org-get-property-block 6 0.001411 0.0002351666
org-on-heading-p 424 0.0013999999 3.301...e-06
org-parse-time-string 183 0.0013529999 7.393...e-06
org-block-todo-from-children-or-siblings-or-parent 2 0.001044 0.000522
org-format-agenda-item 2 0.000966 0.000483
org-fit-window-to-buffer 1 0.000891 0.000891
org-get-effort 2 0.000815 0.0004075
org-remove-uniherited-tags 627 0.0007940000 1.266...e-06
org-get-wdays 180 0.0004619999 2.566...e-06
org-get-category 419 0.0004180000 9.976...e-07
org-trim 111 0.0003930000 3.540...e-06
org-agenda-files 3 0.000329 0.0001096666
org-add-prop-inherited 250 0.0003230000 1.292...e-06
org-switch-to-buffer-other-window 1 0.000287 0.000287
org-time-string-to-absolute 5 0.0002600000 5.200...e-05
org-agenda-mode 1 0.00025 0.00025
org-finalize-agenda-entries 1 0.000224 0.000224
org-get-priority 2 0.000195 9.75e-05
org-get-tags 8 0.000177 2.2125e-05
org-check-agenda-file 2 0.000159 7.95e-05
org-closest-date 4 0.000158 3.95e-05
org-agenda-highlight-todo 2 0.000152 7.6e-05
org-get-agenda-file-buffer 2 0.000144 7.2e-05
org-find-base-buffer-visiting 2 0.000133 6.65e-05
org-uniquify 5 0.000129 2.579...e-05
org-date-to-gregorian 8 8.199...e-05 1.024...e-05
org-days-to-iso-week 3 5.499...e-05 1.833...e-05
org-compile-prefix-format 1 5.2e-05 5.2e-05
org-agenda-format-date-aligned 1 4.6e-05 4.6e-05
org-add-props 9 3.999...e-05 4.444...e-06
org-agenda-new-marker 4 3.3e-05 8.25e-06
org-agenda-todayp 2 3.3e-05 1.65e-05
org-agenda-add-inherited-tags 2 2.8e-05 1.4e-05
org-agenda-align-tags 1 2.5e-05 2.5e-05
org-entries-lessp 1 2.3e-05 2.3e-05
org-agenda-fontify-priorities 1 1.5e-05 1.5e-05
org-activate-bracket-links 1 1e-05 1e-05
org-get-at-bol 4 9.999...e-06 2.499...e-06
org-agenda-mark-header-line 1 8e-06 8e-06
org-agenda-deadline-face 2 8e-06 4e-06
org-agenda-set-mode-name 1 7e-06 7e-06
org-agenda-add-time-grid-maybe 1 7e-06 7e-06
org-hh:mm-string-to-minutes 1 7e-06 7e-06
org-add-hook 2 7e-06 3.5e-06
org-region-active-p 1 6e-06 6e-06
org-overlays-in 3 5.999...e-06 2e-06
org-agenda-mark-clocking-task 1 5e-06 5e-06
org-downcase-keep-props 2 4e-06 2e-06
org-float-time 4 4e-06 1e-06
org-get-todo-face 2 4e-06 2e-06
org-before-change-function 1 4e-06 4e-06
org-agenda-reset-markers 1 3e-06 3e-06
org-agenda-post-command-hook 1 3e-06 3e-06
org-file-menu-entry 1 3e-06 3e-06
org-unhighlight 1 3e-06 3e-06
org-set-sorting-strategy 1 1e-06 1e-06
org-fit-agenda-window 1 1e-06 1e-06
org-agenda-ndays-to-span 1 1e-06 1e-06
org-font-lock-add-tag-faces 1 1e-06 1e-06
^ permalink raw reply [flat|nested] 10+ messages in thread
* Re: Speeding up agenda display
2009-12-30 19:06 Speeding up agenda display Andrew J. Korty
@ 2009-12-30 19:20 ` Carsten Dominik
2009-12-30 19:40 ` Andrew J. Korty
0 siblings, 1 reply; 10+ messages in thread
From: Carsten Dominik @ 2009-12-30 19:20 UTC (permalink / raw)
To: Andrew J. Korty; +Cc: Org Mode
Hi Andrew,
could you please also instrument your ajk/ functions for profiling and
repeat the experiment? And show the code of all these functions, not
only some (I am missing for example `ajk/org-agenda-skip-if-due-
soon'....
Also:
- Are you using property inheritance?
- Are you relying on tag inheritance to check for @yard and @home?
- Are you using the latest version of Org-mode?
Thanks
- Carsten
On Dec 30, 2009, at 8:06 PM, Andrew J. Korty wrote:
> My agenda views take a couple seconds to build, and I'd like them to
> be faster. I'm posting a portion of configuration and some
> profiling results here in case anyone can see any opportunities for
> optimization.
>
> Some background: I don't use the diary at all -- this agenda view
> exists only to show me tasks that are due soon (and in this case,
> not tagged with @yard or @home).
>
> Thanks,
> ajk
>
> (setq org-agenda-custom-commands
> '(("o" "Due at Office" agenda ""
> ((org-agenda-skip-function
> '(or (org-agenda-skip-entry-if '(notdeadline))
> (ajk/org-agenda-skip-if-not-due-soon)
> (ajk/org-agenda-skip-if-tagged-for-home)))))))
>
> (defun ajk/org-skip-position ()
> (or (save-excursion
> (outline-next-heading)
> (point))
> (point-max)))
>
> (defun ajk/org-agenda-skip-if-not-due-soon ()
> (unless (ajk/org-agenda-skip-if-due-soon)
> (ajk/org-skip-position)))
>
> (defun ajk/org-agenda-skip-if-tagged-for-home ()
> (org-back-to-heading t)
> (let ((tags (org-get-tags)))
> (if (or (member "@home" tags)
> (member "@yard" tags))
> (ajk/org-skip-position))))
>
> (defun ajk/org-agenda-skip-if-action ()
> (if (org-get-todo-state)
> (ajk/org-skip-position)))
>
> org-agenda
> 1 2.017599 2.017599
> org-let
> 1 1.33683 1.33683
> org-agenda-list
> 1 1.336819 1.336819
> org-agenda-get-day-entries
> 1 1.30812 1.30812
> org-entry-get
> 422 0.9243140000 0.0021903175
> org-entry-properties
> 416 0.9203020000 0.0022122644
> org-get-tags-at
> 418 0.6899759999 0.0016506602
> org-agenda-get-restriction-and-command
> 1 0.680728 0.680728
> org-agenda-get-scheduled
> 1 0.663837 0.663837
> org-up-heading-safe
> 1055 0.6547349999 0.0006206018
> org-agenda-get-deadlines
> 1 0.545852 0.545852
> org-agenda-skip-entry-if
> 416 0.1982539999 0.0004765721
> org-agenda-skip-if
> 416 0.1969610000 0.0004734639
> org-back-to-heading
> 2439 0.1005620000 4.123...e-05
> org-agenda-get-timestamps
> 1 0.094435 0.094435
> org-prepare-agenda
> 1 0.02532 0.02532
> org-prepare-agenda-buffers
> 1 0.024896 0.024896
> org-refresh-category-properties
> 1 0.012516 0.012516
> org-outline-level
> 1696 0.0119610000 7.052...e-06
> org-deadline-close
> 178 0.0085670000 4.812...e-05
> org-agenda-skip
> 416 0.0071490000 1.718...e-05
> org-get-tags-string
> 424 0.0054299999 1.280...e-05
> org-days-to-time
> 178 0.0048369999 2.717...e-05
> org-at-date-range-p
> 101 0.0044149999 4.371...e-05
> org-time-string-to-time
> 178 0.0023639999 1.328...e-05
> org-get-todo-state
> 116 0.0021619999 1.863...e-05
> org-agenda-get-blocks
> 1 0.002077 0.002077
> org-entry-is-done-p
> 113 0.0019640000 1.738...e-05
> org-finalize-agenda
> 1 0.001947 0.001947
> org-agenda-dim-blocked-tasks
> 1 0.001868 0.001868
> org-agenda-get-sexps
> 1 0.001698 0.001698
> org-split-string
> 633 0.0016380000 2.587...e-06
> org-get-property-block
> 6 0.001411 0.0002351666
> org-on-heading-p
> 424 0.0013999999 3.301...e-06
> org-parse-time-string
> 183 0.0013529999 7.393...e-06
> org-block-todo-from-children-or-siblings-or-parent
> 2 0.001044 0.000522
> org-format-agenda-item
> 2 0.000966 0.000483
> org-fit-window-to-buffer
> 1 0.000891 0.000891
> org-get-effort
> 2 0.000815 0.0004075
> org-remove-uniherited-tags
> 627 0.0007940000 1.266...e-06
> org-get-wdays
> 180 0.0004619999 2.566...e-06
> org-get-category
> 419 0.0004180000 9.976...e-07
> org-trim
> 111 0.0003930000 3.540...e-06
> org-agenda-files
> 3 0.000329 0.0001096666
> org-add-prop-inherited
> 250 0.0003230000 1.292...e-06
> org-switch-to-buffer-other-window
> 1 0.000287 0.000287
> org-time-string-to-absolute
> 5 0.0002600000 5.200...e-05
> org-agenda-mode
> 1 0.00025 0.00025
> org-finalize-agenda-entries
> 1 0.000224 0.000224
> org-get-priority
> 2 0.000195 9.75e-05
> org-get-tags
> 8 0.000177 2.2125e-05
> org-check-agenda-file
> 2 0.000159 7.95e-05
> org-closest-date
> 4 0.000158 3.95e-05
> org-agenda-highlight-todo
> 2 0.000152 7.6e-05
> org-get-agenda-file-buffer
> 2 0.000144 7.2e-05
> org-find-base-buffer-visiting
> 2 0.000133 6.65e-05
> org-uniquify
> 5 0.000129 2.579...e-05
> org-date-to-gregorian
> 8 8.199...e-05 1.024...e-05
> org-days-to-iso-week
> 3 5.499...e-05 1.833...e-05
> org-compile-prefix-format
> 1 5.2e-05 5.2e-05
> org-agenda-format-date-aligned
> 1 4.6e-05 4.6e-05
> org-add-props
> 9 3.999...e-05 4.444...e-06
> org-agenda-new-marker
> 4 3.3e-05 8.25e-06
> org-agenda-todayp
> 2 3.3e-05 1.65e-05
> org-agenda-add-inherited-tags
> 2 2.8e-05 1.4e-05
> org-agenda-align-tags
> 1 2.5e-05 2.5e-05
> org-entries-lessp
> 1 2.3e-05 2.3e-05
> org-agenda-fontify-priorities
> 1 1.5e-05 1.5e-05
> org-activate-bracket-links
> 1 1e-05 1e-05
> org-get-at-bol
> 4 9.999...e-06 2.499...e-06
> org-agenda-mark-header-line
> 1 8e-06 8e-06
> org-agenda-deadline-face
> 2 8e-06 4e-06
> org-agenda-set-mode-name
> 1 7e-06 7e-06
> org-agenda-add-time-grid-maybe
> 1 7e-06 7e-06
> org-hh:mm-string-to-minutes
> 1 7e-06 7e-06
> org-add-hook
> 2 7e-06 3.5e-06
> org-region-active-p
> 1 6e-06 6e-06
> org-overlays-in
> 3 5.999...e-06 2e-06
> org-agenda-mark-clocking-task
> 1 5e-06 5e-06
> org-downcase-keep-props
> 2 4e-06 2e-06
> org-float-time
> 4 4e-06 1e-06
> org-get-todo-face
> 2 4e-06 2e-06
> org-before-change-function
> 1 4e-06 4e-06
> org-agenda-reset-markers
> 1 3e-06 3e-06
> org-agenda-post-command-hook
> 1 3e-06 3e-06
> org-file-menu-entry
> 1 3e-06 3e-06
> org-unhighlight
> 1 3e-06 3e-06
> org-set-sorting-strategy
> 1 1e-06 1e-06
> org-fit-agenda-window
> 1 1e-06 1e-06
> org-agenda-ndays-to-span
> 1 1e-06 1e-06
> org-font-lock-add-tag-faces
> 1 1e-06 1e-06
>
>
>
> _______________________________________________
> Emacs-orgmode mailing list
> Please use `Reply All' to send replies to the list.
> Emacs-orgmode@gnu.org
> http://lists.gnu.org/mailman/listinfo/emacs-orgmode
- Carsten
^ permalink raw reply [flat|nested] 10+ messages in thread
* Re: Speeding up agenda display
2009-12-30 19:20 ` Carsten Dominik
@ 2009-12-30 19:40 ` Andrew J. Korty
2009-12-31 7:45 ` Carsten Dominik
0 siblings, 1 reply; 10+ messages in thread
From: Andrew J. Korty @ 2009-12-30 19:40 UTC (permalink / raw)
To: Org Mode
On Dec 30, 2009, at 14:20 , Carsten Dominik wrote:
> could you please also instrument your ajk/ functions for profiling and
> repeat the experiment? And show the code of all these functions, not
> only some (I am missing for example `ajk/org-agenda-skip-if-due-
> soon'....
Yes to both -- see below for corrected listings of code and profiling results.
> Also:
>
> - Are you using property inheritance?
> - Are you relying on tag inheritance to check for @yard and @home?
No to both.
> - Are you using the latest version of Org-mode?
I'm using 6.33.
Btw, the single org file from which the agenda is generated contains 323 headlines in the TODO state and 12,227 lines total.
Thanks,
ajk
(setq org-agenda-custom-commands
'(("o" "Due at Office" agenda ""
((org-agenda-skip-function
'(or (org-agenda-skip-entry-if '(notdeadline))
(ajk/org-agenda-skip-if-not-due-soon)
(ajk/org-agenda-skip-if-tagged-for-home)))))))
(defun ajk/org-skip-position ()
(or (save-excursion
(outline-next-heading)
(point))
(point-max)))
(defun ajk/org-agenda-skip-if-due-soon ()
(and (let ((time (org-entry-get nil "DEADLINE"))) ; not due or not due soon
(and time
(org-deadline-close time)))
(ajk/org-skip-position)))
(defun ajk/org-agenda-skip-if-not-due-soon ()
(unless (ajk/org-agenda-skip-if-due-soon)
(ajk/org-skip-position)))
(defun ajk/org-agenda-skip-if-tagged-for-home ()
(org-back-to-heading t)
(let ((tags (org-get-tags)))
(if (or (member "@home" tags)
(member "@yard" tags))
(ajk/org-skip-position))))
org-agenda 1 1.997575 1.997575
org-let 1 1.3057590000 1.3057590000
org-agenda-list 1 1.305747 1.305747
org-agenda-get-day-entries 1 1.279215 1.279215
ajk/org-agenda-skip-if-not-due-soon 416 1.0349629999 0.0024878918
ajk/org-agenda-skip-if-due-soon 416 0.9751669999 0.0023441514
org-entry-get 422 0.9655619999 0.0022880616
org-entry-properties 416 0.9618369999 0.0023121081
org-get-tags-at 418 0.6982910000 0.0016705526
org-agenda-get-restriction-and-command 1 0.691773 0.691773
org-up-heading-safe 1055 0.6649149999 0.0006302511
org-agenda-get-scheduled 1 0.6341589999 0.6341589999
org-agenda-get-deadlines 1 0.5069330000 0.5069330000
org-agenda-skip-entry-if 416 0.1385249999 0.0003329927
org-agenda-skip-if 416 0.1372300000 0.0003298798
org-agenda-get-timestamps 1 0.134207 0.134207
org-back-to-heading 2439 0.0887650000 3.639...e-05
ajk/org-skip-position 419 0.0583169999 0.0001391813
org-prepare-agenda 1 0.023446 0.023446
org-prepare-agenda-buffers 1 0.022988 0.022988
org-refresh-category-properties 1 0.012406 0.012406
org-outline-level 1696 0.0118750000 7.001...e-06
org-at-date-range-p 101 0.009216 9.124...e-05
org-agenda-skip 416 0.0086059999 2.068...e-05
org-deadline-close 178 0.0084609999 4.753...e-05
org-get-tags-string 424 0.0053519999 1.262...e-05
org-days-to-time 178 0.0047240000 2.653...e-05
org-time-string-to-time 178 0.0022689999 1.274...e-05
org-get-todo-state 116 0.0022219999 1.915...e-05
org-agenda-get-blocks 1 0.002071 0.002071
org-entry-is-done-p 113 0.0019850000 1.756...e-05
org-agenda-get-sexps 1 0.001713 0.001713
org-finalize-agenda 1 0.001653 0.001653
org-split-string 633 0.0015850000 2.503...e-06
org-agenda-dim-blocked-tasks 1 0.001572 0.001572
org-parse-time-string 183 0.0013499999 7.377...e-06
org-on-heading-p 424 0.0012929999 3.049...e-06
org-get-property-block 6 0.0011920000 0.0001986666
org-fit-window-to-buffer 1 0.000942 0.000942
org-block-todo-from-children-or-siblings-or-parent 2 0.000905 0.0004525
org-format-agenda-item 2 0.0008860000 0.0004430000
org-remove-uniherited-tags 627 0.0007880000 1.256...e-06
org-get-effort 2 0.00074 0.00037
ajk/org-agenda-skip-if-tagged-for-home 8 0.000539 6.7375e-05
org-get-wdays 180 0.0004700000 2.611...e-06
org-get-category 419 0.0004360000 1.040...e-06
org-trim 111 0.0003769999 3.396...e-06
org-agenda-files 3 0.000291 9.700...e-05
org-agenda-mode 1 0.000287 0.000287
org-add-prop-inherited 250 0.0002820000 1.128...e-06
org-time-string-to-absolute 5 0.000258 5.159...e-05
org-finalize-agenda-entries 1 0.000233 0.000233
org-switch-to-buffer-other-window 1 0.000217 0.000217
org-get-priority 2 0.000194 9.7e-05
org-get-tags 8 0.000168 2.1e-05
org-agenda-highlight-todo 2 0.0001590000 7.950...e-05
org-closest-date 4 0.000157 3.925e-05
org-uniquify 5 0.0001439999 2.879...e-05
org-check-agenda-file 2 0.000105 5.25e-05
org-get-agenda-file-buffer 2 9.6e-05 4.8e-05
org-find-base-buffer-visiting 2 8.5e-05 4.25e-05
org-date-to-gregorian 8 8.1e-05 1.0125e-05
org-compile-prefix-format 1 6.8e-05 6.8e-05
org-days-to-iso-week 3 5.7e-05 1.9e-05
org-agenda-format-date-aligned 1 4.8e-05 4.8e-05
org-add-props 8 3.5e-05 4.375e-06
org-agenda-new-marker 4 3.5e-05 8.75e-06
org-agenda-todayp 2 3.3e-05 1.65e-05
org-agenda-add-inherited-tags 2 2.999...e-05 1.499...e-05
org-agenda-reset-markers 1 2.7e-05 2.7e-05
org-agenda-align-tags 1 2.7e-05 2.7e-05
org-entries-lessp 1 2.4e-05 2.4e-05
org-agenda-fontify-priorities 1 1.4e-05 1.4e-05
org-agenda-mark-header-line 1 1.1e-05 1.1e-05
org-activate-bracket-links 1 9e-06 9e-06
org-get-at-bol 4 9e-06 2.25e-06
org-hh:mm-string-to-minutes 1 8e-06 8e-06
org-agenda-add-time-grid-maybe 1 7e-06 7e-06
org-agenda-deadline-face 2 7e-06 3.5e-06
org-add-hook 2 7e-06 3.5e-06
org-agenda-set-mode-name 1 6e-06 6e-06
org-float-time 4 6e-06 1.5e-06
org-agenda-mark-clocking-task 1 5e-06 5e-06
org-overlays-in 3 4.999...e-06 1.666...e-06
org-downcase-keep-props 2 4e-06 2e-06
org-unhighlight 1 4e-06 4e-06
org-region-active-p 1 3e-06 3e-06
org-file-menu-entry 1 3e-06 3e-06
org-get-todo-face 2 3e-06 1.5e-06
org-set-sorting-strategy 1 2e-06 2e-06
org-agenda-ndays-to-span 2 2e-06 1e-06
org-font-lock-add-tag-faces 1 2e-06 2e-06
org-fit-agenda-window 1 1e-06 1e-06
org-before-change-function 1 1e-06 1e-06
^ permalink raw reply [flat|nested] 10+ messages in thread
* Re: Speeding up agenda display
2009-12-30 19:40 ` Andrew J. Korty
@ 2009-12-31 7:45 ` Carsten Dominik
2009-12-31 17:46 ` Andrew J. Korty
0 siblings, 1 reply; 10+ messages in thread
From: Carsten Dominik @ 2009-12-31 7:45 UTC (permalink / raw)
To: Andrew J. Korty; +Cc: Org Mode
Hi Andrew, thanks!
The only thing I see now is this:
1. Get the latest development version. A week or two ago I made
an optimization that should speed up
(org-entry-get nil "DEADLINE")
quite a bit.
Let's see if that does help enough.
- Carsten
On Dec 30, 2009, at 8:40 PM, Andrew J. Korty wrote:
> On Dec 30, 2009, at 14:20 , Carsten Dominik wrote:
>
>> could you please also instrument your ajk/ functions for profiling
>> and
>> repeat the experiment? And show the code of all these functions, not
>> only some (I am missing for example `ajk/org-agenda-skip-if-due-
>> soon'....
>
> Yes to both -- see below for corrected listings of code and
> profiling results.
>
>> Also:
>>
>> - Are you using property inheritance?
>> - Are you relying on tag inheritance to check for @yard and @home?
>
> No to both.
>
>> - Are you using the latest version of Org-mode?
>
> I'm using 6.33.
>
> Btw, the single org file from which the agenda is generated contains
> 323 headlines in the TODO state and 12,227 lines total.
>
> Thanks,
> ajk
>
> (setq org-agenda-custom-commands
> '(("o" "Due at Office" agenda ""
> ((org-agenda-skip-function
> '(or (org-agenda-skip-entry-if '(notdeadline))
> (ajk/org-agenda-skip-if-not-due-soon)
> (ajk/org-agenda-skip-if-tagged-for-home)))))))
>
> (defun ajk/org-skip-position ()
> (or (save-excursion
> (outline-next-heading)
> (point))
> (point-max)))
>
> (defun ajk/org-agenda-skip-if-due-soon ()
> (and (let ((time (org-entry-get nil "DEADLINE"))) ; not due or not
> due soon
> (and time
> (org-deadline-close time)))
> (ajk/org-skip-position)))
>
> (defun ajk/org-agenda-skip-if-not-due-soon ()
> (unless (ajk/org-agenda-skip-if-due-soon)
> (ajk/org-skip-position)))
>
> (defun ajk/org-agenda-skip-if-tagged-for-home ()
> (org-back-to-heading t)
> (let ((tags (org-get-tags)))
> (if (or (member "@home" tags)
> (member "@yard" tags))
> (ajk/org-skip-position))))
>
> org-agenda
> 1 1.997575 1.997575
> org-let
> 1 1.3057590000 1.3057590000
> org-agenda-list
> 1 1.305747 1.305747
> org-agenda-get-day-entries
> 1 1.279215 1.279215
> ajk/org-agenda-skip-if-not-due-soon
> 416 1.0349629999 0.0024878918
> ajk/org-agenda-skip-if-due-soon
> 416 0.9751669999 0.0023441514
> org-entry-get
> 422 0.9655619999 0.0022880616
> org-entry-properties
> 416 0.9618369999 0.0023121081
> org-get-tags-at
> 418 0.6982910000 0.0016705526
> org-agenda-get-restriction-and-command
> 1 0.691773 0.691773
> org-up-heading-safe
> 1055 0.6649149999 0.0006302511
> org-agenda-get-scheduled
> 1 0.6341589999 0.6341589999
> org-agenda-get-deadlines
> 1 0.5069330000 0.5069330000
> org-agenda-skip-entry-if
> 416 0.1385249999 0.0003329927
> org-agenda-skip-if
> 416 0.1372300000 0.0003298798
> org-agenda-get-timestamps
> 1 0.134207 0.134207
> org-back-to-heading
> 2439 0.0887650000 3.639...e-05
> ajk/org-skip-position
> 419 0.0583169999 0.0001391813
> org-prepare-agenda
> 1 0.023446 0.023446
> org-prepare-agenda-buffers
> 1 0.022988 0.022988
> org-refresh-category-properties
> 1 0.012406 0.012406
> org-outline-level
> 1696 0.0118750000 7.001...e-06
> org-at-date-range-p
> 101 0.009216 9.124...e-05
> org-agenda-skip
> 416 0.0086059999 2.068...e-05
> org-deadline-close
> 178 0.0084609999 4.753...e-05
> org-get-tags-string
> 424 0.0053519999 1.262...e-05
> org-days-to-time
> 178 0.0047240000 2.653...e-05
> org-time-string-to-time
> 178 0.0022689999 1.274...e-05
> org-get-todo-state
> 116 0.0022219999 1.915...e-05
> org-agenda-get-blocks
> 1 0.002071 0.002071
> org-entry-is-done-p
> 113 0.0019850000 1.756...e-05
> org-agenda-get-sexps
> 1 0.001713 0.001713
> org-finalize-agenda
> 1 0.001653 0.001653
> org-split-string
> 633 0.0015850000 2.503...e-06
> org-agenda-dim-blocked-tasks
> 1 0.001572 0.001572
> org-parse-time-string
> 183 0.0013499999 7.377...e-06
> org-on-heading-p
> 424 0.0012929999 3.049...e-06
> org-get-property-block
> 6 0.0011920000 0.0001986666
> org-fit-window-to-buffer
> 1 0.000942 0.000942
> org-block-todo-from-children-or-siblings-or-parent
> 2 0.000905 0.0004525
> org-format-agenda-item
> 2 0.0008860000 0.0004430000
> org-remove-uniherited-tags
> 627 0.0007880000 1.256...e-06
> org-get-effort
> 2 0.00074 0.00037
> ajk/org-agenda-skip-if-tagged-for-home
> 8 0.000539 6.7375e-05
> org-get-wdays
> 180 0.0004700000 2.611...e-06
> org-get-category
> 419 0.0004360000 1.040...e-06
> org-trim
> 111 0.0003769999 3.396...e-06
> org-agenda-files
> 3 0.000291 9.700...e-05
> org-agenda-mode
> 1 0.000287 0.000287
> org-add-prop-inherited
> 250 0.0002820000 1.128...e-06
> org-time-string-to-absolute
> 5 0.000258 5.159...e-05
> org-finalize-agenda-entries
> 1 0.000233 0.000233
> org-switch-to-buffer-other-window
> 1 0.000217 0.000217
> org-get-priority
> 2 0.000194 9.7e-05
> org-get-tags
> 8 0.000168 2.1e-05
> org-agenda-highlight-todo
> 2 0.0001590000 7.950...e-05
> org-closest-date
> 4 0.000157 3.925e-05
> org-uniquify
> 5 0.0001439999 2.879...e-05
> org-check-agenda-file
> 2 0.000105 5.25e-05
> org-get-agenda-file-buffer
> 2 9.6e-05 4.8e-05
> org-find-base-buffer-visiting
> 2 8.5e-05 4.25e-05
> org-date-to-gregorian
> 8 8.1e-05 1.0125e-05
> org-compile-prefix-format
> 1 6.8e-05 6.8e-05
> org-days-to-iso-week
> 3 5.7e-05 1.9e-05
> org-agenda-format-date-aligned
> 1 4.8e-05 4.8e-05
> org-add-props
> 8 3.5e-05 4.375e-06
> org-agenda-new-marker
> 4 3.5e-05 8.75e-06
> org-agenda-todayp
> 2 3.3e-05 1.65e-05
> org-agenda-add-inherited-tags
> 2 2.999...e-05 1.499...e-05
> org-agenda-reset-markers
> 1 2.7e-05 2.7e-05
> org-agenda-align-tags
> 1 2.7e-05 2.7e-05
> org-entries-lessp
> 1 2.4e-05 2.4e-05
> org-agenda-fontify-priorities
> 1 1.4e-05 1.4e-05
> org-agenda-mark-header-line
> 1 1.1e-05 1.1e-05
> org-activate-bracket-links
> 1 9e-06 9e-06
> org-get-at-bol
> 4 9e-06 2.25e-06
> org-hh:mm-string-to-minutes
> 1 8e-06 8e-06
> org-agenda-add-time-grid-maybe
> 1 7e-06 7e-06
> org-agenda-deadline-face
> 2 7e-06 3.5e-06
> org-add-hook
> 2 7e-06 3.5e-06
> org-agenda-set-mode-name
> 1 6e-06 6e-06
> org-float-time
> 4 6e-06 1.5e-06
> org-agenda-mark-clocking-task
> 1 5e-06 5e-06
> org-overlays-in
> 3 4.999...e-06 1.666...e-06
> org-downcase-keep-props
> 2 4e-06 2e-06
> org-unhighlight
> 1 4e-06 4e-06
> org-region-active-p
> 1 3e-06 3e-06
> org-file-menu-entry
> 1 3e-06 3e-06
> org-get-todo-face
> 2 3e-06 1.5e-06
> org-set-sorting-strategy
> 1 2e-06 2e-06
> org-agenda-ndays-to-span
> 2 2e-06 1e-06
> org-font-lock-add-tag-faces
> 1 2e-06 2e-06
> org-fit-agenda-window
> 1 1e-06 1e-06
> org-before-change-function
> 1 1e-06 1e-06
>
>
>
> _______________________________________________
> Emacs-orgmode mailing list
> Please use `Reply All' to send replies to the list.
> Emacs-orgmode@gnu.org
> http://lists.gnu.org/mailman/listinfo/emacs-orgmode
- Carsten
^ permalink raw reply [flat|nested] 10+ messages in thread
* Re: Speeding up agenda display
2009-12-31 7:45 ` Carsten Dominik
@ 2009-12-31 17:46 ` Andrew J. Korty
2010-01-02 7:50 ` Carsten Dominik
0 siblings, 1 reply; 10+ messages in thread
From: Andrew J. Korty @ 2009-12-31 17:46 UTC (permalink / raw)
To: Org Mode
Shaved off half a second. So that's something!
ajk
org-agenda 1 1.534166 1.534166
org-let 1 1.070332 1.070332
org-agenda-list 1 1.070318 1.070318
org-agenda-get-day-entries 1 1.040049 1.040049
ajk/org-agenda-skip-if-not-due-soon 416 0.5035600000 0.0012104807
org-agenda-get-scheduled 1 0.478835 0.478835
org-agenda-get-restriction-and-command 1 0.463795 0.463795
ajk/org-agenda-skip-if-due-soon 416 0.3743920000 0.0008999807
org-entry-get 425 0.366792 0.00086304
org-entry-properties 416 0.3582450000 0.0008611658
org-agenda-skip-entry-if 416 0.3090569999 0.0007429254
org-agenda-skip-if 416 0.3077089999 0.0007396850
org-agenda-get-timestamps 1 0.302895 0.302895
org-agenda-get-deadlines 1 0.254305 0.254305
org-back-to-heading 991 0.1790740000 0.0001807003
ajk/org-skip-position 419 0.1317510000 0.0003144415
org-at-date-range-p 101 0.0377359999 0.0003736237
org-prepare-agenda 1 0.022929 0.022929
org-prepare-agenda-buffers 1 0.022543 0.022543
org-agenda-skip 416 0.0190569999 4.581...e-05
org-refresh-category-properties 1 0.011837 0.011837
org-get-tags-at 3 0.009567 0.0031890000
org-up-heading-safe 11 0.0094379999 0.0008579999
org-deadline-close 177 0.0081639999 4.612...e-05
org-finalize-agenda 1 0.005829 0.005829
org-agenda-dim-blocked-tasks 1 0.005662 0.005662
org-get-property-block 9 0.005145 0.0005716666
org-days-to-time 177 0.0044610000 2.520...e-05
org-get-todo-state 119 0.004413 3.708...e-05
org-format-agenda-item 3 0.003384 0.0011279999
org-get-effort 3 0.0031450000 0.0010483333
org-block-todo-from-children-or-siblings-or-parent 3 0.0028770000 0.0009590000
org-time-string-to-time 177 0.0021530000 1.216...e-05
org-agenda-get-blocks 1 0.002113 0.002113
org-entry-is-done-p 114 0.0020669999 1.813...e-05
org-agenda-get-sexps 1 0.001715 0.001715
ajk/org-agenda-skip-if-tagged-for-home 11 0.001621 0.0001473636
org-parse-time-string 184 0.0012810000 6.961...e-06
org-get-priority 3 0.0009730000 0.0003243333
org-fit-window-to-buffer 1 0.000604 0.000604
org-get-category 420 0.0004230000 1.007...e-06
org-get-wdays 180 0.0004199999 2.333...e-06
org-trim 113 0.0003679999 3.256...e-06
org-finalize-agenda-entries 1 0.000337 0.000337
org-get-tags 11 0.000304 2.763...e-05
org-time-string-to-absolute 7 0.0002929999 4.185...e-05
org-agenda-mode 1 0.000236 0.000236
org-agenda-highlight-todo 3 0.000225 7.5e-05
org-agenda-files 3 0.000218 7.266...e-05
org-get-tags-string 11 0.0001759999 1.599...e-05
org-switch-to-buffer-other-window 1 0.000172 0.000172
org-closest-date 4 0.000158 3.95e-05
org-outline-level 25 0.0001409999 5.639...e-06
org-uniquify 5 0.0001150000 2.300...e-05
org-check-agenda-file 2 9.5e-05 4.75e-05
org-date-to-gregorian 8 8.2e-05 1.025e-05
org-get-agenda-file-buffer 2 8.2e-05 4.1e-05
org-split-string 16 7.5e-05 4.6875e-06
org-find-base-buffer-visiting 2 7.2e-05 3.6e-05
org-activate-bracket-links 2 6.8e-05 3.4e-05
org-days-to-iso-week 3 5.699...e-05 1.899...e-05
org-agenda-format-date-aligned 1 5.5e-05 5.5e-05
org-compile-prefix-format 1 5.3e-05 5.3e-05
org-add-props 11 4.9e-05 4.454...e-06
org-agenda-fix-displayed-tags 3 4.5e-05 1.5e-05
org-agenda-new-marker 6 4.4e-05 7.333...e-06
org-entries-lessp 2 3.999...e-05 1.999...e-05
org-agenda-align-tags 1 3.6e-05 3.6e-05
org-agenda-todayp 2 3.1e-05 1.55e-05
org-on-heading-p 11 3.000...e-05 2.727...e-06
org-agenda-reset-markers 1 2.1e-05 2.1e-05
org-agenda-fontify-priorities 1 2.1e-05 2.1e-05
org-hh:mm-string-to-minutes 2 1.499...e-05 7.499...e-06
org-get-at-bol 5 1.2e-05 2.4e-06
org-agenda-add-time-grid-maybe 1 1.1e-05 1.1e-05
org-get-time-of-day 1 1.1e-05 1.1e-05
org-agenda-mark-header-line 1 9e-06 9e-06
org-agenda-deadline-face 3 8e-06 2.666...e-06
org-remove-uniherited-tags 5 8e-06 1.6e-06
org-agenda-set-mode-name 1 7e-06 7e-06
org-remove-flyspell-overlays-in 1 7e-06 7e-06
org-add-hook 2 6e-06 3e-06
org-float-time 6 5.999...e-06 1e-06
org-agenda-mark-clocking-task 1 5e-06 5e-06
org-overlays-in 3 4.999...e-06 1.666...e-06
org-downcase-keep-props 3 4e-06 1.333...e-06
org-get-todo-face 3 4e-06 1.333...e-06
org-region-active-p 1 3e-06 3e-06
org-file-menu-entry 1 3e-06 3e-06
org-unhighlight 1 3e-06 3e-06
org-set-sorting-strategy 1 2e-06 2e-06
org-add-prop-inherited 2 2e-06 1e-06
org-before-change-function 1 2e-06 2e-06
org-fit-agenda-window 1 1e-06 1e-06
org-agenda-ndays-to-span 2 1e-06 5e-07
org-font-lock-add-tag-faces 1 1e-06 1e-06
On Dec 31, 2009, at 02:45 , Carsten Dominik wrote:
> Hi Andrew, thanks!
>
> The only thing I see now is this:
>
> 1. Get the latest development version. A week or two ago I made
> an optimization that should speed up
>
> (org-entry-get nil "DEADLINE")
>
> quite a bit.
>
> Let's see if that does help enough.
>
> - Carsten
>
> On Dec 30, 2009, at 8:40 PM, Andrew J. Korty wrote:
>
>> On Dec 30, 2009, at 14:20 , Carsten Dominik wrote:
>>
>>> could you please also instrument your ajk/ functions for profiling
>>> and
>>> repeat the experiment? And show the code of all these functions, not
>>> only some (I am missing for example `ajk/org-agenda-skip-if-due-
>>> soon'....
>>
>> Yes to both -- see below for corrected listings of code and
>> profiling results.
>>
>>> Also:
>>>
>>> - Are you using property inheritance?
>>> - Are you relying on tag inheritance to check for @yard and @home?
>>
>> No to both.
>>
>>> - Are you using the latest version of Org-mode?
>>
>> I'm using 6.33.
>>
>> Btw, the single org file from which the agenda is generated contains
>> 323 headlines in the TODO state and 12,227 lines total.
>>
>> Thanks,
>> ajk
>>
>> (setq org-agenda-custom-commands
>> '(("o" "Due at Office" agenda ""
>> ((org-agenda-skip-function
>> '(or (org-agenda-skip-entry-if '(notdeadline))
>> (ajk/org-agenda-skip-if-not-due-soon)
>> (ajk/org-agenda-skip-if-tagged-for-home)))))))
>>
>> (defun ajk/org-skip-position ()
>> (or (save-excursion
>> (outline-next-heading)
>> (point))
>> (point-max)))
>>
>> (defun ajk/org-agenda-skip-if-due-soon ()
>> (and (let ((time (org-entry-get nil "DEADLINE"))) ; not due or not
>> due soon
>> (and time
>> (org-deadline-close time)))
>> (ajk/org-skip-position)))
>>
>> (defun ajk/org-agenda-skip-if-not-due-soon ()
>> (unless (ajk/org-agenda-skip-if-due-soon)
>> (ajk/org-skip-position)))
>>
>> (defun ajk/org-agenda-skip-if-tagged-for-home ()
>> (org-back-to-heading t)
>> (let ((tags (org-get-tags)))
>> (if (or (member "@home" tags)
>> (member "@yard" tags))
>> (ajk/org-skip-position))))
>>
>> org-agenda
>> 1 1.997575 1.997575
>> org-let
>> 1 1.3057590000 1.3057590000
>> org-agenda-list
>> 1 1.305747 1.305747
>> org-agenda-get-day-entries
>> 1 1.279215 1.279215
>> ajk/org-agenda-skip-if-not-due-soon
>> 416 1.0349629999 0.0024878918
>> ajk/org-agenda-skip-if-due-soon
>> 416 0.9751669999 0.0023441514
>> org-entry-get
>> 422 0.9655619999 0.0022880616
>> org-entry-properties
>> 416 0.9618369999 0.0023121081
>> org-get-tags-at
>> 418 0.6982910000 0.0016705526
>> org-agenda-get-restriction-and-command
>> 1 0.691773 0.691773
>> org-up-heading-safe
>> 1055 0.6649149999 0.0006302511
>> org-agenda-get-scheduled
>> 1 0.6341589999 0.6341589999
>> org-agenda-get-deadlines
>> 1 0.5069330000 0.5069330000
>> org-agenda-skip-entry-if
>> 416 0.1385249999 0.0003329927
>> org-agenda-skip-if
>> 416 0.1372300000 0.0003298798
>> org-agenda-get-timestamps
>> 1 0.134207 0.134207
>> org-back-to-heading
>> 2439 0.0887650000 3.639...e-05
>> ajk/org-skip-position
>> 419 0.0583169999 0.0001391813
>> org-prepare-agenda
>> 1 0.023446 0.023446
>> org-prepare-agenda-buffers
>> 1 0.022988 0.022988
>> org-refresh-category-properties
>> 1 0.012406 0.012406
>> org-outline-level
>> 1696 0.0118750000 7.001...e-06
>> org-at-date-range-p
>> 101 0.009216 9.124...e-05
>> org-agenda-skip
>> 416 0.0086059999 2.068...e-05
>> org-deadline-close
>> 178 0.0084609999 4.753...e-05
>> org-get-tags-string
>> 424 0.0053519999 1.262...e-05
>> org-days-to-time
>> 178 0.0047240000 2.653...e-05
>> org-time-string-to-time
>> 178 0.0022689999 1.274...e-05
>> org-get-todo-state
>> 116 0.0022219999 1.915...e-05
>> org-agenda-get-blocks
>> 1 0.002071 0.002071
>> org-entry-is-done-p
>> 113 0.0019850000 1.756...e-05
>> org-agenda-get-sexps
>> 1 0.001713 0.001713
>> org-finalize-agenda
>> 1 0.001653 0.001653
>> org-split-string
>> 633 0.0015850000 2.503...e-06
>> org-agenda-dim-blocked-tasks
>> 1 0.001572 0.001572
>> org-parse-time-string
>> 183 0.0013499999 7.377...e-06
>> org-on-heading-p
>> 424 0.0012929999 3.049...e-06
>> org-get-property-block
>> 6 0.0011920000 0.0001986666
>> org-fit-window-to-buffer
>> 1 0.000942 0.000942
>> org-block-todo-from-children-or-siblings-or-parent
>> 2 0.000905 0.0004525
>> org-format-agenda-item
>> 2 0.0008860000 0.0004430000
>> org-remove-uniherited-tags
>> 627 0.0007880000 1.256...e-06
>> org-get-effort
>> 2 0.00074 0.00037
>> ajk/org-agenda-skip-if-tagged-for-home
>> 8 0.000539 6.7375e-05
>> org-get-wdays
>> 180 0.0004700000 2.611...e-06
>> org-get-category
>> 419 0.0004360000 1.040...e-06
>> org-trim
>> 111 0.0003769999 3.396...e-06
>> org-agenda-files
>> 3 0.000291 9.700...e-05
>> org-agenda-mode
>> 1 0.000287 0.000287
>> org-add-prop-inherited
>> 250 0.0002820000 1.128...e-06
>> org-time-string-to-absolute
>> 5 0.000258 5.159...e-05
>> org-finalize-agenda-entries
>> 1 0.000233 0.000233
>> org-switch-to-buffer-other-window
>> 1 0.000217 0.000217
>> org-get-priority
>> 2 0.000194 9.7e-05
>> org-get-tags
>> 8 0.000168 2.1e-05
>> org-agenda-highlight-todo
>> 2 0.0001590000 7.950...e-05
>> org-closest-date
>> 4 0.000157 3.925e-05
>> org-uniquify
>> 5 0.0001439999 2.879...e-05
>> org-check-agenda-file
>> 2 0.000105 5.25e-05
>> org-get-agenda-file-buffer
>> 2 9.6e-05 4.8e-05
>> org-find-base-buffer-visiting
>> 2 8.5e-05 4.25e-05
>> org-date-to-gregorian
>> 8 8.1e-05 1.0125e-05
>> org-compile-prefix-format
>> 1 6.8e-05 6.8e-05
>> org-days-to-iso-week
>> 3 5.7e-05 1.9e-05
>> org-agenda-format-date-aligned
>> 1 4.8e-05 4.8e-05
>> org-add-props
>> 8 3.5e-05 4.375e-06
>> org-agenda-new-marker
>> 4 3.5e-05 8.75e-06
>> org-agenda-todayp
>> 2 3.3e-05 1.65e-05
>> org-agenda-add-inherited-tags
>> 2 2.999...e-05 1.499...e-05
>> org-agenda-reset-markers
>> 1 2.7e-05 2.7e-05
>> org-agenda-align-tags
>> 1 2.7e-05 2.7e-05
>> org-entries-lessp
>> 1 2.4e-05 2.4e-05
>> org-agenda-fontify-priorities
>> 1 1.4e-05 1.4e-05
>> org-agenda-mark-header-line
>> 1 1.1e-05 1.1e-05
>> org-activate-bracket-links
>> 1 9e-06 9e-06
>> org-get-at-bol
>> 4 9e-06 2.25e-06
>> org-hh:mm-string-to-minutes
>> 1 8e-06 8e-06
>> org-agenda-add-time-grid-maybe
>> 1 7e-06 7e-06
>> org-agenda-deadline-face
>> 2 7e-06 3.5e-06
>> org-add-hook
>> 2 7e-06 3.5e-06
>> org-agenda-set-mode-name
>> 1 6e-06 6e-06
>> org-float-time
>> 4 6e-06 1.5e-06
>> org-agenda-mark-clocking-task
>> 1 5e-06 5e-06
>> org-overlays-in
>> 3 4.999...e-06 1.666...e-06
>> org-downcase-keep-props
>> 2 4e-06 2e-06
>> org-unhighlight
>> 1 4e-06 4e-06
>> org-region-active-p
>> 1 3e-06 3e-06
>> org-file-menu-entry
>> 1 3e-06 3e-06
>> org-get-todo-face
>> 2 3e-06 1.5e-06
>> org-set-sorting-strategy
>> 1 2e-06 2e-06
>> org-agenda-ndays-to-span
>> 2 2e-06 1e-06
>> org-font-lock-add-tag-faces
>> 1 2e-06 2e-06
>> org-fit-agenda-window
>> 1 1e-06 1e-06
>> org-before-change-function
>> 1 1e-06 1e-06
>>
>>
>>
>> _______________________________________________
>> Emacs-orgmode mailing list
>> Please use `Reply All' to send replies to the list.
>> Emacs-orgmode@gnu.org
>> http://lists.gnu.org/mailman/listinfo/emacs-orgmode
>
> - Carsten
>
>
>
^ permalink raw reply [flat|nested] 10+ messages in thread
* Re: Speeding up agenda display
2009-12-31 17:46 ` Andrew J. Korty
@ 2010-01-02 7:50 ` Carsten Dominik
2010-01-02 14:38 ` Andrew J. Korty
0 siblings, 1 reply; 10+ messages in thread
From: Carsten Dominik @ 2010-01-02 7:50 UTC (permalink / raw)
To: Andrew J. Korty; +Cc: Org Mode
On Dec 31, 2009, at 6:46 PM, Andrew J. Korty wrote:
> Shaved off half a second. So that's something!
You can shave off another .5 seconds by pressing the selection key
faster - Org
spends 0.46 seconds to wait for your keypress :-)
- Carsten
>
> ajk
>
> org-agenda
> 1 1.534166 1.534166
> org-let
> 1 1.070332 1.070332
> org-agenda-list
> 1 1.070318 1.070318
> org-agenda-get-day-entries
> 1 1.040049 1.040049
> ajk/org-agenda-skip-if-not-due-soon
> 416 0.5035600000 0.0012104807
> org-agenda-get-scheduled
> 1 0.478835 0.478835
> org-agenda-get-restriction-and-command
> 1 0.463795 0.463795
> ajk/org-agenda-skip-if-due-soon
> 416 0.3743920000 0.0008999807
> org-entry-get
> 425 0.366792 0.00086304
> org-entry-properties
> 416 0.3582450000 0.0008611658
> org-agenda-skip-entry-if
> 416 0.3090569999 0.0007429254
> org-agenda-skip-if
> 416 0.3077089999 0.0007396850
> org-agenda-get-timestamps
> 1 0.302895 0.302895
> org-agenda-get-deadlines
> 1 0.254305 0.254305
> org-back-to-heading
> 991 0.1790740000 0.0001807003
> ajk/org-skip-position
> 419 0.1317510000 0.0003144415
> org-at-date-range-p
> 101 0.0377359999 0.0003736237
> org-prepare-agenda
> 1 0.022929 0.022929
> org-prepare-agenda-buffers
> 1 0.022543 0.022543
> org-agenda-skip
> 416 0.0190569999 4.581...e-05
> org-refresh-category-properties
> 1 0.011837 0.011837
> org-get-tags-at
> 3 0.009567 0.0031890000
> org-up-heading-safe
> 11 0.0094379999 0.0008579999
> org-deadline-close
> 177 0.0081639999 4.612...e-05
> org-finalize-agenda
> 1 0.005829 0.005829
> org-agenda-dim-blocked-tasks
> 1 0.005662 0.005662
> org-get-property-block
> 9 0.005145 0.0005716666
> org-days-to-time
> 177 0.0044610000 2.520...e-05
> org-get-todo-state
> 119 0.004413 3.708...e-05
> org-format-agenda-item
> 3 0.003384 0.0011279999
> org-get-effort
> 3 0.0031450000 0.0010483333
> org-block-todo-from-children-or-siblings-or-parent
> 3 0.0028770000 0.0009590000
> org-time-string-to-time
> 177 0.0021530000 1.216...e-05
> org-agenda-get-blocks
> 1 0.002113 0.002113
> org-entry-is-done-p
> 114 0.0020669999 1.813...e-05
> org-agenda-get-sexps
> 1 0.001715 0.001715
> ajk/org-agenda-skip-if-tagged-for-home
> 11 0.001621 0.0001473636
> org-parse-time-string
> 184 0.0012810000 6.961...e-06
> org-get-priority
> 3 0.0009730000 0.0003243333
> org-fit-window-to-buffer
> 1 0.000604 0.000604
> org-get-category
> 420 0.0004230000 1.007...e-06
> org-get-wdays
> 180 0.0004199999 2.333...e-06
> org-trim
> 113 0.0003679999 3.256...e-06
> org-finalize-agenda-entries
> 1 0.000337 0.000337
> org-get-tags
> 11 0.000304 2.763...e-05
> org-time-string-to-absolute
> 7 0.0002929999 4.185...e-05
> org-agenda-mode
> 1 0.000236 0.000236
> org-agenda-highlight-todo
> 3 0.000225 7.5e-05
> org-agenda-files
> 3 0.000218 7.266...e-05
> org-get-tags-string
> 11 0.0001759999 1.599...e-05
> org-switch-to-buffer-other-window
> 1 0.000172 0.000172
> org-closest-date
> 4 0.000158 3.95e-05
> org-outline-level
> 25 0.0001409999 5.639...e-06
> org-uniquify
> 5 0.0001150000 2.300...e-05
> org-check-agenda-file
> 2 9.5e-05 4.75e-05
> org-date-to-gregorian
> 8 8.2e-05 1.025e-05
> org-get-agenda-file-buffer
> 2 8.2e-05 4.1e-05
> org-split-string
> 16 7.5e-05 4.6875e-06
> org-find-base-buffer-visiting
> 2 7.2e-05 3.6e-05
> org-activate-bracket-links
> 2 6.8e-05 3.4e-05
> org-days-to-iso-week
> 3 5.699...e-05 1.899...e-05
> org-agenda-format-date-aligned
> 1 5.5e-05 5.5e-05
> org-compile-prefix-format
> 1 5.3e-05 5.3e-05
> org-add-props
> 11 4.9e-05 4.454...e-06
> org-agenda-fix-displayed-tags
> 3 4.5e-05 1.5e-05
> org-agenda-new-marker
> 6 4.4e-05 7.333...e-06
> org-entries-lessp
> 2 3.999...e-05 1.999...e-05
> org-agenda-align-tags
> 1 3.6e-05 3.6e-05
> org-agenda-todayp
> 2 3.1e-05 1.55e-05
> org-on-heading-p
> 11 3.000...e-05 2.727...e-06
> org-agenda-reset-markers
> 1 2.1e-05 2.1e-05
> org-agenda-fontify-priorities
> 1 2.1e-05 2.1e-05
> org-hh:mm-string-to-minutes
> 2 1.499...e-05 7.499...e-06
> org-get-at-bol
> 5 1.2e-05 2.4e-06
> org-agenda-add-time-grid-maybe
> 1 1.1e-05 1.1e-05
> org-get-time-of-day
> 1 1.1e-05 1.1e-05
> org-agenda-mark-header-line
> 1 9e-06 9e-06
> org-agenda-deadline-face
> 3 8e-06 2.666...e-06
> org-remove-uniherited-tags
> 5 8e-06 1.6e-06
> org-agenda-set-mode-name
> 1 7e-06 7e-06
> org-remove-flyspell-overlays-in
> 1 7e-06 7e-06
> org-add-hook
> 2 6e-06 3e-06
> org-float-time
> 6 5.999...e-06 1e-06
> org-agenda-mark-clocking-task
> 1 5e-06 5e-06
> org-overlays-in
> 3 4.999...e-06 1.666...e-06
> org-downcase-keep-props
> 3 4e-06 1.333...e-06
> org-get-todo-face
> 3 4e-06 1.333...e-06
> org-region-active-p
> 1 3e-06 3e-06
> org-file-menu-entry
> 1 3e-06 3e-06
> org-unhighlight
> 1 3e-06 3e-06
> org-set-sorting-strategy
> 1 2e-06 2e-06
> org-add-prop-inherited
> 2 2e-06 1e-06
> org-before-change-function
> 1 2e-06 2e-06
> org-fit-agenda-window
> 1 1e-06 1e-06
> org-agenda-ndays-to-span
> 2 1e-06 5e-07
> org-font-lock-add-tag-faces
> 1 1e-06 1e-06
>
> On Dec 31, 2009, at 02:45 , Carsten Dominik wrote:
>
>> Hi Andrew, thanks!
>>
>> The only thing I see now is this:
>>
>> 1. Get the latest development version. A week or two ago I made
>> an optimization that should speed up
>>
>> (org-entry-get nil "DEADLINE")
>>
>> quite a bit.
>>
>> Let's see if that does help enough.
>>
>> - Carsten
>>
>> On Dec 30, 2009, at 8:40 PM, Andrew J. Korty wrote:
>>
>>> On Dec 30, 2009, at 14:20 , Carsten Dominik wrote:
>>>
>>>> could you please also instrument your ajk/ functions for profiling
>>>> and
>>>> repeat the experiment? And show the code of all these functions,
>>>> not
>>>> only some (I am missing for example `ajk/org-agenda-skip-if-due-
>>>> soon'....
>>>
>>> Yes to both -- see below for corrected listings of code and
>>> profiling results.
>>>
>>>> Also:
>>>>
>>>> - Are you using property inheritance?
>>>> - Are you relying on tag inheritance to check for @yard and @home?
>>>
>>> No to both.
>>>
>>>> - Are you using the latest version of Org-mode?
>>>
>>> I'm using 6.33.
>>>
>>> Btw, the single org file from which the agenda is generated contains
>>> 323 headlines in the TODO state and 12,227 lines total.
>>>
>>> Thanks,
>>> ajk
>>>
>>> (setq org-agenda-custom-commands
>>> '(("o" "Due at Office" agenda ""
>>> ((org-agenda-skip-function
>>> '(or (org-agenda-skip-entry-if '(notdeadline))
>>> (ajk/org-agenda-skip-if-not-due-soon)
>>> (ajk/org-agenda-skip-if-tagged-for-home)))))))
>>>
>>> (defun ajk/org-skip-position ()
>>> (or (save-excursion
>>> (outline-next-heading)
>>> (point))
>>> (point-max)))
>>>
>>> (defun ajk/org-agenda-skip-if-due-soon ()
>>> (and (let ((time (org-entry-get nil "DEADLINE"))) ; not due or not
>>> due soon
>>> (and time
>>> (org-deadline-close time)))
>>> (ajk/org-skip-position)))
>>>
>>> (defun ajk/org-agenda-skip-if-not-due-soon ()
>>> (unless (ajk/org-agenda-skip-if-due-soon)
>>> (ajk/org-skip-position)))
>>>
>>> (defun ajk/org-agenda-skip-if-tagged-for-home ()
>>> (org-back-to-heading t)
>>> (let ((tags (org-get-tags)))
>>> (if (or (member "@home" tags)
>>> (member "@yard" tags))
>>> (ajk/org-skip-position))))
>>>
>>> org-agenda
>>> 1 1.997575 1.997575
>>> org-let
>>> 1 1.3057590000 1.3057590000
>>> org-agenda-list
>>> 1 1.305747 1.305747
>>> org-agenda-get-day-entries
>>> 1 1.279215 1.279215
>>> ajk/org-agenda-skip-if-not-due-soon
>>> 416 1.0349629999 0.0024878918
>>> ajk/org-agenda-skip-if-due-soon
>>> 416 0.9751669999 0.0023441514
>>> org-entry-get
>>> 422 0.9655619999 0.0022880616
>>> org-entry-properties
>>> 416 0.9618369999 0.0023121081
>>> org-get-tags-at
>>> 418 0.6982910000 0.0016705526
>>> org-agenda-get-restriction-and-command
>>> 1 0.691773 0.691773
>>> org-up-heading-safe
>>> 1055 0.6649149999 0.0006302511
>>> org-agenda-get-scheduled
>>> 1 0.6341589999 0.6341589999
>>> org-agenda-get-deadlines
>>> 1 0.5069330000 0.5069330000
>>> org-agenda-skip-entry-if
>>> 416 0.1385249999 0.0003329927
>>> org-agenda-skip-if
>>> 416 0.1372300000 0.0003298798
>>> org-agenda-get-timestamps
>>> 1 0.134207 0.134207
>>> org-back-to-heading
>>> 2439 0.0887650000 3.639...e-05
>>> ajk/org-skip-position
>>> 419 0.0583169999 0.0001391813
>>> org-prepare-agenda
>>> 1 0.023446 0.023446
>>> org-prepare-agenda-buffers
>>> 1 0.022988 0.022988
>>> org-refresh-category-properties
>>> 1 0.012406 0.012406
>>> org-outline-level
>>> 1696 0.0118750000 7.001...e-06
>>> org-at-date-range-p
>>> 101 0.009216 9.124...e-05
>>> org-agenda-skip
>>> 416 0.0086059999 2.068...e-05
>>> org-deadline-close
>>> 178 0.0084609999 4.753...e-05
>>> org-get-tags-string
>>> 424 0.0053519999 1.262...e-05
>>> org-days-to-time
>>> 178 0.0047240000 2.653...e-05
>>> org-time-string-to-time
>>> 178 0.0022689999 1.274...e-05
>>> org-get-todo-state
>>> 116 0.0022219999 1.915...e-05
>>> org-agenda-get-blocks
>>> 1 0.002071 0.002071
>>> org-entry-is-done-p
>>> 113 0.0019850000 1.756...e-05
>>> org-agenda-get-sexps
>>> 1 0.001713 0.001713
>>> org-finalize-agenda
>>> 1 0.001653 0.001653
>>> org-split-string
>>> 633 0.0015850000 2.503...e-06
>>> org-agenda-dim-blocked-tasks
>>> 1 0.001572 0.001572
>>> org-parse-time-string
>>> 183 0.0013499999 7.377...e-06
>>> org-on-heading-p
>>> 424 0.0012929999 3.049...e-06
>>> org-get-property-block
>>> 6 0.0011920000 0.0001986666
>>> org-fit-window-to-buffer
>>> 1 0.000942 0.000942
>>> org-block-todo-from-children-or-siblings-or-parent
>>> 2 0.000905 0.0004525
>>> org-format-agenda-item
>>> 2 0.0008860000 0.0004430000
>>> org-remove-uniherited-tags
>>> 627 0.0007880000 1.256...e-06
>>> org-get-effort
>>> 2 0.00074 0.00037
>>> ajk/org-agenda-skip-if-tagged-for-home
>>> 8 0.000539 6.7375e-05
>>> org-get-wdays
>>> 180 0.0004700000 2.611...e-06
>>> org-get-category
>>> 419 0.0004360000 1.040...e-06
>>> org-trim
>>> 111 0.0003769999 3.396...e-06
>>> org-agenda-files
>>> 3 0.000291 9.700...e-05
>>> org-agenda-mode
>>> 1 0.000287 0.000287
>>> org-add-prop-inherited
>>> 250 0.0002820000 1.128...e-06
>>> org-time-string-to-absolute
>>> 5 0.000258 5.159...e-05
>>> org-finalize-agenda-entries
>>> 1 0.000233 0.000233
>>> org-switch-to-buffer-other-window
>>> 1 0.000217 0.000217
>>> org-get-priority
>>> 2 0.000194 9.7e-05
>>> org-get-tags
>>> 8 0.000168 2.1e-05
>>> org-agenda-highlight-todo
>>> 2 0.0001590000 7.950...e-05
>>> org-closest-date
>>> 4 0.000157 3.925e-05
>>> org-uniquify
>>> 5 0.0001439999 2.879...e-05
>>> org-check-agenda-file
>>> 2 0.000105 5.25e-05
>>> org-get-agenda-file-buffer
>>> 2 9.6e-05 4.8e-05
>>> org-find-base-buffer-visiting
>>> 2 8.5e-05 4.25e-05
>>> org-date-to-gregorian
>>> 8 8.1e-05 1.0125e-05
>>> org-compile-prefix-format
>>> 1 6.8e-05 6.8e-05
>>> org-days-to-iso-week
>>> 3 5.7e-05 1.9e-05
>>> org-agenda-format-date-aligned
>>> 1 4.8e-05 4.8e-05
>>> org-add-props
>>> 8 3.5e-05 4.375e-06
>>> org-agenda-new-marker
>>> 4 3.5e-05 8.75e-06
>>> org-agenda-todayp
>>> 2 3.3e-05 1.65e-05
>>> org-agenda-add-inherited-tags
>>> 2 2.999...e-05 1.499...e-05
>>> org-agenda-reset-markers
>>> 1 2.7e-05 2.7e-05
>>> org-agenda-align-tags
>>> 1 2.7e-05 2.7e-05
>>> org-entries-lessp
>>> 1 2.4e-05 2.4e-05
>>> org-agenda-fontify-priorities
>>> 1 1.4e-05 1.4e-05
>>> org-agenda-mark-header-line
>>> 1 1.1e-05 1.1e-05
>>> org-activate-bracket-links
>>> 1 9e-06 9e-06
>>> org-get-at-bol
>>> 4 9e-06 2.25e-06
>>> org-hh:mm-string-to-minutes
>>> 1 8e-06 8e-06
>>> org-agenda-add-time-grid-maybe
>>> 1 7e-06 7e-06
>>> org-agenda-deadline-face
>>> 2 7e-06 3.5e-06
>>> org-add-hook
>>> 2 7e-06 3.5e-06
>>> org-agenda-set-mode-name
>>> 1 6e-06 6e-06
>>> org-float-time
>>> 4 6e-06 1.5e-06
>>> org-agenda-mark-clocking-task
>>> 1 5e-06 5e-06
>>> org-overlays-in
>>> 3 4.999...e-06 1.666...e-06
>>> org-downcase-keep-props
>>> 2 4e-06 2e-06
>>> org-unhighlight
>>> 1 4e-06 4e-06
>>> org-region-active-p
>>> 1 3e-06 3e-06
>>> org-file-menu-entry
>>> 1 3e-06 3e-06
>>> org-get-todo-face
>>> 2 3e-06 1.5e-06
>>> org-set-sorting-strategy
>>> 1 2e-06 2e-06
>>> org-agenda-ndays-to-span
>>> 2 2e-06 1e-06
>>> org-font-lock-add-tag-faces
>>> 1 2e-06 2e-06
>>> org-fit-agenda-window
>>> 1 1e-06 1e-06
>>> org-before-change-function
>>> 1 1e-06 1e-06
>>>
>>>
>>>
>>> _______________________________________________
>>> Emacs-orgmode mailing list
>>> Please use `Reply All' to send replies to the list.
>>> Emacs-orgmode@gnu.org
>>> http://lists.gnu.org/mailman/listinfo/emacs-orgmode
>>
>> - Carsten
>>
>>
>>
>
>
>
> _______________________________________________
> Emacs-orgmode mailing list
> Please use `Reply All' to send replies to the list.
> Emacs-orgmode@gnu.org
> http://lists.gnu.org/mailman/listinfo/emacs-orgmode
- Carsten
^ permalink raw reply [flat|nested] 10+ messages in thread
* Re: Speeding up agenda display
2010-01-02 7:50 ` Carsten Dominik
@ 2010-01-02 14:38 ` Andrew J. Korty
2010-01-02 19:37 ` Carsten Dominik
0 siblings, 1 reply; 10+ messages in thread
From: Andrew J. Korty @ 2010-01-02 14:38 UTC (permalink / raw)
To: Org Mode
On Jan 2, 2010, at 02:50 , Carsten Dominik wrote:
> You can shave off another .5 seconds by pressing the selection key
> faster - Org spends 0.46 seconds to wait for your keypress :-)
Good point. :-)
I optimized things a bit more by caching skip positions and schedule, deadline, and tag data for each point a skip function is called in a hash. An example hash value might be
(((due-soon . t) (started . nil) (tagged-for-home . t)) . skip-position)
These savings add up when you have several slightly differing agendas in a block agenda.
ajk
^ permalink raw reply [flat|nested] 10+ messages in thread
* Re: Speeding up agenda display
2010-01-02 14:38 ` Andrew J. Korty
@ 2010-01-02 19:37 ` Carsten Dominik
2010-01-03 3:40 ` Andrew J. Korty
0 siblings, 1 reply; 10+ messages in thread
From: Carsten Dominik @ 2010-01-02 19:37 UTC (permalink / raw)
To: Andrew J. Korty; +Cc: Org Mode
On Jan 2, 2010, at 3:38 PM, Andrew J. Korty wrote:
> On Jan 2, 2010, at 02:50 , Carsten Dominik wrote:
>
>> You can shave off another .5 seconds by pressing the selection key
>> faster - Org spends 0.46 seconds to wait for your keypress :-)
>
> Good point. :-)
>
> I optimized things a bit more by caching skip positions and
> schedule, deadline, and tag data for each point a skip function is
> called in a hash. An example hash value might be
>
> (((due-soon . t) (started . nil) (tagged-for-home . t)) . skip-
> position)
>
> These savings add up when you have several slightly differing
> agendas in a block agenda.
Hi Andrew,
that is interesting. I have been thinking about caching often
but always stopped implementing it because, being a plain text
system, there is always the possibility that thinks are being
changed behind the back of the cache. How are you handling
updating the cache?
- Carsten
^ permalink raw reply [flat|nested] 10+ messages in thread
* Re: Speeding up agenda display
2010-01-02 19:37 ` Carsten Dominik
@ 2010-01-03 3:40 ` Andrew J. Korty
2010-01-03 12:42 ` Carsten Dominik
0 siblings, 1 reply; 10+ messages in thread
From: Andrew J. Korty @ 2010-01-03 3:40 UTC (permalink / raw)
To: Org Mode
On Jan 2, 2010, at 14:37 , Carsten Dominik wrote:
> I have been thinking about caching often
> but always stopped implementing it because, being a plain text
> system, there is always the possibility that thinks are being
> changed behind the back of the cache. How are you handling
> updating the cache?
Well, I'm only using the cache while org-agenda is running -- it doesn't persist beyond that. So I don't have to worry about the agenda files changing, but I get no added benefit for subsequent agenda builds.
ajk
^ permalink raw reply [flat|nested] 10+ messages in thread
* Re: Speeding up agenda display
2010-01-03 3:40 ` Andrew J. Korty
@ 2010-01-03 12:42 ` Carsten Dominik
0 siblings, 0 replies; 10+ messages in thread
From: Carsten Dominik @ 2010-01-03 12:42 UTC (permalink / raw)
To: Andrew J. Korty; +Cc: Org Mode
On Jan 3, 2010, at 4:40 AM, Andrew J. Korty wrote:
> On Jan 2, 2010, at 14:37 , Carsten Dominik wrote:
>
>> I have been thinking about caching often
>> but always stopped implementing it because, being a plain text
>> system, there is always the possibility that thinks are being
>> changed behind the back of the cache. How are you handling
>> updating the cache?
>
> Well, I'm only using the cache while org-agenda is running -- it
> doesn't persist beyond that. So I don't have to worry about the
> agenda files changing, but I get no added benefit for subsequent
> agenda builds.
Ah, OK.
thanks.
- Carsten
^ permalink raw reply [flat|nested] 10+ messages in thread
end of thread, other threads:[~2010-01-03 12:42 UTC | newest]
Thread overview: 10+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2009-12-30 19:06 Speeding up agenda display Andrew J. Korty
2009-12-30 19:20 ` Carsten Dominik
2009-12-30 19:40 ` Andrew J. Korty
2009-12-31 7:45 ` Carsten Dominik
2009-12-31 17:46 ` Andrew J. Korty
2010-01-02 7:50 ` Carsten Dominik
2010-01-02 14:38 ` Andrew J. Korty
2010-01-02 19:37 ` Carsten Dominik
2010-01-03 3:40 ` Andrew J. Korty
2010-01-03 12:42 ` Carsten Dominik
Code repositories for project(s) associated with this public inbox
https://git.savannah.gnu.org/cgit/emacs/org-mode.git
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for read-only IMAP folder(s) and NNTP newsgroup(s).