emacs-orgmode
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

[O] Agenda very slow with org-agenda-dimmed-blocked-tasks


From: Matt Lundin
Subject: [O] Agenda very slow with org-agenda-dimmed-blocked-tasks
Date: Tue, 11 Aug 2015 06:31:05 -0500
User-agent: Gnus/5.130014 (Ma Gnus v0.14) Emacs/25.0.50 (gnu/linux)

The recent commit 570b1935e7db9913a2eb9084b6f1adc0d07a36cc dramatically
slowed down the generation of the agenda on my machine when
org-agenda-dimmed-blocked-tasks and org-enforce-todo-dependencies are
both set to t.

There seem to be an extraordinary number of calls to org-entry-blocked-p
and org-entry-get. Here's are the first several lines of profiling
information from a custom agenda command that has both of the settings
above enabled:

--8<---------------cut here---------------start------------->8---
   org-agenda-redo                                               1           
7.827560172   7.827560172
   org-agenda-run-series                                         2           
7.8218210500  3.9109105250
   org-let                                                       3           
7.20083237    2.4002774566
   org-agenda-finalize                                           4           
6.844503497   1.7111258742
   org-agenda-dim-blocked-tasks                                  1           
6.699442204   6.699442204
   org-entry-blocked-p                                           9935        
5.7348475660  0.0005772367
   org-block-todo-from-children-or-siblings-or-parent            9935        
4.0232743180  0.0004049596
   org-entry-get                                                 20138       
1.5084527930  7.490...e-05
   org-get-todo-state                                            47077       
1.2677654579  2.692...e-05
   org-entry-is-done-p                                           29892       
1.0612141059  3.550...e-05
   org-back-to-heading                                           89176       
0.7644088809  8.571...e-06
   org-property--local-values                                    10203       
0.6607707660  6.476...e-05
   org-outline-level                                             45939       
0.6526133970  1.420...e-05
   org-entry-is-todo-p                                           16970       
0.6425987680  3.786...e-05
   [snip]
--8<---------------cut here---------------end--------------->8---

By way of comparison here is the profiling information for the same
custom agenda command prior to the commit. Notice the 139 calls to
org-agenda-blocked-p compared to the 9935 above:

--8<---------------cut here---------------start------------->8---
   org-agenda-redo                                               1           
2.16555618    2.16555618
   org-agenda-run-series                                         1           
2.164402155   2.164402155
   org-let                                                       2           
1.563410317   0.7817051585
   org-agenda-finalize                                           4           
1.212033806   0.3030084515
   org-agenda-dim-blocked-tasks                                  1           
1.170204698   1.170204698
   org-let2                                                      3           
0.591343907   0.1971146356
   org-agenda-prepare                                            4           
0.3530507439  0.0882626859
   org-agenda-prepare-buffers                                    1           
0.327547542   0.327547542
   org-agenda-list-stuck-projects                                1           
0.326917219   0.326917219
   org-tags-view                                                 1           
0.326905634   0.326905634
   org-scan-tags                                                 50          
0.3165784299  0.0063315685
   org-todo-list                                                 1           
0.225206383   0.225206383
   org-set-regexps-and-options                                   50          
0.198799971   0.0039759994
   org--setup-collect-keywords                                   50          
0.1926802859  0.0038536057
   org-agenda-finalize-entries                                   3           
0.183284111   0.0610947036
   org-element-at-point                                          100         
0.1775049539  0.0017750495
   org-element--parse-to                                         100         
0.174980767   0.0017498076
   org-agenda-highlight-todo                                     157         
0.1738833260  0.0011075371
   org-element--cache-put                                        101         
0.165917795   0.0016427504
   org-agenda-get-day-entries                                    100         
0.063475662   0.0006347566
   org-refresh-category-properties                               50          
0.045959423   0.0009191884
   org-agenda-list                                               1           
0.03918709    0.03918709
   org-refresh-properties                                        100         
0.034035472   0.0003403547
   org-agenda-get-todos                                          50          
0.033929208   0.0006785841
   org-entry-blocked-p                                           139         
