emacs-orgmode@gnu.org archives
 help / color / mirror / code / Atom feed
* Slow speed of week and month views
@ 2010-02-16 19:58 Matt Lundin
  2010-02-21  7:37 ` Carsten Dominik
  0 siblings, 1 reply; 14+ messages in thread
From: Matt Lundin @ 2010-02-16 19:58 UTC (permalink / raw)
  To: Org Mode

Currently I use org-mode to keep track of todos, projects, deadlines and
the emacs diary to keep track of appointments. I would prefer to keep
the latter in org-mode, but the slow speed of the weekly and monthly
agenda views makes it difficult to gain a quick calendar overview of all
upcoming timestamped items.

Has anyone had success in setting up a *fast* calendar view for
org-mode? I use the following custom command to get a view of
timestamped items only:

--8<---------------cut here---------------start------------->8---
("cc" "Calendar (events)" agenda ""
 ((org-agenda-ndays 1)
  (org-agenda-time-grid nil)
  (org-agenda-prefix-format " %-12:t ")
  (org-agenda-include-all-todo nil)
  (org-agenda-repeating-timestamp-show-all t)
  (org-agenda-skip-function '(org-agenda-skip-entry-if 'deadline 'scheduled))))
--8<---------------cut here---------------end--------------->8---

With 25 agenda files, if I type "v m" (view month) in the agenda results
for this custom command, it takes over 16 seconds to generate the
monthly calendar.[1] 

I get similar results if I type "v m" in the default agenda view.[2] As
a point of comparison, I've included the time it takes to generate an
agenda view for a single day on my system.[3]

As far as I can tell, org-mode scans each agenda file anew for each day
shown in the weekly or monthly agenda (hence the many invocations of
org-agenda-get-day-entries in the results below), so the time it takes
to generate the agenda is roughly proportional to the number of days in
the view.

Does anyone have any tips for speeding up the weekly or monthly agenda
views? I have vague and utterly naïve notions of a function that would
scan each agenda file *once* for timestamps within a given range rather
than searching the agenda files again for each new day---but such a
function is far beyond my elisp skills. Any help would be greatly
appreciated.

Thanks!
Matt

Footnotes:

[1] Monthly view of custom command with 25 agenda files:

org-agenda-view-mode-dispatch                                 1           15.528815     15.528815
org-agenda-month-view                                         1           15.384877     15.384877
org-agenda-change-time-span                                   1           15.384839     15.384839
org-agenda-redo                                               1           15.383679     15.383679
org-agenda-list                                               1           15.382742     15.382742
org-agenda-get-day-entries                                    700         13.948870999  0.0199269585
org-agenda-get-scheduled                                      700         6.4163719999  0.0091662457
org-agenda-skip-entry-if                                      12871       5.3256909999  0.0004137744
org-agenda-skip-if                                            12871       5.1750260000  0.0004020686
org-agenda-get-deadlines                                      700         4.2478989999  0.0060684271
org-agenda-get-timestamps                                     700         1.7289499999  0.0024699285
org-agenda-get-sexps                                          700         0.6763130000  0.0009661614
org-agenda-get-blocks                                         700         0.6087859999  0.0008696942
org-agenda-todayp                                             1400        0.3336939999  0.0002383528
org-agenda-skip                                               15534       0.0450969999  2.903...e-06
org-agenda-files                                              3           0.016815      0.005605
org-agenda-cleanup-fancy-diary                                28          0.0062590000  0.0002235357
org-agenda-mode                                               1           0.00606       0.00606
org-agenda-highlight-todo                                     86          0.0041800000  4.860...e-05
org-agenda-format-date-aligned                                28          0.0033799999  0.0001207142
org-agenda-new-marker                                         136         0.0012809999  9.419...e-06
org-agenda-mark-clocking-task                                 1           0.00121       0.00121
org-agenda-align-tags                                         1           0.000903      0.000903
org-agenda-find-same-or-today-or-agenda                       1           0.000499      0.000499
org-agenda-fontify-priorities                                 1           0.000394      0.000394
org-agenda-fix-displayed-tags                                 86          0.0003439999  3.999...e-06
org-agenda-add-time-grid-maybe                                23          0.000236      1.026...e-05
org-agenda-set-mode-name                                      2           6.2e-05       3.1e-05
org-agenda-compute-time-span                                  1           3.8e-05       3.8e-05
org-agenda-mark-header-line                                   1           3.5e-05       3.5e-05
org-agenda-post-command-hook                                  2           1.6e-05       8e-06
org-agenda-reset-markers                                      1           1e-05         1e-05
org-agenda-ndays-to-span                                      2           6e-06         3e-06
org-agenda-check-type                                         1           5e-06         5e-06

[2] Elp results for monthly agenda view:

org-agenda-view-mode-dispatch                                 1           14.143243     14.143243
org-agenda-month-view                                         1           13.974747     13.974747
org-agenda-change-time-span                                   1           13.974703     13.974703
org-agenda-redo                                               1           13.972615     13.972615
org-agenda-list                                               1           13.97065      13.97065
org-agenda-get-day-entries                                    700         12.608783999  0.0180125485
org-agenda-get-scheduled                                      700         5.9895430000  0.0085564900
org-agenda-get-deadlines                                      700         3.8111570000  0.0054445100
org-agenda-get-timestamps                                     700         1.2642759999  0.0018061085
org-agenda-get-sexps                                          700         0.6626510000  0.0009466442
org-agenda-skip                                               15534       0.6255180000  4.026...e-05
org-agenda-get-blocks                                         700         0.6051640000  0.0008645200
org-agenda-todayp                                             1400        0.326468      0.0002331914
org-agenda-align-tags                                         1           0.023695      0.023695
org-agenda-highlight-todo                                     178         0.0217819999  0.0001223707
org-agenda-files                                              3           0.0175449999  0.0058483333
org-agenda-cleanup-fancy-diary                                28          0.006159      0.0002199642
org-agenda-mode                                               1           0.006109      0.006109
org-agenda-mark-clocking-task                                 1           0.005423      0.005423
org-agenda-format-date-aligned                                28          0.003358      0.0001199285
org-agenda-new-marker                                         314         0.0026219999  8.350...e-06
org-agenda-add-time-grid-maybe                                27          0.0011129999  4.122...e-05
org-agenda-fontify-priorities                                 1           0.000879      0.000879
org-agenda-fix-displayed-tags                                 178         0.0008699999  4.887...e-06
org-agenda-find-same-or-today-or-agenda                       1           0.000471      0.000471
org-agenda-deadline-face                                      27          0.0002540000  9.407...e-06
org-agenda-reset-markers                                      1           8.5e-05       8.5e-05
org-agenda-set-mode-name                                      2           5.7e-05       2.85e-05
org-agenda-mark-header-line                                   1           3.6e-05       3.6e-05
org-agenda-compute-time-span                                  1           3.3e-05       3.3e-05
org-agenda-post-command-hook                                  2           2.2e-05       1.1e-05
org-agenda-ndays-to-span                                      2           7e-06         3.5e-06
org-agenda-check-type                                         1           5e-06         5e-06

[3] Agenda view for single day:

org-agenda-list                                               1           1.765911      1.765911
org-agenda-get-day-entries                                    25          1.075021      0.04300084
org-agenda-get-scheduled                                      25          0.8153739999  0.0326149599
org-agenda-get-deadlines                                      25          0.1540369999  0.0061614799
org-agenda-get-timestamps                                     25          0.0491        0.001964
org-agenda-get-sexps                                          25          0.023261      0.00093044
org-agenda-skip                                               555         0.0225499999  4.063...e-05
org-agenda-get-blocks                                         25          0.021848      0.0008739199
org-agenda-files                                              3           0.0159939999  0.0053313333
org-agenda-align-tags                                         1           0.013129      0.013129
org-agenda-highlight-todo                                     59          0.0100849999  0.0001709322
org-agenda-mode                                               1           0.007312      0.007312
org-agenda-todayp                                             50          0.0030340000  6.068e-05
org-agenda-mark-clocking-task                                 1           0.002379      0.002379
org-agenda-new-marker                                         112         0.0008930000  7.973...e-06
org-agenda-add-time-grid-maybe                                1           0.000831      0.000831
org-agenda-fontify-priorities                                 1           0.000378      0.000378
org-agenda-fix-displayed-tags                                 59          0.0002479999  4.203...e-06
org-agenda-cleanup-fancy-diary                                1           0.00022       0.00022
org-agenda-deadline-face                                      18          0.000182      1.011...e-05
org-agenda-format-date-aligned                                1           0.000117      0.000117
org-agenda-reset-markers                                      1           8.5e-05       8.5e-05
org-agenda-mark-header-line                                   1           3.7e-05       3.7e-05
org-agenda-set-mode-name                                      1           2.7e-05       2.7e-05
org-agenda-post-command-hook                                  1           1.8e-05       1.8e-05
org-agenda-ndays-to-span                                      2           7e-06         3.5e-06

^ permalink raw reply	[flat|nested] 14+ messages in thread
* Re: [Orgmode] Slow speed of week and month views
@ 2017-08-04 15:14 Christoph Groth
  2017-08-05  3:07 ` Adam Porter
  0 siblings, 1 reply; 14+ messages in thread