0.0336150219  0.0002418346
   org-outline-level                                             3906        
0.0276959979  7.090...e-06
   org-refresh-stats-properties                                  50          
0.0250132949  0.0005002658
   org-block-todo-from-children-or-siblings-or-parent            139         
0.0247768829  0.0001782509
   org-agenda-get-deadlines                                      50          
0.0235243889  0.0004704877
   org-get-tags-at                                               308         
0.0202068740  6.560...e-05
   org-refresh-effort-properties                                 50          
0.018845043   0.0003769008
   org-get-priority                                              157         
0.014716273   9.373...e-05
   org-up-heading-safe                                           236         
0.0143668880  6.087...e-05
   org-get-todo-state                                            853         
0.0134622469  1.578...e-05
   org-agenda-mode                                               1           
0.012866926   0.012866926
   org-agenda-align-tags                                         1           
0.011609398   0.011609398
   org-agenda-skip-eval                                          680         
0.0115281949  1.695...e-05
   org-agenda-skip-entry-when-regexp-matches-in-subtree          125         
0.0108022420  8.641...e-05
   org-entry-get                                                 145         
0.0084927020  5.857...e-05
--8<---------------cut here---------------end--------------->8---

Minimal recipe to replicate:

a) Config file

--8<---------------cut here---------------start------------->8---

Attachment: minimal.el
Description: application/emacs-lisp

--8<---------------cut here---------------end--------------->8---

- /usr/bin/emacsclient -Q -l ~/config/minimal.el

b) Create ~/test.org and enter the following tree 10 times:

--8<---------------cut here---------------start------------->8---
* TODO A blocked task
** TODO A task 
--8<---------------cut here---------------end--------------->8---

c) Run the following commands

- M-x org-agenda t
- M-x elp-instrument-package RET org
- M-x org-agenda-redo

Here are the profiling results with the commit:

org-agenda-redo                                               1           
0.075783146   0.075783146
org-let                                                       1           
0.074308752   0.074308752
org-todo-list                                                 1           
0.074301293   0.074301293
org-agenda-finalize-entries                                   1           
0.060647768   0.060647768
org-entries-lessp                                             40          
0.0590289540  0.0014757238
org-agenda-get-day-entries                                    1           
0.00579922    0.00579922
org-agenda-get-todos                                          1           
0.005716737   0.005716737
org-agenda-finalize                                           1           
0.003920996   0.003920996
org-agenda-dim-blocked-tasks                                  1           
0.002686523   0.002686523
org-entry-blocked-p                                           20          
0.0023204930  0.0001160246
org-agenda-fit-window-to-buffer                               1           
0.002024101   0.002024101
org-fit-window-to-buffer                                      1           
0.001988932   0.001988932
org-get-tags-at                                               40          
0.0018471419  4.617...e-05
org-block-todo-from-children-or-siblings-or-parent            20          
0.001525567   7.627835e-05
org-agenda-format-item                                        20          
0.001350015   6.750075e-05
org-agenda-prepare                                            1           
0.001326156   0.001326156
org-up-heading-safe                                           80          
0.0013012599  1.626575e-05
org-agenda-highlight-todo                                     20          
0.001223346   6.11673e-05
org-entry-get                                                 30          
0.0009493300  3.164...e-05
org-outline-level                                             170         
0.0008719429  5.129...e-06
org-back-to-heading                                           230         
0.000703085   3.056...e-06
org-property--local-values                                    30          
0.000674644   2.248...e-05
org-get-property-block                                        30          
0.0006162890  2.054...e-05
org-trim                                                      40          
0.000530127   1.325...e-05
org-em                                                        700         
0.0005297579  7.567...e-07
org-get-priority                                              20          
0.00051482    2.574...e-05
org-agenda-prepare-buffers                                    1           
0.000484229   0.000484229
org-get-todo-state                                            40          
0.0003871889  9.679...e-06
org-add-props                                                 60          
0.000343512   5.7252e-06
org-agenda-entry-get-agenda-timestamp                         20          
0.0003147379  1.57369e-05
org-agenda-skip                                               20          
0.000289489   1.447...e-05
org-agenda-mode                                               1           
0.000254148   0.000254148
org-agenda-new-marker                                         20          
0.0002131759  1.065...e-05
org-refresh-category-properties                               1           
0.000135219   0.000135219
org-before-first-heading-p                                    30          
0.000129829   4.327...e-06
org-agenda-files                                              3           
0.0001217309  4.057...e-05
org-cmp-values                                                40          
0.000107732   2.6933e-06
org-entry-is-done-p                                           10          
0.0001061900  1.061...e-05
org-cmp-category                                              40          
9.609...e-05  2.402...e-06
org-get-todo-face                                             20          
9.441...e-05  4.720...e-06
org-entry-is-todo-p                                           10          
9.056e-05     9.056e-06
org-set-regexps-and-options                                   1           
8.8796e-05    8.8796e-05
org-get-heading                                               10          
8.3972e-05    8.3972e-06
org-get-time-of-day                                           20          
8.2655e-05    4.13275e-06
org-unhighlight                                               2           
7.8921e-05    3.94605e-05
org-get-category                                              20          
7.8017e-05    3.90085e-06
org-agenda-fix-displayed-tags                                 20          
7.628...e-05  3.814...e-06
org-detach-overlay                                            2           
6.3885e-05    3.19425e-05
org-agenda-align-tags                                         1           
6.2838e-05    6.2838e-05
org-in-src-block-p                                            20          
5.9543e-05    2.97715e-06
org-refresh-stats-properties                                  1           
5.8101e-05    5.8101e-05
org-compile-prefix-format                                     1           
5.8062e-05    5.8062e-05
org-looking-at-p                                              30          
4.612...e-05  1.537...e-06
org-check-agenda-file                                         2           
4.4402e-05    2.2201e-05
org-get-agenda-file-buffer                                    2           
4.26e-05      2.13e-05
org-activate-plain-links                                      1           
4.1271e-05    4.1271e-05
org-add-hook                                                  4           
3.980...e-05  9.951...e-06
org-remove-uninherited-tags                                   40          
3.795...e-05  9.489...e-07
org-find-base-buffer-visiting                                 2           
3.5687e-05    1.78435e-05
org-get-at-bol                                                22          
3.454e-05     1.57e-06
org-refresh-properties                                        2           
3.194...e-05  1.597...e-05
org-make-options-regexp                                       1           
3.1266e-05    3.1266e-05
org-agenda-skip-eval                                          40          
3.017...e-05  7.543...e-07
org--setup-collect-keywords                                   1           
3.0002e-05    3.0002e-05
org-agenda-get-category-icon                                  20          
2.7342e-05    1.3671e-06
org-today                                                     2           
2.465...e-05  1.232...e-05
org-not-nil                                                   40          
2.111...e-05  5.2795e-07
org-refresh-effort-properties                                 1           
2.0797e-05    2.0797e-05
org-face-from-face-or-color                                   20          
1.998...e-05  9.994...e-07
org-activate-bracket-links                                    1           
1.9904e-05    1.9904e-05
org-reduced-level                                             20          
1.9249e-05    9.6245e-07
org-agenda-check-for-timestamp-as-reason-to-ignore-todo-item  20          
1.735...e-05  8.676...e-07
org-agenda-mark-header-line                                   2           
1.7215e-05    8.6075e-06
org-agenda-fontify-priorities                                 1           
1.6987e-05    1.6987e-05
org-agenda-reset-markers                                      1           
1.6665e-05    1.6665e-05
org-current-line                                              2           
1.616e-05     8.08e-06
org-float-time                                                20          
1.3168e-05    6.584e-07
org--setup-process-tags                                       1           
1.2282e-05    1.2282e-05
org-agenda-span-name                                          5           
1.111...e-05  2.2236e-06
org-re-property                                               1           
1.1077e-05    1.1077e-05
org-agenda-prepare-window                                     1           
1.0824e-05    1.0824e-05
org-uniquify                                                  5           
1.0212e-05    2.0424e-06
org-set-local                                                 6           
9.230...e-06  1.538...e-06
org-agenda-set-mode-name                                      1           
9.008e-06     9.008e-06
org-agenda-update-agenda-type                                 2           
8.613e-06     4.3065e-06
org-agenda-propertize-selected-todo-keywords                  1           
4.216e-06     4.216e-06
org-goto-line                                                 1           
3.753e-06     3.753e-06
org-set-sorting-strategy                                      1           
2.596e-06     2.596e-06
org-uniquify-alist                                            1           
2.033e-06     2.033e-06
org-font-lock-add-tag-faces                                   1           
1.351e-06     1.351e-06
org-file-menu-entry                                           1           
1.284e-06     1.284e-06
org-agenda-use-sticky-p                                       1           
1.011e-06     1.011e-06
org-agenda-mark-clocking-task                                 1           
8.93e-07      8.93e-07
Here are the profiling results after the commit:

org-agenda-redo                                               1           
0.288310367   0.288310367
org-let                                                       1           
0.285087688   0.285087688
org-todo-list                                                 1           
0.285079274   0.285079274
org-agenda-finalize                                           1           
0.272012485   0.272012485
org-agenda-dim-blocked-tasks                                  1           
0.270325613   0.270325613
org-entry-blocked-p                                           580         
0.1940442360  0.0003345590
org-block-todo-from-children-or-siblings-or-parent            580         
0.1009711290  0.0001740881
org-entry-get                                                 1410        
0.0965856959  6.850...e-05
org-up-heading-safe                                           560         
0.0680727980  0.0001215585
org-property--local-values                                    830         
0.0167895950  2.022...e-05
org-get-property-block                                        830         
0.0152417820  1.836...e-05
org-entry-properties                                          580         
0.0099000929  1.706...e-05
org-back-to-heading                                           3850        
0.0096790799  2.514...e-06
org-outline-level                                             2010        
0.0092372650  4.595...e-06
org-agenda-get-day-entries                                    1           
0.005782133   0.005782133
org-agenda-get-todos                                          1           
0.005699159   0.005699159
org-get-todo-state                                            680         
0.0055059249  8.096...e-06
org-get-at-bol                                                581         
0.0043025709  7.405...e-06
org-agenda-finalize-entries                                   1           
0.003616882   0.003616882
org-before-first-heading-p                                    830         
0.0034598270  4.168...e-06
org-entry-is-done-p                                           330         
0.0033791759  1.023...e-05
org-entry-is-todo-p                                           330         
0.0031137890  9.435...e-06
org-get-heading                                               330         
0.0026260989  7.957...e-06
org-get-tags-at                                               40          
0.001983332   4.95833e-05
org-entries-lessp                                             40          
0.001960238   4.900595e-05
org-agenda-fit-window-to-buffer                               1           
0.001945965   0.001945965
org-fit-window-to-buffer                                      1           
0.001917771   0.001917771
org-agenda-format-item                                        20          
0.0013505519  6.75276e-05
org-agenda-highlight-todo                                     20          
0.0012644160  6.322...e-05
org-looking-at-p                                              830         
0.0012345849  1.487...e-06
org-agenda-prepare                                            1           
0.001124014   0.001124014
org-match-string-no-properties                                580         
0.0007045290  1.214...e-06
org-em                                                        700         
0.0005474830  7.821...e-07
org-not-nil                                                   1080        
0.0005435310  5.032...e-07
org-trim                                                      40          
0.0005423520  1.355...e-05
org-agenda-prepare-buffers                                    1           
0.000515622   0.000515622
org-get-priority                                              20          
0.000501921   2.509...e-05
org-add-props                                                 60          
0.0003515730  5.859...e-06
org-agenda-entry-get-agenda-timestamp                         20          
0.000322989   1.614945e-05
org-agenda-skip                                               20          
0.000281676   1.40838e-05
org-agenda-mode                                               1           
0.000220725   0.000220725
org-agenda-new-marker                                         20          
0.0002005160  1.002...e-05
org-refresh-category-properties                               1           
0.000139015   0.000139015
org-agenda-files                                              3           
0.0001187149  3.957...e-05
org-get-todo-face                                             20          
9.5821e-05    4.791...e-06
org-cmp-category                                              40          
9.496...e-05  2.374...e-06
org-set-regexps-and-options                                   1           
9.116e-05     9.116e-05
org-cmp-values                                                40          
8.382...e-05  2.095...e-06
org-get-time-of-day                                           20          
8.205...e-05  4.10295e-06
org-get-category                                              20          
8.1716e-05    4.0858e-06
org-agenda-fix-displayed-tags                                 20          
7.4785e-05    3.73925e-06
org-agenda-align-tags                                         1           
6.3915e-05    6.3915e-05
org-in-src-block-p                                            20          
5.9565e-05    2.978...e-06
org-refresh-stats-properties                                  1           
5.8709e-05    5.8709e-05
org-compile-prefix-format                                     1           
5.553e-05     5.553e-05
org-check-agenda-file                                         2           
4.4228e-05    2.2114e-05
org-get-agenda-file-buffer                                    2           
4.420...e-05  2.210...e-05
org-activate-plain-links                                      1           
3.7979e-05    3.7979e-05
org-remove-uninherited-tags                                   40          
3.796...e-05  9.491...e-07
org-find-base-buffer-visiting                                 2           
3.593...e-05  1.796...e-05
org-make-options-regexp                                       1           
3.4553e-05    3.4553e-05
org-refresh-properties                                        2           
3.2276e-05    1.6138e-05
org-agenda-skip-eval                                          40          
3.026...e-05  7.566...e-07
org--setup-collect-keywords                                   1           
2.7909e-05    2.7909e-05
org-agenda-get-category-icon                                  20          
2.5506e-05    1.275...e-06
org-today                                                     2           
2.495e-05     1.2475e-05
org-refresh-effort-properties                                 1           
2.1299e-05    2.1299e-05
org-reduced-level                                             20          
1.9957e-05    9.9785e-07
org-unhighlight                                               2           
1.811...e-05  9.057...e-06
org-face-from-face-or-color                                   20          
1.811...e-05  9.056...e-07
org-agenda-reset-markers                                      1           
1.7852e-05    1.7852e-05
org-agenda-mark-header-line                                   2           
1.7597e-05    8.7985e-06
org-agenda-check-for-timestamp-as-reason-to-ignore-todo-item  20          
1.7074e-05    8.537e-07
org-agenda-fontify-priorities                                 1           
1.6277e-05    1.6277e-05
org-add-hook                                                  4           
1.554...e-05  3.886...e-06
org-current-line                                              2           
1.48e-05      7.4e-06
org-agenda-set-mode-name                                      1           
1.4106e-05    1.4106e-05
org-float-time                                                20          
1.3699e-05    6.8495e-07
org-activate-bracket-links                                    1           
1.3416e-05    1.3416e-05
org--setup-process-tags                                       1           
1.2782e-05    1.2782e-05
org-agenda-span-name                                          5           
1.0024e-05    2.0048e-06
org-uniquify                                                  5           
9.919...e-06  1.983...e-06
org-agenda-prepare-window                                     1           
9.533e-06     9.533e-06
org-re-property                                               1           
9.248e-06     9.248e-06
org-set-local                                                 6           
8.811e-06     1.468...e-06
org-agenda-update-agenda-type                                 2           
7.759e-06     3.8795e-06
org-agenda-propertize-selected-todo-keywords                  1           
5.426e-06     5.426e-06
org-detach-overlay                                            2           
5.065e-06     2.5325e-06
org-goto-line                                                 1           
4.574e-06     4.574e-06
org-set-sorting-strategy                                      1           
2.123e-06     2.123e-06
org-file-menu-entry                                           1           
1.72e-06      1.72e-06
org-uniquify-alist                                            1           
1.621e-06     1.621e-06
org-font-lock-add-tag-faces                                   1           
1.095e-06     1.095e-06
org-agenda-mark-clocking-task                                 1           
7.43e-07      7.43e-07
org-agenda-use-sticky-p                                       1           
6.86e-07      6.86e-07
Thanks,
Matt



reply via email to

[Prev in Thread] Current Thread [Next in Thread]