From: Christoph Groth @ 2017-08-04 15:14 UTC (permalink / raw)
  To: emacs-orgmode

Carsten Dominik wrote in 2010:

> I am afraid I don't see any major speed improvements that could 
> make this happen. Yes, one could parse all the files once, build 
> a table in memory and get the entries for each day from there - 
> but that comes down to a complete rewrite of the parser, maybe 
> even to switching to an internal representation model for 
> Org-mode.

> I don't see that happening, I am afraid.

Computing the agenda month view takes 20 seconds in my case. 
That's perhaps the most serious problem with orgmode as I (and I 
suppose others as well) use it.  It would be great if this issue 
could be solved after all.

Would it be really so difficult to do?  The actual parsing seems 
to be done in the function org-agenda-get-day-entries as called by 
org-agenda-list.  Inside org-agenda-get-day-entries the crucial 
bit seems to be (org-agenda-today-p date).  If that bit got 
replaced by something that matches more than a single day, 
wouldn't this mostly do the trick?

This is much easier than "rewriting the parser", so it seems that 
I'm overlooking some problems.

^ permalink raw reply	[flat|nested] 14+ messages in thread

end of thread, other threads:[~2017-08-07 11:42 UTC | newest]

Thread overview: 14+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2010-02-16 19:58 Slow speed of week and month views Matt Lundin
2010-02-21  7:37 ` Carsten Dominik
2010-02-21 12:34   ` Matthew Lundin
  -- strict thread matches above, loose matches on Subject: below --
2017-08-04 15:14 [Orgmode] " Christoph Groth
2017-08-05  3:07 ` Adam Porter
2017-08-05 21:09   ` Karl Voit
2017-08-05 22:17     ` John Kitchin
2017-08-05 22:33       ` Nicolas Goaziou
2017-08-05 22:35     ` Nicolas Goaziou
2017-08-06  8:00       ` Karl Voit
2017-08-06  8:15         ` Nicolas Goaziou
2017-08-06  9:01           ` Karl Voit
2017-08-06  9:13             ` Adam Porter
2017-08-06 10:03               ` Karl Voit
2017-08-06 10:28                 ` Adam Porter
2017-08-06  9:26             ` Nicolas Goaziou
2017-08-06 10:18               ` Karl Voit
2017-08-07 11:41                 ` Nicolas Goaziou

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).